2015-01-10 1 views
8

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

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

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.

ответ

4

Похоже, что до сих пор нет прямого способа определить это. Пожалуйста, следуйте связанным issue. Это временное решение:

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') 

enter image description here

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

+0

Хм, на самом деле рисунки/макеты создаются в родовом классе отдельно от рендеринга данных, поэтому в этот момент у меня нет возможности узнать фактический диапазон данных, чтобы использовать этот трюк. Тем не менее, он представляет собой возможное обходное решение, но на самом деле это не то, что я могу использовать в своей ситуации, так что отметьте как ответ. Спасибо –

7

Теперь вы можете управлять количеством тиков с desired_num_ticks. Посмотрите на пример из документа bokeh here (и этого issue).

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

+0

Это комментарий, а не ответ. – Alex

+0

Я рассмотрел ваш ответ. Вы должны поддержать свой ответ и объяснить больше. – Alex

+0

@alireza сделано ... спасибо :) – Kevad

Смежные вопросы