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

Unix Gnuplot:在极坐标中绘制和定义变量,unix,graph,coordinates,gnuplot,Unix,Graph,Coordinates,Gnuplot,我是Gnuplot的新手,在学校作业中,我遇到了一个问题,就是如何在极坐标系下绘制图形。让我烦恼的是,我们根本没有为Gnuplot研究过其他坐标系,如极坐标系或参数坐标系,我发现的互联网教程似乎假设了一些基本知识,只是告诉我要做“设置极坐标” 以下是我试图解决的问题: 以原点为中心的特定分子周围的电子密度由 n(r,θ)=[cos(r)]^2*{1+[cos(θ)]^2}*exp(-r^2/25) 其中r和θ是常用的极坐标[例如,(x,y)=(r*cos(θ),r*sin(θ))] 编写一个gn

我是Gnuplot的新手,在学校作业中,我遇到了一个问题,就是如何在极坐标系下绘制图形。让我烦恼的是,我们根本没有为Gnuplot研究过其他坐标系,如极坐标系或参数坐标系,我发现的互联网教程似乎假设了一些基本知识,只是告诉我要做“设置极坐标”

以下是我试图解决的问题:

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

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

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

编写一个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改为θ,等等。我根本不知道Gnuplot希望我如何定义极坐标输入。有没有办法重新定义x为r*cos(θ),y为r*sin(θ),然后让我设置r和θ的输入和范围


谢谢你的帮助!:)

极坐标模式允许您根据单个参数
t
绘制函数,该参数用作角度,请参见。所以你可以画一条固定半径的“轨迹”

当你想可视化密度分布时,我认为你最好用热图。我建议使用参数化模式,一个虚拟变量用作半径,另一个用作角度θ。为了更好的可读性,我相应地命名虚拟变量(使用
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 ''
参数化
模式下,您必须根据伪变量(此处
r
theta
)为
splot
指定三个函数,这三个函数由逗号表示

结果是:


现在,您可以根据需要继续并增强绘图。

极坐标模式允许您根据单个参数
t
绘制函数,该参数用作角度,请参见。所以你可以画一条固定半径的“轨迹”

当你想可视化密度分布时,我认为你最好用热图。我建议使用参数化模式,一个虚拟变量用作半径,另一个用作角度θ。为了更好的可读性,我相应地命名虚拟变量(使用
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 ''
参数化
模式下,您必须根据伪变量(此处
r
theta
)为
splot
指定三个函数,这三个函数由逗号表示

结果是:


现在,您可以根据需要继续增强绘图。

这非常有帮助。非常感谢你。不管我处理的是哪种类型的方程,我现在对使用哪种模式有了更好的想法。这非常有用。非常感谢你。不管我处理的是哪种类型的方程,我现在对使用哪种模式有了更好的想法。