在gnuplot中将y轴分为三部分

时间:2019-05-06 12:25:59

标签: linux gnuplot

我尝试绘制一些在y轴上有很大间隙的数据,这些数据我希望从图中排除。

噪音: noises

我找到了this指南,将图表分为两部分,对我来说非常有用。

reset
unset key
bm = 0.15
lm = 0.12
rm = 0.95
gap = 0.03
size = 0.75
y1 = 9.25e+06; y2 = 9.35e+06; y3 = 1.24e+07; y4 = 1.25e+07

set multiplot
set xlabel 'Number of Iterations'
set border 1+2+8
set xtics nomirror
set ytics nomirror
set lmargin at screen lm
set rmargin at screen rm
set bmargin at screen bm
set tmargin at screen bm + size * (abs(y2-y1) / (abs(y2-y1) + abs(y4-y3) ) )

set yrange [y1:y2]
plot 'upquValues.dat' title 'upper quartile', 'MedianValues.dat' using 1 title 'median value', 'loquValues.dat' title 'lower quartile',  'MeanValues.dat' using 1 title 'mean value';

unset xtics
unset xlabel
set border 2+4+8
set bmargin at screen bm + size * (abs(y2-y1) / (abs(y2-y1) + abs(y4-y3) ) ) + gap
set tmargin at screen bm + size + gap
set yrange [y3:y4]

set label 'Runtime [ns]' at screen 0.03, bm + 0.5 * (size + gap) offset 0,-strlen("PRuntime [ns]")/4.0 rotate by 90

set arrow from screen lm - gap / 4.0, bm + size * (abs(y2-y1) / (abs(y2-y1)+abs(y4-y3) ) ) - gap / 4.0 to screen \
lm + gap / 4.0, bm + size * (abs(y2-y1) / (abs(y2-y1) + abs(y4-y3) ) ) + gap / 4.0 nohead

set arrow from screen lm - gap / 4.0, bm + size * (abs(y2-y1) / (abs(y2-y1)+abs(y4-y3) ) ) - gap / 4.0  + gap to screen \
lm + gap / 4.0, bm + size * (abs(y2-y1) / (abs(y2-y1) + abs(y4-y3) ) ) + gap / 4.0 + gap nohead

set arrow from screen rm - gap / 4.0, bm + size * (abs(y2-y1) / (abs(y2-y1)+abs(y4-y3) ) ) - gap / 4.0 to screen \
rm + gap / 4.0, bm + size * (abs(y2-y1) / (abs(y2-y1) + abs(y4-y3) ) ) + gap / 4.0 nohead

set arrow from screen rm - gap / 4.0, bm + size * (abs(y2-y1) / (abs(y2-y1)+abs(y4-y3) ) ) - gap / 4.0  + gap to screen \
rm + gap / 4.0, bm + size * (abs(y2-y1) / (abs(y2-y1) + abs(y4-y3) ) ) + gap / 4.0 + gap nohead

plot 'upquValues.dat' title 'upper quartile', 'MedianValues.dat' using 1 title 'median value', 'loquValues.dat' title 'lower quartile',  'MeanValues.dat' using 1 title 'mean value';

unset multiplot

noises_break noises_break

我现在如何将其分为三部分?图的图例和标题也确实丢失了,我也想修复它。

我的下一个问题包括将图形另存为png或后记。 首次使用set term png; set output 'img.png'时,会生成一个空的img.png文件。当我先绘制并在以后设置术语并使用replot时,只会打印上方的图形。

break

1 个答案:

答案 0 :(得分:2)

“模拟”两个轴断裂的一种简单方法是使用set multiplot layout 3,1并相应地固定y范围并重新绘制数据。

代码:

### two axes breaks
reset session
set colorsequence classic
set key left
set multiplot layout 3,1

set lmargin 5
unset xtics
set border 14
set ytic 1
set yrange [8:10]
plot x, sin(x)*10, -0.3*x**2+10

unset key
set border 10
set yrange [-2:2]
replot

set border 11
set xtics nomirror
set yrange [-10:-8]
replot

unset multiplot
### end of code

结果:

enter image description here

对于其他问题: 如果我使用png或pngcairo或postscript终端,我会这样做:

set term pngcairo
set output 'img.png'
plot x
set output

如果省略最后一个set output,我将得到一个0字节的文件'img.png'。