我是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的输入和范围?
感谢您的帮助! :)
答案 0 :(得分:1)
polar
模式允许您根据单个参数t
绘制函数,该参数用作角度,参见例如gnuplot polar demo。因此,您可以绘制一个固定半径的“轨迹”。
由于您想要显示密度分布,我认为您最好使用热图。我建议使用parametric
模式,一个虚拟变量用作半径,另一个用作角度θ。为了更好的可读性,我相应地命名虚拟变量(使用set dummy ...
),但对于范围,您必须坚持使用原始虚拟名称u
和v
。所以这是一个例子:
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
指定三个函数,具体取决于逗号表示的虚拟变量(此处为r
和theta
)。
结果是:
现在,您可以根据自己的需要继续增强情节。