2014-03-06 115 views
2

在我的數據文件中,我有三列:一個字符串和兩個數字值。現在我想用gnuplot創建一個3D圖。不幸的是,我得到以下錯誤:在3D中使用xtics gnuplot

Need 1 or 3 columns for cartesian data 

這是我的數據文件:

"Str1" 0 0 
"Str1" 1 0 
"Str1" 2 0 

"Str2" 0 10 
"Str2" 1 10 
"Str2" 2 10 

"Str3" 0 10 
"Str3" 1 10 
"Str3" 2 10 

這是我的gnuplot腳本:

set surface 
set contour surface 

set view 60, 30, 1, 1 
set clabel '%8.2f' 
set key right 
set title "Graph Title" 
set xlabel "X Axis Label" 
set ylabel "Y Axis Label" 
set zlabel "Z Axis Label" 

set term pdfcairo color dashed font 'FreeSans,9' 
set output "output.pdf" 
splot "data2.txt" using xtic(1):2:3 notitle 

set output 

我不明白是什麼問題。我已經在2D圖中使用了xtic。另外,還有三個「座標」。我必須爲x軸定義一些特殊的東西嗎?

謝謝!

UPDATE:

下圖是使用這個腳本生成的:

set grid 
set view 60, 30, 1, 1 
set clabel '%8.2f' 
set key right 
set title "Graph Title" 
set xlabel "X label (String)" 
set ylabel "number 1" 
set zlabel "number 2" 

set xtics ("Str1" 0, "Str2" 1, "Str3" 2) 

set term pdfcairo color dashed font 'FreeSans,9' 
set output "rpiCluster2.pdf" 
splot "data2.txt" using (int($0)/3):2:3 with linespoints 

set output 

enter image description here

回答

3

xtic是不是一個座標,而是一個字符串。您仍然需要一個x座標:

splot "data2.txt" using (int($0)/3):2:3:xtic(1) notitle 

請注意,標籤不會相互寫入多次,而只會一次寫入。

爲了有一個自動的解決方案,你可以使用stats命令。這並不直接計算塊,而是空行。對於您的測試數據如下工作正常:

stats "data2.txt" using 2 nooutput 
n = int(STATS_records/(STATS_blank + 1)) 

splot "data2.txt" using (int($0)/n):2:3:xtic(1) notitle 
+0

有沒有辦法做到這一點不知道'3'? –

+0

我也會對動態解決方案感興趣 – strauberry

+0

此外,x軸沒有完全填充......這意味着在x軸的「右」位置有空房間。我試圖用xrange [0:4]修復這個問題,但是沒有工作... – strauberry