gnuplot复杂的堆积图

时间:2013-10-09 17:58:01

标签: plot gnuplot stacked

我试图将我的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)'

1 个答案:

答案 0 :(得分: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 - 轴上具有不同的位数,则可能需要将ylabel中的一个调整为offset以与另一个调整,例如set ylabel 'ylabel' offset -1offset数字以字符宽度给出。

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

BTW:如果您确实需要使用位图终端,请使用pngcairo代替png。您最好使用例如pdfcairo或类似的基于矢量的输出格式。