带有一个颜色框的Gnuplot多色图

时间:2014-01-13 06:30:33

标签: plot size gnuplot colorbox

我使用多色图布局了3,1个图。所有三个图都具有相同的比例,所以我只想在右边缘显示一个颜色框。但是,一旦我取消了前两个绘图的颜色框,三个绘图的大小就不同了。 任何人都可以告诉我如何使用相同大小的三个图来实现这一点吗?

1 个答案:

答案 0 :(得分:1)

您必须设置固定的右边距,例如set rmargin at screen 0.85。这将绘图的右边界设置为图像大小的85%:<​​/ p>

set multiplot layout 3,1

set rmargin at screen 0.85
plot x 
plot x
plot x linecolor palette
unset multiplot
set output

用4.6.3输出:

enter image description here

另请参阅相关问题multiplot - stacking 3 graphs on a larger canvas

固定边距的通用解决方案

如果您想要包含一行和三列的布局,则必须设置固定的lmarginrmargin。您还可以在某种意义上自动执行此操作,如以下脚本所示:

init_margins(left, right, gap, cols) = \
  sprintf('left_margin = %f; right_margin = %f;', left, right) . \
  sprintf('col_count = %d; gap_size = %f;', cols, gap)

set_margins(col) = sprintf('set lmargin at screen %f;', get_lmargin(col)) . \
  sprintf('set rmargin at screen %f;', get_rmargin(col));

get_lmargin(col) = (left_margin + (col - 1) * (gap_size + ((right_margin - left_margin)-(col_count - 1) * gap_size)/col_count))

get_rmargin(col) = (left_margin + (col - 1) * gap_size + col * ((right_margin - left_margin)-(col_count - 1) * gap_size)/col_count)

set xlabel 'xlabel'
set ylabel 'ylabel'

eval(init_margins(0.1, 0.9, 0.07, 3))
set multiplot

eval(set_margins(1))
plot x

unset ylabel
eval(set_margins(2))
plot x

eval(set_margins(3))
plot x linecolor palette

unset multiplot

评估init_margins返回的字符串会设置一些变量,这些变量稍后会用于第n列中绘图的左右边距。 left是最左边的边距,其中包含例如一个标签,right是最合适的边距,例如colorboxgap是两个图的边界之间的分隔,cols是列数。

结果是:

enter image description here