2014-08-28 102 views
2

我正在爲每個圍欄繪製多個顏色的3D「圍柵圖」。我的樣本數據可以在這裏找到:使用splot的3D填充線條下方的區域

https://gist.github.com/anonymous/a926221ea96e92e86332

我繪製使用這項資料:

colors = "red red red red red" 
splot for [i=1:words(colors)] 'input.sep.txt' index i u 2:1:3 w lines lc rgb word(colors,i) 

的線沒有問題拉,我相信他們是正確繪製。我的問題是:我如何在線下方填充以使它看起來像實心牆(即直到0 z值)?我嘗試使用w pm3d,但是這並沒有真正繪製軸上可見的任何東西。

回答

5

您擁有的最佳選擇是使用pm3d。對於這個工作,你必須改變你的數據文件中的位:您必須複製很行,重複的z值更改爲0,並添加一個新的生產線,即你的前兩個數據線

1 1 2 
2 1 4 

必須成爲

1 1 2 
1 1 0 

2 1 4 
2 1 0 

等等。之後您仍然需要連續兩個空行來分隔不同的「牆」。

如果你可以控制你的數據輸出,你可以改變你的輸出例行程序,或者您也可以使用命令行工具,如sed

sed 's/^\([0-9]* [0-9]* \)\(.*\)$/&\n\1 0\n/' gistfile1.txt 

awk

awk '1; {print $1,$2,0,"\n"}' gistfile1.txt 

做轉換。當然,這可以在gnuplot中實時完成。一個完整的工作腳本是:

filename = 'gistfile1.txt' 
sed = '< sed ''s/^\([0-9]* [0-9]* \)\(.*\)$/&\n\1 0\n/'' ' 

set autoscale cbfix 
set palette defined (0 'red', 1 'blue') 
set pm3d depthorder 
unset colorbox 
unset key 
set ticslevel 0 
splot sed.filename using 1:2:3:(column(-2)) with pm3d 

和結果使用gnuplot 4.6。5與您的示例數據是:

enter image description here

一些附加註釋:

  • 第四列被用來選擇比用於着色的z值不同的值。
  • column(-2)使用塊號(相鄰的塊由2個空行分隔)作爲顯色指數。
  • 屬於不同數據塊的點未連接。
  • 隨着set autoscale cbfix可以更好地控制用於飛機的顏色。
  • 如果你知道,你有例如應該有特定顏色的三架飛機也可以使用set palette defined (0 'red', 1 'green', 2 'blue')
+0

Christoph - 你是一個非常有才華的人。感謝您的幫助(感謝您的幫助以及Miguel)。 – dps 2014-08-28 21:17:16

1

這是一個解決方法,而不是一個適當的解決方案,但它可能適合你。玩與filledcurves選項,這是不是真的爲3D繪圖設計。你有什麼,因爲它是,看起來像:

colors = "red red red red red" 
splot for [i=1:words(colors)] 'input.sep.txt' index i u 2:1:3 w filledcurve lc rgb \ 
word(colors,i), for [i=1:words(colors)] 'input.sep.txt' index i u 2:1:3 w l lc "black" lw 2 

enter image description here

使用調皮招用set dgrid3d命令,你可以增加該拿得出垂直線(set dgrid3d 100,2在這種情況下)的數量:

enter image description here

直到你滿意的結果(set dgrid3d 200,2):

enter image description here

+0

嗨,米格爾,非常感謝您爲您詳細的答覆。我已經看到了一些類似的東西,但我希望有一個更優雅的解決方案。我最終想要製作這裏所描述的「牆壁情節」,但情節語法如此密集和複雜,以至於我很難理解它,這就是爲什麼我只是試圖繪製和填充單壁。 http://www.phyast.pitt.edu/~zov1/gnuplot/html/wall.html。如果沒有人用更優雅的解決方案迴應,我會給你答案並接受你的答案。非常感謝你的幫助,祝你有美好的一天。 – dps 2014-08-28 17:08:17

+0

@dps除了顏色等高線圖,我對「splot」不是很熟悉。很可能會有一個更經典的(或者說你說的優雅)解決方案。如果克里斯托弗沒有提出任何其他的東西,那麼這可能是一個很好的解決方案,至少可以達到這種簡單程度。 – Miguel 2014-08-28 17:14:27