【问题标题】:GNUPLOT: using splot with palette option, reproduce smooth colour changesGNUPLOT:使用带有调色板选项的 splot,再现平滑的颜色变化
【发布时间】:2019-11-09 16:37:00
【问题描述】:

我生成了一个 .txt 文件,其中包含四列:X、Y 和 Z 坐标,以及一个标量变量。 每行中的前三个值描述了与标量值相关联的 3D 酉向量。

我想将结果绘制为彩色球面。 我不能轻易使用 pm3D,因为数据不是矩阵格式,也就是说,在 X 坐标跳转后没有空格。此外,几乎没有两个相同的 X 坐标。

我能做的最好的就是使用带有调色板选项的 splot,据我所知,它将使用第 4 列中的数据为每个点分配颜色。

要绘制的数据保存在“star.txt”中,这是一个简单的文本文件,有 4 列,最多 10.000 行。

Gnuplot 脚本看起来像

    set terminal wxt size 800,800
    set mapping cartesian
    set view equal xyz
    set xlabel 'x'
    set ylabel 'y'
    set zlabel 'z'
    splot "star.txt" palette pointtype 7
    pause -1

如果有一种方法可以在表面上获得平滑的颜色变化,那就太好了。目前,了解颜色区域的位置并非易事。此外,人们可以通过这些点看到实际上离观察者更远的表面。

任何建议将不胜感激。

【问题讨论】:

    标签: gnuplot


    【解决方案1】:

    如果相邻点的颜色是一个在正面一个在背面,可以通过添加命令来改善效果

      set hidden3d
    

    这将对距观察者距离的点进行排序,以便最后绘制前表面上的点,因此不会被后表面的点遮挡。可以将颜色设置为半透明,这样您就可以“看穿”它,但这会使区分正面和背面变得更加困难,而不是更容易。

    跟进

    问题不在于插值。问题是您正在绘制点,并且每个点都是某种单一颜色。目前尚不清楚您想要理想地绘制什么。一个完美的球体?适合点的表面,可能是球形的,也可能不是球形的?您是否对点应用了着色函数,或者点本身是否定义了所需的颜色?

    1) 如果您要问如何绘制一个完美的彩色球体,请参阅最近这个问题的答案: gnuplot: Plotting a function on the surface of a sphere 因为您专门询问插值,所以我会注意到,如果您增加插值级别,该答案中显示的颜色会更平滑:

      set pm3d interpolate 3,3    # your choice of values > 1
    

    2) 如果您要问如何根据已知点处的值表示的某种方案为任意表面着色,我认为答案是当前稳定的 gnuplot 发行版 (5.2) 无法做到那个,但是开发版(5.3)可以。请参阅上一个问题的答案 Heatmap of points in a volume 尤其是在线演示 http://gnuplot.sourceforge.net/demo_5.3/voxel.html。我在下面重现了该演示的最终情节。

    【讨论】:

    • 非常感谢您的回答。我确实尝试了你提到的命令,它确实在一定程度上改善了情节。理想情况下,最好的结果是获得平滑的色域。我有没有机会从每次测量中插入颜色值?还是在没有矩阵格式数据的情况下使用 pm3d?再次感谢
    • 再次感谢您。我确实看到了这个问题,但我无法应用它的方法,因为我没有分析定义的函数,而是有数据点。正如我试图澄清的那样,我有一个包含 3 列的 .txt 文件:X、Y 和 Z 坐标,以及我想控制颜色的第四个值。事实上,这些点恰好位于一个球体上:我正在尝试制作一个 4D 图,空间坐标为 3 个坐标,颜色为 1 个。
    猜你喜欢
    • 1970-01-01
    • 2020-10-15
    • 2019-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多