Bagaimana Anda memplot diagram batang di gnuplot?

Jawaban:

122

Grafik batang sederhana:

grafik batang

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

Jika Anda ingin menata bilah Anda secara berbeda, Anda dapat melakukan sesuatu seperti:

grafik batang multi warna

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

Jika Anda ingin melakukan beberapa bar untuk setiap entri:

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

Jika Anda ingin menjadi rumit dan menggunakan beberapa trik gnuplot yang rapi:

Gnuplot memiliki psuedo-kolom yang dapat digunakan sebagai indeks untuk diwarnai:

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

barchart_multi2

Selanjutnya Anda dapat menggunakan fungsi untuk memilih warna yang Anda inginkan:

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

barchart_multi3

Catatan: Anda harus menambahkan beberapa perintah dasar lainnya untuk mendapatkan efek yang sama seperti gambar contoh.

Brad
sumber
Untuk banyak aplikasi, lebih mudah menggunakan histogramgaya plot, terutama untuk nilai pengelompokan dan penumpukan.
Christoph
@ Christoph Hai, Jika saya ingin menambahkan kunci untuk jenis grafik ini? apa yang harus saya lakukan ? Misalnya Jika saya ingin menambahkan kunci yang mengatakan garis biru adalah "musim dingin" dan garis merah adalah "musim panas"
alex
1
@alex Tidak yakin, yang mana dari semua contoh yang Anda maksud: dengan lc rgb variableAnda tidak dapat memiliki entri kunci yang berbeda.
Christoph
Untuk alasan apa pun, saya harus menggunakan arahan 'notitle' setelah setiap klausa plot untuk menahan legenda agar tidak muncul.
chinnychinchin
25
plot "data.dat" menggunakan 2: xtic (1) dengan histogram

Disini data.dat berisi data form

judul 1
judul2 3
"judul panjang" 5
tatwright
sumber
17

Saya hanya ingin memperluas jawaban teratas, yang menggunakan GNUPlot untuk membuat grafik batang, untuk pemula absolut karena saya membaca jawabannya dan masih bingung dengan banyaknya sintaksis.

Kami mulai dengan menulis file teks perintah GNUplot. Sebut saja 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 pngakan mengatur GNUplot untuk mengeluarkan file .png dan set output "graph.png"merupakan nama file yang akan dihasilkan.

Dua baris berikutnya cukup jelas. Baris kelima berisi banyak sintaks.

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

"data.dat"adalah file data yang kami operasikan. 1:3menunjukkan bahwa kita akan menggunakan kolom 1 data.dat untuk koordinat x dan kolom 3 data.dat untuk koordinat y. xtic()adalah fungsi yang bertanggung jawab untuk penomoran / pelabelan sumbu x. xtic(2), oleh karena itu, menunjukkan bahwa kita akan menggunakan kolom 2 data.dat untuk label.

"data.dat" terlihat seperti ini:

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

Untuk memplot grafik, masuk gnuplot commands.txtke terminal.

Marco Rosas
sumber
2

Anda dapat langsung menggunakan histogram gaya yang disediakan oleh gnuplot. Ini adalah contoh jika Anda memiliki dua file dalam output:

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
sumber