【问题标题】:Gnuplot: Polar plot showing variable rangesGnuplot:显示变量范围的极坐标图
【发布时间】:2016-03-21 16:09:42
【问题描述】:

我有一个角度范围的数据集,我想将其表示为极坐标图。 格式如下:

[Radius]\t[Range 1 lower] [Range 1 upper]\t[Range 2 lower] [Range 2 upper]...

典型的数据线如下所示:

1.181   0 0 31.8196 38.3883 141.612 148.18  180 180 211.82 218.388  321.612 328.18

每行的范围数可以不同,也有没有任何范围的行。理想情况下,我希望得到一个极坐标图,其中在给定半径处,每个范围的下限和上限之间的角度被填充,而图的其余部分是空的。

范围不重叠,但其中一些具有与下限和上限相同的角度(例如上例中的“0 0”范围),应该仍然可见,因为(一如既往)那些单一的计算中的点和几乎不可见的细节原来是在实验中观察到的......

现在我已经更改了输出所述范围的 C 程序,以给我一个带有极坐标的点云,我用点绘制这些点,但我真的更喜欢一种带有填充区域的矢量图,如这意味着(很多)较小的文件大小,并允许缩放......

任何帮助将不胜感激,在此先感谢,
Andreas

【问题讨论】:

  • 你能提供更新吗?您是否找到了 gnuplot 解决方案或使用了另一个绘图软件或使用了不同的数据输出?
  • 感谢您的建议。同时我一直忙于另一个项目,所以我决定暂时保留“点云”解决方案。尽管如此,由于我要绘制的数据的特殊性质,一旦我回到这一点,您的答案将变得非常有用 - 范围随着半径单调增加,这是我在问这个问题时没有想到的。这意味着,我可以(至少)将点云减少到一定数量半径的范围列表。无论如何,您直接编写 SVG 的想法听起来也很诱人,因为我已经有了顶点坐标。

标签: gnuplot polar-coordinates data-files


【解决方案1】:

有纯粹的 gnuplot 4.4+ 解决方案,但它们会很复杂。一个原因是数据文件的极坐标图不是通过极坐标插值完成的,而是线性插值(端点之间的直线)。我宁愿让 C 程序输出 gnuplot 命令来直接绘制数据,例如

set polar
set angles degrees
plot (t<38.3883&t>31.8196)?1.181:1/0 with filledcurves above r=0, \
     (t<...

我建议使用 set arrow from 0,0 to r*cos(angle),r*sin(angle) 分别处理 0 范围的情况。

我不确定文件会不会小很多,gnuplot 会再次生成一条折线来近似r=1.181 处的圆弧。如果您想要一个带有实际圆弧的小文件,您可能希望直接从您的 C 代码生成 svg 代码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多