如何使用gnuplot将两个盒须图组合成一个

时间:2013-09-09 21:05:23

标签: graph gnuplot

我有两个盒须图,一个显示时间,另一个显示内存使用情况。请参阅以下内容:

Box-Whisker图显示时间用法: http://goo.gl/jhYBXr

Box-Whisker图显示内存使用情况: http://goo.gl/0Wvamh

gnuplot中是否还有将这两个组合成1个图形?理想情况下,我希望每个'X'入口并排放置两个盒须图。将有两个Y轴 - y1显示时间,y2显示具有不同范围的记忆。

提前致谢。

1 个答案:

答案 0 :(得分:0)

由于您没有提供任何示例数据,我使用了gnuplot的candlestick.dem演示中的数据并假设您在第一列中有JDK编号:

2.1 1 1.5 2   2.4 4   6.
2.2 2 1.5 3   3.5 4   5.5
3.0 3 4.5 5   5.5 6   6.5
3.1 4 3.7 4.5 5.0 5.5 6.1
4.0 5 3.1 3.5 4.2 5   6.1
5.0 6 1   4   5.0 6   9
6.0 7 4   4   4.8 6   6.1
7.0 8 4   5   5.1 6   6.1

绘图如下:

  1. 绘制一个空图(使用linetype -3,但不绘制任何内容)并使用xticlabels生成自定义xtics。

  2. 绘制盒子胡须,使用时间相对于xt的左移一点

  3. 绘制盒子胡须,使内存使用量相对于xtp向右移动了一点

  4. 为简单起见,我在这里使用相同的时间和内存数据,但您当然可以使用不同的数据文件和不同的y2rangeyrange

    set boxwidth 0.2 absolute
    set offset 0.5,0.5,0,0
    
    set yrange[0:10]
    set y2range[0:10]
    set ytics nomirror
    set y2tics
    set ylabel 'time usage'
    set y2label 'memory usage'
    set xlabel 'JDKs'
    
    set key left
    
    plot 'data.txt' using 2:4:xticlabels(1) linetype -3 notitle,\
         '' using ($2-0.15):4:3:7:6 with candlesticks linetype 1 title 'Quartiles, time' whiskerbars,\
         '' using ($2-0.15):5:5:5:5 with candlesticks linetype -1 linewidth 2 notitle,\
         'data.txt' using ($2+0.15):4:3:7:6 with candlesticks linetype 2 axes x1y2 title 'Quartiles, memory' whiskerbars,\
         '' using ($2+0.15):5:5:5:5 with candlesticks linetype -1 linewidth 2 axes x1y2 notitle
    

    这给出了:

    enter image description here