как отрегулировать количество делений на оси боке (надписи перекрываются на маленьких фигурках)

У меня есть многофигурный график Боке с вертикально сложенными и выровненными фигурами. Поскольку я хочу выровнять графики по вертикали, метки оси Y повернуты так, чтобы они были вертикальными, а не горизонтальными.

В некоторых сценариях эффект боке создает слишком много штрихов, так что метки меток полностью перекрываются, что делает их неразборчивыми. Вот пример:

import bokeh.plotting as bp
import numpy as np

y = np.random.uniform(0, 300, 50)
x = np.arange(len(y))

bp.output_file("/tmp/test.html", "test")
plot = bp.figure(plot_width=800, plot_height=200)
plot.yaxis.axis_label_text_font_size = "12pt"
plot.yaxis.major_label_orientation = 'vertical'

plot.line (x,y)
bp.show(plot)

Есть ли способ указать количество меток, которые нужно разместить на оси, не считая того, чтобы сделать средство визуализации достаточно умным, чтобы автоматически создавать меньше меток?

Кажется, что количество сгенерированных меток связано с диапазоном данных с точки зрения его близости к степени 10.


person Jonathan Shore    schedule 10.01.2015    source источник


Ответы (2)


Похоже, прямого способа указать это до сих пор нет. Следите за соответствующей проблемой. Это обходной путь:

from bokeh.models import SingleIntervalTicker, LinearAxis

plot = bp.figure(plot_width=800, plot_height=200, x_axis_type=None)
ticker = SingleIntervalTicker(interval=5, num_minor_ticks=10)
xaxis = LinearAxis(ticker=ticker)
plot.add_layout(xaxis, 'below')

введите описание изображения здесь

Вы можете контролировать количество билетов с помощью параметра interval в SingleIntervalTicker.

person elyase    schedule 10.01.2015
comment
Хм, на самом деле рисунки / макеты создаются в общем классе отдельно от рендеринга данных, поэтому в этот момент у меня нет возможности узнать фактический диапазон данных, чтобы использовать этот трюк. Тем не менее, он представляет собой возможное обходное решение, но я не могу его использовать в своей ситуации, поэтому будет отмечен как ответ. Спасибо - person Jonathan Shore; 10.01.2015

Теперь вы можете контролировать количество тактов с помощью свойства desired_num_ticks. Взгляните на пример из документации по боке (и эту проблему).

Например, в вашем случае примерно так: plot.yaxis[0].ticker.desired_num_ticks = 10.

person Kevad    schedule 29.10.2015