0
我在x,y,z中有一個數據文件,並且想要使用這些數據繪製3D錐體。我試過了,但它只給出了最後一個點圈。我的數據文件是格式如下:使用用戶數據文件的gnuplot繪製3D錐體
X y z
0 18 18
10 59 59
20 80 80
任何幫助表示讚賞。
在此先感謝 -Abhi
我在x,y,z中有一個數據文件,並且想要使用這些數據繪製3D錐體。我試過了,但它只給出了最後一個點圈。我的數據文件是格式如下:使用用戶數據文件的gnuplot繪製3D錐體
X y z
0 18 18
10 59 59
20 80 80
任何幫助表示讚賞。
在此先感謝 -Abhi
在這一點上,我認爲這可能是更容易顯示可用於生成的格式數據的gnuplot可以用它來繪製一個圓錐體的簡單腳本:
我將使用python有兩個原因。首先,我知道它非常好,其次,它看起來很像僞代碼,所以即使你不知道python也應該很清楚發生了什麼。
import math
h = 2
points_u = map(float,range(-h,h+1)) #[-2.,-1.,0.,1.,2.]
NTHETA = 12 #number of points in theta for the cone
dtheta = 2.*math.pi/NTHETA
points_theta = [dtheta*i for i in range(NTHETA+1)] #list of points in theta
with open('data.txt','w') as fout: #open an output file for the data
for theta in points_theta:
for u in points_u:
#This is how to plot a cone parametrically
#Here I unravel the cone into it's x-y-z components
#The important part is that within the inner loop,
#we're writing data along a single theta. In other words,
#within the inner loop, we write a single straight line which
#is on the surface of the cone.
x = (h-u)/h*math.cos(theta)
y = (h-u)/h*math.sin(theta)
z = u
fout.write('%f %f %f\n'%(x,y,z))
#After the inner loop, you need to insert a blank line to let gnuplot know
#that the particular "scan" is over and it is supposed to start a new "scan"
#After all is said and done, gnuplot will connect the points.
fout.write('\n')
現在這生成一個數據文件data.txt
。要在gnuplot中繪製這個數據文件,你可以簡單地做:
set surface
#set hidden3d #This makes the object "non-transparent"
splot 'data.txt' using 1:2:3 with lines
這真的是你的數據文件格式嗎? (空行是否真的存在?) – mgilson
數據文件中沒有空行...對於遲到的回覆對不起 - Abhi – Abhi
我已更新您的問題以反映數據的實際外觀。如果我錯誤地做了任何事情,請隨意編輯它以糾正。作爲一個附註,您可能想要添加一些關於如何生成數據文件或其內容的更多解釋。事實上,僅僅從3點就很難解釋任何事情。 – mgilson