Gnuplot:在极坐标中绘制和定义变量

时间:2013-09-12 04:22:43

标签: unix graph coordinates gnuplot

我是Gnuplot的新手,我在试图找出如何在Polar Coordinates中为学校作业绘图时遇到问题。困扰我的是我们没有为Gnuplot查看其他坐标系统,如Polar或Parametric,我发现的互联网教程似乎假设了一些基本知识,并告诉我做“设置极地”。

以下是我要解决的问题:

  

以原点为中心的特定分子周围的电子密度由

描述      

n(r,theta)= [cos(r)] ^ 2 * {1+ [cos(theta)] ^ 2} * exp(-r ^ 2/25)

     

其中r和theta是通常的极坐标[例如,(x,y)=(r * cos(theta),r * sin(theta))]。

     

编写一个gnuplot脚本elec.gpl,它在x = -5..5和y = -5..5的域上生成此函数的曲面图。设置脚本以便

     

的gnuplot> elec.gpl

     

将图形生成为名为“elec.ps”的postscript文件

由于我完全不熟悉在极坐标中绘制Gnuplot,我很难过。我尝试了一些不同的东西,包括:

    set terminal png enhanced
    set output 'elec.ps'
    set polar
    set angle degrees
    set title 'Electron Density Around Molecule'
    set xrange[-5:5]
    set yrange[-5:5]
    set grid
    set grid polar
    plot (cos(x))^2 *(1+(cos(y))^2)*exp(-x^2/25)
    quit

我尝试将x更改为r,y更改为t,y更改为theta等。我根本无法弄清楚Gnuplot是如何让我定义极坐标输入的。有没有办法将x重新定义为r * cos(theta),将y重新定义为r * sin(theta),然后让我设置r和theta的输入和范围?

感谢您的帮助! :)

1 个答案:

答案 0 :(得分:1)

polar模式允许您根据单个参数t绘制函数,该参数用作角度,参见例如gnuplot polar demo。因此,您可以绘制一个固定半径的“轨迹”。

由于您想要显示密度分布,我认为您最好使用热图。我建议使用parametric模式,一个虚拟变量用作半径,另一个用作角度θ。为了更好的可读性,我相应地命名虚拟变量(使用set dummy ...),但对于范围,您必须坚持使用原始虚拟名称uv。所以这是一个例子:

reset
set terminal pngcairo size 900,800
set output 'elec.png'

set title 'Electron Density Around Molecule'

set parametric
set dummy r, theta # instead of u,v
set urange[0:1.5*pi] # r
set vrange[0:2*pi]   # theta
set isosamples 200

set size ratio 1
set autoscale fix
set pm3d map
set palette defined (0 'white', 1 'red')

splot r*cos(theta), r*sin(theta), \
      cos(r)**2 + (1 + cos(theta)**2)*exp(-r**2/25) with pm3d t ''

parametric模式下,您必须为splot指定三个函数,具体取决于逗号表示的虚拟变量(此处为rtheta)。

结果是:

enter image description here

现在,您可以根据自己的需要继续增强情节。