gnuplot与数据点之间有2个x轴

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

我有一个数据文件,y轴的数据在第三列。我想得到x1上第一列和x2上第二列给出的刻度。标准方法是:

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轴之间寻找静态、数据独立的关系,可以使用。