¿Cómo traza gráficos de barras en gnuplot?

Respuestas:

122

Gráfico de barras simple:

gráfico de barras

set boxwidth 0.5
set style fill solid
plot "data.dat" using 1:3:xtic(2) with boxes

data.dat:

0 label       100
1 label2      450
2 "bar label" 75

Si desea diseñar sus barras de manera diferente, puede hacer algo como:

gráfico de barras multicolor

set style line 1 lc rgb "red"
set style line 2 lc rgb "blue"

set style fill solid
set boxwidth 0.5

plot "data.dat" every ::0::0 using 1:3:xtic(2) with boxes ls 1, \
     "data.dat" every ::1::2 using 1:3:xtic(2) with boxes ls 2

Si desea hacer varios compases para cada entrada:

data.dat:

0     5
0.5   6


1.5   3
2     7


3     8
3.5   1

gnuplot:

set xtics ("label" 0.25, "label2" 1.75, "bar label" 3.25,)

set boxwidth 0.5
set style fill solid

plot 'data.dat' every 2    using 1:2 with boxes ls 1,\
     'data.dat' every 2::1 using 1:2 with boxes ls 2

barchart_multi

Si quieres ser complicado y usar algunos trucos geniales de gnuplot:

Gnuplot tiene pseudo-columnas que se pueden usar como índice para colorear:

plot 'data.dat' using 1:2:0 with boxes lc variable

barchart_multi2

Además, puede usar una función para elegir los colores que desee:

mycolor(x) = ((x*11244898) + 2851770)
plot 'data.dat' using 1:2:(mycolor($0)) with boxes lc rgb variable

barchart_multi3

Nota: tendrá que agregar un par de comandos básicos más para obtener el mismo efecto que las imágenes de muestra.

Puntilla
fuente
Para muchas aplicaciones, es más conveniente utilizar el histogramestilo de trazado, especialmente para agrupar y apilar valores.
Christoph
@Christoph Hola, ¿Si quiero agregar clave para este tipo de gráfico? Qué tengo que hacer ? Por ejemplo, si quiero agregar una clave que diga que la línea azul es "invierno" y la línea roja es "verano"
alex
1
@alex No estoy seguro, a cuál de todos esos ejemplos te refieres: con lc rgb variableno puedes tener diferentes entradas clave.
Christoph
Por alguna razón, tuve que usar la directiva 'notitle' después de la cláusula de cada trama para evitar que la leyenda aparezca.
chinnychinchin
25
trazar "data.dat" usando 2: xtic (1) con histograma

Aquí data.dat contiene datos del formulario

titulo 1
título2 3
"título largo" 5
tatwright
fuente
17

Solo me gustaría ampliar la respuesta principal, que usa GNUPlot para crear un gráfico de barras, para principiantes absolutos porque leí la respuesta y todavía estaba confundido por el diluvio de sintaxis.

Comenzamos escribiendo un archivo de texto de comandos GNUplot. Vamos a llamarlo commands.txt:

set term png
set output "graph.png"
set boxwidth 0.5
set style fill solid
plot "data.dat" using 1:3:xtic(2) with boxes

set term pngconfigurará GNUplot para generar un archivo .png y set output "graph.png"es el nombre del archivo al que se generará.

Las siguientes dos líneas se explican por sí mismas. La quinta línea contiene mucha sintaxis.

plot "data.dat" using 1:3:xtic(2) with boxes

"data.dat"es el archivo de datos en el que estamos operando. 1:3indica que usaremos la columna 1 de data.dat para las coordenadas x y la columna 3 de data.dat para las coordenadas y. xtic()es una función que se encarga de numerar / etiquetar el eje x. xtic(2), por lo tanto, indica que usaremos la columna 2 de data.dat para las etiquetas.

"data.dat" se ve así:

0 label       100
1 label2      450
2 "bar label" 75

Para trazar el gráfico, ingrese gnuplot commands.txten terminal.

Marco Rosas
fuente
2

Puede utilizar directamente los histogramas de estilo proporcionados por gnuplot. Este es un ejemplo si tiene dos archivos en la salida:

set style data histograms
 set style fill solid
 set boxwidth 0.5
 plot "file1.dat" using 5 title "Total1" lt rgb "#406090",\
      "file2.dat" using 5 title "Total2" lt rgb "#40FF00"
JoSSte
fuente