Estoy creando un histograma «manualmente» en MATLAB utilizando la plot comando en un conjunto de datos después de usar el hist comando (donde puedo asignar la salida del comando a dos matricies) manualmente obtener la cuenta y puntos medios. Lo que realmente me gustaría hacer es añadir una etiqueta encima de cada una de las barras en mi histograma que indica el punto central del valor de esa columna.
Como ya tengo un vector que contiene todos los valores del centro, mi problema radica en averiguar cómo crear las etiquetas y las coloca por encima de cada una de las barras. Cualquier ayuda en la adición de estos sería muy apreciada!

Lo que he Probado hasta Ahora:

Basado en otro de StackOverflow post, vi un comando a lo largo de estas líneas

for b = 1:nBins
    text(bins(b),counts(b)*2,num2str(a(b==binIdx,1)),'VerticalAlignment','top')
end

Entiendo la idea de que probablemente yo uso el text comando dentro de un bucle para colocar una etiqueta encima de cada barra, pero cuando he tratado de modificar el text comando anterior a los datos que yo tenía, no podía ver las etiquetas en mi parcela.

InformationsquelleAutor Devin | 2012-09-19

1 Comentario

  1. 10

    De hecho, puede utilizar el ejemplo con texto, pero con una ligera mejora.

    text(x, y, ' a string') pone la cadena de texto en la ubicación del punto (x, y) en la gráfica. En tu ejemplo, la x-coordiantes están bien (los centros de las barras), pero cada uno de y-coordiante es dos veces la altura de la barra correspondiente. Esto puede obtener la cadena de texto que se colocan fuera de los límites de la gráfica.

    Lo que sugiero que usted debe hacer es establecer el eje de la siguiente manera para que tenga algo de espacio extra para las nuevas etiquetas de texto:

    ylim([0, max(counts) * 1.2]);  %# The 1.2 factor is just an example

    Y, a continuación, utilizar el código de ejemplo de su pregunta, así:

    A = fix(10 * rand(30, 1)) + 1; %# Randomize 30 samples between 1 and 10
    [counts, bins] = hist(A);      %# Compute the histogram
    figure, bar(bins, counts),     %# Plot the histogram bars
    ylim([0, max(counts) * 1.2]);  %# Resize the y-axis
    
    %# Add a text string above each bin
    for i = 1:numel(bins)
        text(bins(i) - 0.2, counts(i) + 0.4, ['y = ', num2str(counts(i))], 'VerticalAlignment', 'top', 'FontSize', 8)
    end

    Esto es lo que usted debe conseguir:

    ¿Cómo puedo añadir etiquetas (de valores) a la parte superior de mi MATLAB trama?

    Aquí cada etiqueta se coloca 0.4 ticks por encima de la correspondiente de la barra del eje y), en un -0.2 tick offset desde el centro de la barra (eje x).

    Aviso que también he disminuido el tamaño de la fuente a 8 para que cada etiqueta encaja muy bien con el ancho de cada barra.
    Usted puede, por supuesto, jugar con las diferentes propiedades de text para alinear las etiquetas a su gusto.

    • Lo siento, me tomó un tiempo para volver y probar, pero esto funcionó muy bien! Gracias!

Dejar respuesta

Please enter your comment!
Please enter your name here