Как исправить размер Bokeh vbar диаграмм при изменении размера оси? - PullRequest
0 голосов
/ 30 апреля 2019

У меня есть 2 vbar-диаграммы, сложенные друг на друга с использованием макета «колонка» в боке.Эти 2 диаграммы 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 такого же размера?

1 Ответ

1 голос
/ 30 апреля 2019

Начиная с Bokeh 1.1, нет прямого способа указать размер внутренней рамки графика, только общий размер внешнего холста. Тем не менее, вы можете указать, например, min_border_bottom для обеспечения того, чтобы пространство под рамкой графика (пространство, обычно занимаемое галочками и метками осей) всегда по крайней мере определенного минимального размера:

p = figure(min_border_bottom=80, ...)

Так что вы можете:

  • передайте одинаковые подходящие min_border_bottom на оба графика, чтобы убедиться, что на обоих графиках всегда резервируется одинаковое количество места под рамкой графика (независимо от того, существует ось или нет).

  • передайте подходящий min_border_bottom графику с осью и вычтите это же значение из plot_height графика без оси.

...