我使用多色图布局了3,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输出:
另请参阅相关问题multiplot - stacking 3 graphs on a larger canvas。
如果您想要包含一行和三列的布局,则必须设置固定的lmargin
和rmargin
。您还可以在某种意义上自动执行此操作,如以下脚本所示:
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
是最合适的边距,例如colorbox
,gap
是两个图的边界之间的分隔,cols
是列数。
结果是: