2014-11-22 101 views
1

我嘗試做以下的gnuplot的:色彩搭配漸變的橢圓。在 橢圓的每個點具有漸變色的極性曲線

charge_density(t,beta) = -sin(t)*beta*(sqrt(1-(beta**2)))/(1-((sin(t)*beta)**2)) 

橢圓的半徑功能是通過一個類似的函數給出的函數給出其z值:

radius(t,beta) = sqrt(1-(beta**2))/sqrt(1-((sin(t)*beta)**2)) 

哪裏beta只是滿足0<beta<1參數,並且t是角度。

那麼,我試圖使用"+"特殊文件與lc rgb variable選項,但它不適用於極座標。

我也試過set mapping cylindrical,但什麼都沒有發生。

這是可能僅與直角座標系?在這種情況下,我必須做2個圖形和修改上述功能...

否則我將不得不創建一個數據文件,angle, radius, z數據?

我想和pm3d及以下palette做到這一點:

set palette model RGB defined (-1 "blue", 0 "black", 1 "red") 

回答

3

這裏是代碼:

beta =0.5 
charge_density(t,beta) = -sin(t)*beta*(sqrt(1-(sin(t)*beta)**2))/(1-((sin(t)*beta)**2)) 
radius(t,beta) = sin(t*beta) # your function equals 1! 

# convert polar to carthesian 
r_x(t)=radius(t,beta)*cos(t) 
r_y(t)=radius(t,beta)*sin(t) 


set palette model RGB defined (-1 "blue", 0 "black", 1 "red") 

set size ratio -1 # same unit length in x and y 

# number of sample points. 
# increase if curve has edges 
set samples 100 

#decouple range of "+" and xrange 
set parametric 

plot [0:3*pi] "+" u (r_x($1)):(r_y($1)):(charge_density($1,beta))\ 
    with lines linewidth 3 linecolor palette 

有結果:

enter image description here

注意:你的radius等於1,所以我採取了另一個功能。另外,你的charge_density有一個額外的右括號。

一些評論:

  • ,如果你有lc rgb variable的情節,一個24位的RGB顏色值預計:

    (red*256^2 + green*256 + blue)red, green, blue = 0...255

    如果你想GNUPLOT根據使用的顏色調色板,寫lc palette

  • 的gnuplot 4.6不支持"+"極地。此外,mapping設置3D圖的行爲。然而,當你的公式計算一個角度的半徑時,你可以很容易地將它轉換成笛卡爾座標並繪製它們。還有一個缺點:在plot中給出的範圍也設置了xrange。這也意味着當您更改xrange時曲線的「長度」會發生變化。你可以通過set parametric來解決這個問題,當繪製函數時,它會導致gnuplot使用專用變量u而不是x。這很好(並且可以幫助你),這也影響了特殊文件"+"。我不知道這是(積極的)錯誤還是功能。

+0

Sweber,我糾正功能。感謝您的建議! – Larara 2014-11-23 06:20:24

+0

這正是我所需要的!只是一件事:儘管我使用了set參數,但它是'set xrange'和'set yrange',它們改變了範圍,而不是'set urange'和'set vrange'。 – Larara 2014-11-23 06:42:24

+0

問題是,該腳本可能包含一個'set xrange [-1:1]'。然後,'「+」'也從-1變爲1。所以,你的參數取決於xrange,這裏不是你想要的。如果你使用'plot [0:3 * pi]「+」...',xrange會自動設置爲[0:9.4],覆蓋你的'set xrange'命令。但是用'parametric',它不會。是的,這套'urange'在這裏沒有效果。如上所述,這有點奇怪。 – sweber 2014-11-23 17:30:48