Jak kreślić wykresy słupkowe w gnuplot?

Odpowiedzi:

122

Prosty wykres słupkowy:

wykres słupkowy

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

Jeśli chcesz inaczej stylizować paski, możesz zrobić coś takiego:

wielobarwny wykres słupkowy

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

Jeśli chcesz zrobić wiele słupków dla każdego wpisu:

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

Jeśli chcesz być sprytny i użyć fajnych sztuczek gnuplot:

Gnuplot ma pseudo-kolumny, których można użyć jako indeksu do koloru:

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

barchart_multi2

Ponadto możesz użyć funkcji, aby wybrać żądane kolory:

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

barchart_multi3

Uwaga: będziesz musiał dodać kilka innych podstawowych poleceń, aby uzyskać taki sam efekt jak przykładowe obrazy.

Ćwiek
źródło
W wielu aplikacjach wygodniej jest używać histogramstylu kreślenia, zwłaszcza w przypadku grupowania i układania wartości.
Christoph
@Christoph Cześć, jeśli chcę dodać klucz do tego typu wykresu? co powinienem zrobić ? Na przykład, jeśli chcę dodać klucz, który mówi, że niebieska linia to „zima”, a czerwona linia to „lato”
alex
1
@alex Nie jestem pewien, który z tych przykładów masz na myśli: lc rgb variablenie możesz mieć różnych wpisów kluczy.
Christoph,
Z jakiegoś powodu musiałem użyć dyrektywy „notitle” po każdej klauzuli fabularnej, aby powstrzymać pojawienie się legendy.
chinnychinchin
25
wykreśl "data.dat" używając 2: xtic (1) z histogramem

Tutaj data.dat zawiera dane formularza

tytuł 1
tytuł2 3
„długi tytuł” ​​5
tatwright
źródło
17

Chciałbym tylko rozwinąć najważniejszą odpowiedź, która wykorzystuje GNUPlot do stworzenia wykresu słupkowego, dla absolutnie początkujących, ponieważ przeczytałem odpowiedź i nadal byłem zdezorientowany po zalewie składni.

Zaczynamy od napisania pliku tekstowego poleceń GNUplot. Nazwijmy to 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 pngustawia GNUplot na wyjście pliku .png i set output "graph.png"jest nazwą pliku, do którego wyprowadzi.

Następne dwie linijki są raczej oczywiste. Piąta linia zawiera dużo składni.

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

"data.dat"to plik danych, na którym pracujemy. 1:3wskazuje, że będziemy używać kolumny 1 pliku data.dat dla współrzędnych xi kolumny 3 danych.dat dla współrzędnych y. xtic()to funkcja odpowiedzialna za numerowanie / etykietowanie osi x. xtic(2)w związku z tym wskazuje, że dla etykiet będziemy używać kolumny 2 pliku data.dat.

„data.dat” wygląda następująco:

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

Aby wykreślić wykres, wprowadź gnuplot commands.txtw terminalu.

Marco Rosas
źródło
2

Możesz bezpośrednio użyć histogramów stylów udostępnianych przez gnuplot. To jest przykład, jeśli masz dwa pliki w wyjściu:

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
źródło