【问题标题】:How do I create a 3d phase-space plot in gnuplot?如何在 gnuplot 中创建 3d 相空间图?
【发布时间】:2013-07-27 00:12:43
【问题描述】:

见这篇文章Enclosed, but not Encrypted

我有一些二进制数据。我想执行那篇文章中显示的 gnuplot,但使用我的数据。

对于三维相空间图,序列 a, b, c, d, e, f等可以作为空间坐标(a-b, b-c, c-d), (b-c, c-d, d-e), (c-d, d-e, e-f) 等。创建的情节中的模式揭示了 后续序列之间的重复关系。在这个相图中, 50,000 个 16 位随机数将产生一个非结构化的云 点。

我想做完全相同的事情。我有一个二进制文件(大约 10 MB),我想通过 gnuplot 运行它来创建漂亮的 gnuplot 图。

我在 gnuplot 中输入什么来实现这一点?

在 Google 上搜索“相空间图”和 gnuplot 并没有返回多少。我不知道那是不是因为这篇文章是从德语翻译过来的。我认为我没有在堆栈交换站点中找到相关答案。

【问题讨论】:

    标签: gnuplot


    【解决方案1】:

    要绘制 3d 相空间,请使用以下脚本,其工作方式类似于 gnuplot 页面中的 running average example

    reset
    back4 = back3 = back2 = back1 = 0
    shift(x) = (back4 = back3, back3 = back2, back2 = back1, back1 = x)
    samples(x) = $0 < 3 ? NaN : x
    set ticslevel 0
    # the labels are only for orientation when checking the test data
    set xlabel 'xlabel'
    set ylabel 'ylabel'
    splot 'randomdata.dat' using (shift($1), samples(back4-back3)):(samples(back3-back2)):(samples(back2-back1))
    

    Gnuplot 必须保存四个数据值,它们存储在back1back4 中。对于每个新值,存储的值都会移动shiftsamples 注意不使用前三个值,而只存储(NaN 创建无效数据点)。

    要对其进行测试,请使用此文件randomdata.dat

    21
    15
    10
    6
    3
    1
    0
    

    这会在 (6,5,4)、(5,4,3)、(4,3,2) 和 (3,2,1) 处绘制四个数据点。

    如果您有一个二进制数据文件,例如16 位数字,使用

    splot 'binaryfile' binary format="%ushort" using (shift($1), samples(back4-back3)):(samples(back3-back2)):(samples(back2-back1))
    

    如果您需要更改数据大小,请调用 gnuplot 并输入 show datafile binary datasizes 以查看支持的格式。

    【讨论】:

    • This answer to the same question 您可能会感兴趣。
    • @Schorsch:感谢您的发现! @Christoph:你的回答真的很高级——我向你脱帽致敬;)
    • @mpy 谢谢,知道它是否对 OP 有用会很有趣。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-24
    • 1970-01-01
    • 1970-01-01
    • 2017-08-09
    • 1970-01-01
    • 1970-01-01
    • 2013-08-14
    相关资源
    最近更新 更多