2

我正在尝试将我的 gnuplot 分解为堆叠图以提高可读性。我希望马力和扭矩数据在同一个图上,而其他数据分别显示在下面的堆叠图上——所有这些都由同一个 X 轴排列。有点像这样:

http://abloriginalparts.com/pb/wp_2f5b1e2e/images/img1226948967fe0ad9dc.JPG

我尝试了多图的变体,但似乎无法正确显示。这是非多重版本:

http://i1347.photobucket.com/albums/p715/balaguru42/dyno_zpsc0213c60.png

set term png
set y2range [-5:40]
set y2tics
set ytics nomirror
set xlabel 'RPM'
set ylabel 'Torque/Power'
set y2label 'AFR/Timing/Boost/MAF'
set key bottom
InRange(x)=((x>0) ? x : 1/0)
ConvertMap(x)=(x-1) * 14.5
ConvertMapDelta(x)=x * 14.5
ConvertMaf(x)=x * 3
ConvertMafDelta(x)=x * 3
set output "output/dyno.png"
plot \
    "output/dyno.dat" using 1:(InRange($2)):3 \
        with yerrorbars title 'Torque (ft-lbs)', \
    "output/dyno.dat" using 1:(InRange($4)):5 \
        with yerrorbars title 'Power (hp)', \
    "output/dyno.dat" using 1:(InRange($6)):7 \
        with yerrorbars axes x1y2 title 'AFR', \
    "output/dyno.dat" using 1:(InRange($8)):9 \
        with yerrorbars axes x1y2 title 'Ignition (deg)', \
    "output/dyno.dat" using 1:(InRange($10)):11 \
        with yerrorbars axes x1y2 title 'Intake (deg)', \
    "output/dyno.dat" using 1:(InRange(ConvertMap($12))):(ConvertMapDelta($13)) \
        with yerrorbars axes x1y2 title 'Boost (psi)', \
    "output/dyno.dat" using 1:(InRange(ConvertMaf($16))):(ConvertMafDelta($17)) \
        with yerrorbars axes x1y2 title 'MAF (V x 3)'
4

1 回答 1

1

以下是如何获得您在第一个链接中引用的那种情节。

要在同一图上使用不同轴的马力和扭矩,请使用:

set ytics nomirror
set y2tics
set ylabel 'horse power (hp)'
set y2label 'torque (ft-lbs)'
set style data yerrorbars
plot 'output/dyno.dat' using 1:4:5  title 'Power (hp)',\
     '' using 1:2:3 title 'Torque (ft-lbs)'

要堆叠下面的其他数据图,您需要该multiplot模式。为了在左侧和右侧具有相等的边距,尽管上图在 - 轴上有抽动和标签,但y2您必须使用显式边距而不是自动计算的边距:

set ytics nomirror
set y2tics
set ylabel 'horse power (hp)'
set y2label 'torque (ft-lbs)'
set format x ''
set xrange[1000:7000]

set style data yerrorbars

set multiplot

set lmargin 8
set rmargin 8
set tmargin 1
set bmargin at screen 0.4

plot 'output/dyno.dat' using 1:4:5  title 'Power (hp)',\
     '' using 1:2:3 title 'Torque (ft-lbs)'

unset y2tics
unset y2label
set format x
set xlabel 'RPM'
set ylabel 'AFR/Timing/Boost/MAF'

set tmargin at screen 0.38
set bmargin 4
plot 'output/dyno.dat' using 1:6:7 title 'AFR'

unset multiplot

我省略了你所有的缩放和测试函数,以使结构更清晰。如果上图和下图在 - 轴上的位数不同y,您可能需要通过调整其中一个ylabels 以offset与另一个对齐,例如set ylabel 'ylabel' offset -1. 该offset数字是根据字符宽度给出的。

我还根据字符宽度设置了左右边距,您可能需要调整这些值。对于上图的下边距和下图的上边距,我使用了分数屏幕坐标。

顺便说一句:如果您真的需要使用位图终端,请使用pngcairo而不是png. 最好使用 egpdfcairo或类似的基于矢量的输出格式。

于 2013-10-09T22:11:04.543 回答