Plot 如何使“设置偏移”应用于特定轴?

Plot 如何使“设置偏移”应用于特定轴?,plot,gnuplot,offset,Plot,Gnuplot,Offset,的gnuplot文档非常简洁,我无法找到偏移如何与多个x轴或y轴交互 我有两个图,它们使用x1y1和x1y2,所以有两个y轴,一个在左边,一个在右边。现在,当我添加一些顶部偏移时,它应用于使用y1的绘图。如何使其影响使用y2的绘图?这就是gnuplot帮助偏移量所说的: 偏移提供了一种在数据周围放置空边界的机制 在自动缩放的图形中。偏移仅影响x1和y1 轴,并且仅在二维打印命令中 所以看起来,这(直接)是不可能的。 顺便问一下,你想 仅y2轴或 y1和y2轴以相同的方式或 y1和y2轴不同

的gnuplot文档非常简洁,我无法找到偏移如何与多个x轴或y轴交互


我有两个图,它们使用x1y1和x1y2,所以有两个y轴,一个在左边,一个在右边。现在,当我添加一些顶部偏移时,它应用于使用y1的绘图。如何使其影响使用y2的绘图?

这就是gnuplot
帮助偏移量所说的:

偏移提供了一种在数据周围放置空边界的机制 在自动缩放的图形中。偏移仅影响x1和y1 轴,并且仅在二维打印命令中

所以看起来,这(直接)是不可能的。 顺便问一下,你想

  • 仅y2轴或
  • y1和y2轴以相同的方式或
  • y1和y2轴不同
也许你可以编辑你的问题,并添加一个例子进行说明

添加:

### different "offsets" for y1 and y2 axes
reset session

set xlabel "x1-axis"
set ylabel "y1-axis"
set ytics nomirror
set y2label "y2-axis"
set y2tics nomirror

plot 100*(sin(x)+1) axes x1y1 w l, \
     10*cos(x) axes x1y2 w l

Y1FromBottom = 0.40    # y1 data will use 40% space from bottom
Y2FromBottom = 0.80    # y2 data will use 80% space from bottom

set yrange[:(GPVAL_DATA_Y_MAX-GPVAL_DATA_Y_MIN)/Y1FromBottom+GPVAL_DATA_Y_MIN]
set y2range[:(GPVAL_DATA_Y2_MAX-GPVAL_DATA_Y2_MIN)/Y2FromBottom+GPVAL_DATA_Y2_MIN]

replot 
### end of code
也许下面的内容会有所帮助。正如您已经做的那样,您可以使用
GPVAL\u
变量。 重要的是要知道,这些值仅在打印后设置。 因此,您必须绘制,然后根据需要修改y1和y2范围,然后
replot
。您还可以使用gnuplot的自动缩放算法建议的变量
GPVAL\u Y\u MIN
GPVAL\u Y\u MAX
GPVAL\u Y2\u MIN
GPVAL\u Y2\u MAX

代码:

### different "offsets" for y1 and y2 axes
reset session

set xlabel "x1-axis"
set ylabel "y1-axis"
set ytics nomirror
set y2label "y2-axis"
set y2tics nomirror

plot 100*(sin(x)+1) axes x1y1 w l, \
     10*cos(x) axes x1y2 w l

Y1FromBottom = 0.40    # y1 data will use 40% space from bottom
Y2FromBottom = 0.80    # y2 data will use 80% space from bottom

set yrange[:(GPVAL_DATA_Y_MAX-GPVAL_DATA_Y_MIN)/Y1FromBottom+GPVAL_DATA_Y_MIN]
set y2range[:(GPVAL_DATA_Y2_MAX-GPVAL_DATA_Y2_MIN)/Y2FromBottom+GPVAL_DATA_Y2_MIN]

replot 
### end of code
结果:

### different "offsets" for y1 and y2 axes
reset session

set xlabel "x1-axis"
set ylabel "y1-axis"
set ytics nomirror
set y2label "y2-axis"
set y2tics nomirror

plot 100*(sin(x)+1) axes x1y1 w l, \
     10*cos(x) axes x1y2 w l

Y1FromBottom = 0.40    # y1 data will use 40% space from bottom
Y2FromBottom = 0.80    # y2 data will use 80% space from bottom

set yrange[:(GPVAL_DATA_Y_MAX-GPVAL_DATA_Y_MIN)/Y1FromBottom+GPVAL_DATA_Y_MIN]
set y2range[:(GPVAL_DATA_Y2_MAX-GPVAL_DATA_Y2_MIN)/Y2FromBottom+GPVAL_DATA_Y2_MIN]

replot 
### end of code

我希望偏移量对y1和y2产生不同的影响。因此,使用y1的绘图,我希望它自动缩放到垂直空间的底部40%,我通过将topOffset设置为(1-0.4)/0.4*(GPVAL_DATA_Y_MAX-GPVAL_DATA_Y_MIN)。但是,理想情况下,我还想使用y2调整绘图的缩放比例,y2有时会与关键点/图例重叠。但这更像是一个好的选择。@haelix这个加法回答了你的问题吗?它提供了一个解决方法,但我没有在我的特定案例中使用它。我接受答案。