我有一个数据文件,y轴的数据在第三列。我想要 x1 上的第一列和 x2 上的第二列给出的比例。标准方法是:
plot data u 1:2 axes x1y1, data u 1:3 x2y1
但这会产生两个情节,这是我想避免的。当然,可以用颜色或其他一些肮脏的技巧来实现上述工作。这使得整个情节代码变得非常繁琐。另一种不错的方法是按照建议使用 multiplot
here 。但这并不是我真正的目标,因为我想要真正的 x2 轴。
我想到的另一种方法是设置 x2range,但这意味着要转到源文件并计算出最小值和最大值,或者使用 gnuplot 中的一些统计数据(这感觉像是浪费时间)对于这么简单的事情)。
还有比上面更简单优雅的方式吗? (我特别担心解决方案写起来很短,该图可以由多个(> 5)数据集组成,并且我想避免将每个数据集绘制两次。
最佳答案
这可以通过这种方式完成,告诉 gnuplot 重新扫描文件,其中第二列作为 x2 值,但对于第二个图仅扫描无效的 y 值:
set xtics nomirror
set xrange [:] noextend
set x2tics
set x2range [:] noextend
plot '/tmp/f.gdat' u 1:3 w l, '' u 2:(1/0) ax x2y1
例如,您可以在 x 上使用摄氏度、在 x2 上使用华氏度来绘制此数据:
0 32 0
30 86 1
60 140 2
90 194 3
请注意,只有当第 2 列与第 1 列关联时,这才有意义。如果您知道仿射关系,那么使用 set link
会更好。
关于plot - 具有来自数据点的 2 x 轴的 gnuplot,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45871888/