我使用Bokeh中的"列"布局彼此堆叠了2个VBAR图。这两个VBAR图表共享相同的X轴,x,y范围。
TOOLTIPS_1=[("Name","@Names"), ("Total Balance","@weekly{($ 0.00 a)}")]
p1 = figure(x_range=names, plot_width=1000, plot_height=250, title="Purchases in Past 7 Days", tools="pan,wheel_zoom, reset", tooltips=TOOLTIPS_1, sizing_mode = "fixed")
p1.vbar(x='Names', top='weekly', width=1, source=source, line_color="white", color = Spectral5[0])
# x-axis for p1 is set off
p1.xaxis.visible = False
p1.yaxis[0].formatter = NumeralTickFormatter(format="$0.00a")
#set p1 vertical range
max_range = merge.monthly.max()
p1.y_range = Range1d(0, max_range+1000000)
TOOLTIPS_2=[("Name","@Names"), ("Total Balance","@monthly{($ 0.00 a)}")]
p2 = figure(x_range=p1.x_range, y_range = p1.y_range, plot_width=1000, plot_height=250, title="Purchases in Past 30 Days", tools="pan,wheel_zoom, reset", tooltips=TOOLTIPS_2, sizing_mode = "fixed")
p2.vbar(x='Names', top='monthly', width=1, source=source, line_color="white", color = Spectral5[1])
# p2 has a x-axis and it's the same as p1's, although p1's x-axis is turned off
p2.xaxis.major_label_orientation = 1.2
p2.yaxis[0].formatter = NumeralTickFormatter(format="$0.00a")
layout = column(p1,p2)
show(layout)
尽管P1和P2都具有相同的范围和绘图宽度/高度,但我们的条形图不同(P1的条形图更大(,因为一个具有轴标签,而另一个则没有。现在,如何设置P1,P2的条形图相同的大小?
从Bokeh 1.1开始,没有直接指定内部绘图框架大小的直接方法,只有整个外部画布大小。但是,您可以指定例如min_border_bottom
确保绘图框架下方的空间(通常由轴tick和标签占用的空间(始终至少是一定的最小尺寸:
p = figure(min_border_bottom=80, ...)
所以您可以:
将相同的合适的
min_border_bottom
传递给两个图,以确保它们始终保留在绘图框架下方的相同数量的空间(无论是否有轴(。用轴将合适的
min_border_bottom
传递给图,然后从无轴的图的plot_height
中减去相同的值。