gnuplot与数据点之间有2个x轴
我有一个数据文件,y轴的数据在第三列。我想得到x1上第一列和x2上第二列给出的刻度。标准方法是:gnuplot与数据点之间有2个x轴,plot,gnuplot,Plot,Gnuplot,我有一个数据文件,y轴的数据在第三列。我想得到x1上第一列和x2上第二列给出的刻度。标准方法是: plot data u 1:2 axes x1y1, data u 1:3 x2y1 但这造成了两个情节,这是我想要避免的。当然,人们可以用颜色或其他一些肮脏的技巧来完成上述工作。这使得整个情节代码非常繁琐。另一个好方法是按照建议使用multiplot。但这并不是我真正的目标,因为我想要真正的x2轴 我想到的另一种方法是设置x2range,但这意味着要转到源文件并计算出最小值和最大值,或者在gnu
plot data u 1:2 axes x1y1, data u 1:3 x2y1
但这造成了两个情节,这是我想要避免的。当然,人们可以用颜色或其他一些肮脏的技巧来完成上述工作。这使得整个情节代码非常繁琐。另一个好方法是按照建议使用multiplot
。但这并不是我真正的目标,因为我想要真正的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仿射链接的情况下才有意义。如果您知道仿射关系,则使用
设置链接
更好。这可以通过这种方式完成,方法是告诉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
命令弄糊涂了——它从不将第二列与x2轴。为什么不想要两个绘图?如果您只是想在x轴和x2轴之间寻找静态的、数据独立的关系,可以使用。您能提供一些数据,以及您想要实现的绘图的说明吗?我被您的示例plot
命令弄糊涂了——它从不将第二列与x2轴关联。为什么不需要两个绘图?如果您只是在x轴和x2轴之间寻找静态、数据独立的关系,可以使用。