【问题标题】:gnuplot: How to Correlate Points on two graphsgnuplot:如何关联两个图上的点
【发布时间】:2011-09-17 19:03:53
【问题描述】:

关于 gnuplot 的快速问题。 我有两个图表,从文件中绘制,如下所示:

plot "t2" using 1:75 with linespoints title "crop 20",\
"t2" using 1:11 with linespoints title "crop 30"

现在我想确定两个图上的点是否具有相同的高度,例如 Y 坐标。 它可以是不同的颜色,或者完美的解决方案是在它们之间画一条线。

有什么想法吗? 非常感谢。

编辑

感谢 Sunhwan Jo 的回复,建议的方法可以正常工作,只要相似的值以相同的顺序出现。看图片

两个图在同一高度共享多个点,但由于长度不同而没有被拾取。

【问题讨论】:

    标签: gnuplot


    【解决方案1】:

    您可以使用外部程序过滤掉两个不同列中具有相同数据的数据点(这里我检查了第 75 列和第 11 列是否具有相同的条目)。

    plot "t2" using 1:75 with linespoints title "crop 20",\
         "t2" using 1:11 with linespoints title "crop 30",\
         "< awk '{if ($75==$11) print $0}' t2" us 1:11 with lines points title "crop 20/30"
    

    编辑:

    好的,如果您想在不同的行中显示具有相同数据的数据点,上述方法将不起作用。 AWK 脚本会更加详细。我已经尝试如下,希望对您有所帮助。

    这是测试数据。

    0      0.0      0.0
    1      0.3      0.6
    2      1.6      1.6
    3      0.3      1.5
    4      0.6      3.6
    5      0.3      4.3
    6      0.3      0.7
    7      5.5      5.5
    8      6.6      6.6
    9      5.2      5.2
    10     8.3      8.3
    11     2.7      5.0
    12     2.8      8.3
    13     3.3      2.8
    14     7.9      3.9
    15     9.9      7.9
    16    15.3     15.3
    17    14.7     14.7
    18     3.8     18.1
    19    18.1     12.1
    

    还有 gnuplot 命令(注意列名称的一些明显区别):

    plot 'test.dat' us 1:2 w lp title "1", \
         'test.dat" us 1:3 w lp title "2", \
         "< awk '{ind[NR]=$1; arr1[NR]=$2; arr2[NR]=$3} END{for (i=1; i<=NR; i++) {for (j=1; j<=NR; j++) {if (arr1[i]==arr2[j]) print ind[i], arr1[i]}}}' test.dat' test.dat" us 1:2 w lp title '1==2'
    

    结果图:

    【讨论】:

    • 很好的例子,我看到我们在这里谈论不同的事情。我需要将第一个图 (4, 0.6) 和第二个图 (1, 0.6) 链接起来。 X 位置可以不同。我们可以假设不超过一个匹配存在。谢谢
    • 由于您想在两个不同的数据系列中识别相似的 y 值,因此最好使用 y-y 图来显示两列之间的相关性。
    【解决方案2】:

    使用awk脚本预处理数据的上一个答案是一个好方法。这里我给出一个只使用 gnuplot 的方法。有一个三元运算符——“?:”。使用此运算符,您可以选择具有相同值的点。例如,“plot 'data.dat' u 1:($11==$75?$11:1/0) w p lc rgb'blue'”将仅绘制 $11==$75 的点。我已经在我的博客中写了详细信息。如有任何问题,请访问http://gnuplot-surprising.blogspot.com/2011/09/manipulate-data-using-ternary-operator.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-05-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多