Bagaimana cara memplot grafik dari nilai file teks menggunakan gnuplot?

10

Bagaimana cara memplot grafik dari nilai file teks? File teks terlihat seperti di bawah ini:

location  count1    count2
HZ        100        193
ES        514        289
FP        70         137
BH        31         187

Saya ingin memplot nilai-nilai ini sebagai grafik dalam skrip shell. Dalam nilai sumbu x kolom lokasi dan nilai sumbu y kolom count1 dan count2.

manu
sumber
Jelas plot "/tmp/temp.txt"gagal dengan Bad data on line 1 of file /tmp/temp.txt. Saya pikir Anda mungkin harus membuat versi file hanya dengan angka, tanpa header baris / kolom. Atau, gunakan sesuatu seperti gnumerik.
barrycarter

Jawaban:

9

Menggunakan file input yang sama (ex.tsv), dan membuat skrip gnuplot untuk mengontrol detail dengan lebih baik

set style data histogram 
set style fill solid border -1
plot for [i=2:3] '/dev/stdin' using i:xtic(1) title col 

dan gnuploting data:

gnuplot -p ex.gnu < ex.tsv

kita melihat histogram koresponden.

Untuk membuat file png (untuk mengunggah dan tampil di SO) tambahkan 2 baris lagi:

set terminal pngcairo enhanced font "arial,10" fontscale 1.0 size 600, 400 
set output 'out.png'
set style data histogram 
set style fill solid border -1
plot for [i=2:3] '/dev/stdin' using i:xtic(1) title col

masukkan deskripsi gambar di sini

Joao
sumber
7

Solusi yang bekerja untuk gnuplot v5.0:

Input data file loc.dat:

location  count1    count2
HZ        100        193
ES        514        289
FP        70         137
BH        31         187

skrip gnuplotlocations.plt :

#!/usr/bin/gnuplot -persist

set title "Location data"
set xlabel "location"
set ylabel "count"
set grid
plot "loc.dat" u (column(0)):2:xtic(1) w l title "","loc.dat" u (column(0)):3:xtic(1) w l title ""

  • set title "Location data" - judul plot utama

  • set xlabel "location"- label pengaturan untuk xsumbu

  • set ylabel "count"- label pengaturan untuk ysumbu

  • set grid - menambahkan kisi ke plot

  • (column(0)):2:xtic(1)- rentang kolom, (column(0))- karena kolom 1 dalam file input memiliki nilai non-numerik, kita perlu meniru kolom 1st numerik karena gnuplot hanya mengharapkan nilai numerik di dalamnya

  • w l- Berarti dengan garis , untuk menggabungkan semua titik data dengan garis


Peluncuran interaktif:

$ gnuplot
gnuplot> load "locations.plt"

Hasil yang diberikan:

masukkan deskripsi gambar di sini

RomanPerekhrest
sumber
Hanya ingin menyebutkan, perhatikan tanda kutip di sekitar location.plt dalam perintah gnuplot> load "locations.plt", gnuplot mensyaratkan bahwa, load locations.plttidak akan bekerja dan Anda akan mendapatkan "kesalahan internal: operator STRING diterapkan ke variabel tidak terdefinisi atau non-STRING" jika Anda lupa.
jrh