Làm cách nào để vẽ đồ thị từ một giá trị tệp văn bản bằng gnuplot?


10

Làm thế nào để vẽ đồ thị từ các giá trị tệp văn bản? Các tập tin văn bản trông như dưới đây:

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

Tôi muốn vẽ các giá trị này dưới dạng biểu đồ trong shell script. Trong các giá trị trục x của cột vị trí và giá trị trục y của cột Count1 và Count2.


Rõ ràng plot "/tmp/temp.txt"thất bại với Bad data on line 1 of file /tmp/temp.txt. Tôi nghĩ rằng bạn có thể phải tạo một phiên bản của tệp chỉ bằng số, không có tiêu đề hàng / cột. Ngoài ra, sử dụng một cái gì đó như gnumeric.
barrycarter

Câu trả lời:


9

Sử dụng cùng một tệp đầu vào (ex.tsv) và tạo tập lệnh gnuplot để kiểm soát chi tiết tốt hơn

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

và gnuploting dữ liệu:

gnuplot -p ex.gnu < ex.tsv

chúng ta thấy biểu đồ tương ứng.

Để tạo tệp png (để tải lên và hiển thị trong SO) thêm 2 dòng nữa:

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

nhập mô tả hình ảnh ở đây


7

Giải pháp làm việc cho gnuplot v5.0:

Tệp dữ liệu đầu vào loc.dat:

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

tập lệnh 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" - tiêu đề cốt truyện chính

  • set xlabel "location"- thiết lập nhãn cho xtrục

  • set ylabel "count"- thiết lập nhãn cho ytrục

  • set grid - thêm lưới vào cốt truyện

  • (column(0)):2:xtic(1)- phạm vi cột, (column(0))- vì cột thứ 1 trong tệp đầu vào có các giá trị không phải là số, chúng ta cần bắt chước cột số 1 vì gnuplot chỉ mong đợi các giá trị số trong đó

  • w l- có nghĩa là với các dòng , để nối tất cả các điểm dữ liệu với các dòng


Khởi chạy tương tác:

$ gnuplot
gnuplot> load "locations.plt"

Kết quả hiển thị:

nhập mô tả hình ảnh ở đây


Chỉ muốn đề cập, lưu ý các trích dẫn xung quanh vị gnuplot> load "locations.plt"trí.plt trong lệnh , gnuplot yêu cầu điều đó, load locations.pltsẽ không hoạt động và bạn sẽ nhận được "lỗi nội bộ: toán tử STRING áp dụng cho biến không xác định hoặc không CHUINGI" nếu bạn quên nó.
jrh
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.