plot - Gnuplot:相对于x1轴绘制x2轴

标签 plot gnuplot multiple-axes

我似乎很难在网上找到该问题的答案。标题是基本问题,但更具体地说,我希望有两个x轴,一个在图的顶部,而另一个在底部。但是,这不是简单的关系,即x2!= 5 * x1或类似的关系。该关系由数据文件本身给出。因此,更具体地说,我有一个看起来像这样的文件:

 V     T       P
2.0   15.0   0.586
3.0   17.4   0.798
4.0   25.3   1.023
5.0   28.9   1.124
6.0   30.2   1.456

我想在x1y1轴上绘制相对于(wrt)P的T的图,并在x2y1轴上绘制T wrt V。因此,x1轴将在x1的相应位置显示P范围,而x2将在x1的相应位置显示V范围,即x1轴上的0.586在x2轴上的相同位置将显示2.0。这实际上在Gnuplot中是可能的,还是我必须与两个x轴有关系才能做到这一点?任何帮助将不胜感激。先感谢您。

最佳答案

这是您可以实现的方法。我首先向您显示脚本和结果,然后再说明步骤:

reset
set xtics nomirror
set x2tics
set autoscale xfix
set autoscale x2fix
set xlabel 'P'
set ylabel 'T'
set x2label 'V'
plot 'data.txt' using 3:2 with linespoints ps 2 lw 2 title 'T wrt P', \
     '' using 3:2:x2tic(1) axes x2y1 with points ps 2 lw 2 title 'T wrt V'

我首先在x1y1上绘制 T wrt P 。之后,我在x2y1上绘制 T wrt V ,并为此使用 P 的范围和刻度位置,但将 V 值用作x2轴的tic标签。这给出了 P 的线性比例,并相应地调整了 V

为了使其正常工作,您必须使用set autoscale xfixset autoscale x2fix。这将使用精确的范围,并且不会将轴扩展到下一个主要点,这仅适用于x轴,而不适用于具有自定义点的x2轴。

当然,您也可以颠倒该过程,并为 V 使用线性刻度,并调整 P 抽签。在任何情况下,对于与xtic()x2tic一起放置的自定义标记,数字的使用方式与它们在数据文件中的格式一样。
reset
set xtics nomirror
set x2tics 1
set autoscale xfix
set autoscale x2fix
set xlabel 'P'
set ylabel 'T'
set x2label 'V'
plot 'data.txt' using 1:2:xtic(3) with linespoints ps 2 lw 2 title 'T wrt P', \
     '' using 1:2 axes x2y1 with points ps 2 lw 2 title 'T wrt V'

在这里,两条绘图线都显示了这些点,以说明它们确实重合。

为了使一个命令仅生成xtics,可以将NaN用作y -value。而且,如果仅某些自定义标记应为标签,则需要在x2tic调用中进行适当的检查。在这里,我只为所有偶数行设置标签$0是当前行号,从0开头):
reset
set xtics nomirror
set x2tics
set autoscale xfix
set autoscale x2fix
set xlabel 'P'
set ylabel 'T'
set x2label 'V'
plot 'data.txt' using 3:2 with linespoints ps 2 lw 2 title 'T wrt P', \
     '' using 3:(NaN):x2tic((int($0) % 2) ? '' : stringcolumn(1)) axes x2y1 t ''

结果:

关于plot - Gnuplot:相对于x1轴绘制x2轴,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19121823/

相关文章:

python - 如何在 python 中绘制具有多个 y 轴的分组条形图

python - 在 matplotlib 中覆盖透明路径?

matlab - 颜色条未出现在(表面)图中 - LaTeX 解释器问题

gnuplot - 如何加粗和调整图表上的标签大小?

linux - gnuplot 线型不想改变

python - Matplotlib zorder ax 隐藏其他轴的线

python - 如何更改使用 host_subplot 创建的轴的标签(来自 AxesGrid 工具包)

javascript - 在 Javascript 中创建数学函数的图形,该函数随着函数中变量的变化而动态变化

r - 将 R 中 type=n 的绘图复制到 PDF 不会复制绘图点,仅在输出 pdf 中显示其线条

gnuplot - 在 gnuplot 中将向量剪裁在圆圈上