Como você plota gráficos de barras no gnuplot?

Respostas:

122

Gráfico de barras simples:

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

Se quiser estilizar suas barras de maneira diferente, você pode fazer algo como:

gráfico de barras multicolorido

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

Se você quiser fazer várias barras 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

Se você quiser ser complicado e usar alguns truques legais do gnuplot:

Gnuplot possui colunas psuedo que podem ser usadas como o índice para colorir:

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

barchart_multi2

Além disso, você pode usar uma função para escolher as cores que deseja:

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

barchart_multi3

Nota: você terá que adicionar alguns outros comandos básicos para obter o mesmo efeito que as imagens de amostra.

Brad
fonte
Para muitas aplicações, é mais conveniente usar o histogramestilo de plotagem, especialmente para agrupar e empilhar valores.
Christoph
@Christoph Oi, Se eu quiser adicionar uma chave para este tipo de gráfico? O que devo fazer ? Por exemplo, se eu quiser adicionar uma chave que diz que a linha azul é "inverno" e a linha vermelha é "verão"
alex
1
@alex Não tenho certeza de qual de todos esses exemplos você quer dizer: com lc rgb variablevocê não pode haver entradas de chave diferentes.
Christoph
Por alguma razão, eu tive que usar a diretiva 'notitle' após cada cláusula de plot para impedir que a legenda aparecesse.
chinnychinchin,
25
plotar "data.dat" usando 2: xtic (1) com histograma

Aqui data.dat contém dados do formulário

título 1
título 2 3
"título longo" 5
tatwright
fonte
17

Gostaria apenas de expandir a resposta principal, que usa o GNUPlot para criar um gráfico de barras, para iniciantes porque li a resposta e ainda estava confuso com o dilúvio de sintaxe.

Começamos escrevendo um arquivo de texto de comandos GNUplot. Vamos chamá-lo de command.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á o GNUplot para gerar um arquivo .png e set output "graph.png"é o nome do arquivo para o qual ele será gerado.

As próximas duas linhas são bastante autoexplicativas. A quinta linha contém muita sintaxe.

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

"data.dat"é o arquivo de dados em que estamos operando. 1:3indica que usaremos a coluna 1 de data.dat para as coordenadas xe coluna 3 de data.dat para as coordenadas y. xtic()é uma função responsável por numerar / rotular o eixo x. xtic(2), portanto, indica que usaremos a coluna 2 de data.dat para rótulos.

"data.dat" tem esta aparência:

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

Para traçar o gráfico, entre gnuplot commands.txtno terminal.

Marco Rosas
fonte
2

Você pode usar diretamente os histogramas de estilo fornecidos pelo gnuplot. Este é um exemplo se você tiver dois arquivos na saída:

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
fonte