在GNUPlot中绘制一个环形段

use*_*342 5 graphing visualization gnuplot javaplot

我想使用GNUPlot对极坐标图中的特定区域进行着色.该区域受R(r1,r2)和Theta(t1,t2)的界限限制,因此最终形状是由极空间中的仅4个点限定的环形段.

在笛卡尔积,这是很容易绘制一个矩形,或者通过(set object rect)filledcurve与4个顶点的封闭形状.然而,在极坐标图中由4个点指定的填充曲线形状仍然导致四边形(具有常数R的线应该是圆弧,而不是直线).

有没有简单或直接的方法在极坐标中绘制这个形状?我尝试使用两个弧然后填充它们之间的空间,但到目前为止这还没有正常工作,我不确定是否有更好的方法来解决这个问题.

Chr*_*oph 7

不幸的是,这并不容易.您可以设置circle指定开始角度和结束角度的对象.要剪切中心部分,您必须在上方绘制第二个白色圆圈:

set xrange [-1:1]
set yrange [-1:1]
set size ratio -1

r1 = 0.5
r2 = 1
theta1 = -30
theta2 = 60

set angles degrees
set style fill solid noborder
set object circle at first 0,0 front size r2 arc [theta1:theta2] fillcolor lt 1
set object circle at first 0,0 front size r1 fillcolor rgb 'white'

plot -10 notitle
Run Code Online (Sandbox Code Playgroud)

这里必不可少的是,x轴和y轴具有相同的单位(set size ratio -1),因为圆形对象以第一个x轴为单位定义,完全不依赖于y轴.如果您没有任何其他要绘制的内容,则必须使用一个plot绘制超出定义范围的内容的命令.如果没有绘图,则不会绘制对象.

4.6.5的结果是:

在此输入图像描述

在即将推出的5.0版本中,您可以使用伪数据(带有特殊文件名+)和filledcurves绘图样式:

r1 = 0.5
r2 = 1.0
theta1 = 20
theta2 = 135
set polar
set angles degrees
set size ratio -1
unset raxis
unset rtics
set trange [theta1:theta2]
set style fill solid noborder
plot '+' using 1:(r1):(r2) with filledcurves notitle
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述