2015-01-10 8 views
8

Ich habe ein mehrfiguriges Bokeh-Diagramm von vertikal gestapelten & ausgerichteten Figuren. Da die Diagramme vertikal ausgerichtet werden sollen, werden die Beschriftungen der y-Achse so gedreht, dass sie vertikal statt horizontal sind.Wie man die Anzahl der Ticks auf der Bokeh-Achse einstellt (die Etiketten überlappen sich auf kleinen Figuren)

In bestimmten Szenarien produziert Bokeh zu viele Ticks, so dass sich die Tick-Labels komplett überlappen und unleserlich werden. Hier ein Beispiel:

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) 

Kurz macht den Renderer klug genug, weniger Etikett automatisch zu erzeugen, gibt es eine Möglichkeit, die Anzahl der Etiketten, um anzuzeigen, die auf einer Achse platziert werden?

Es scheint, dass die Anzahl der erzeugten Etiketten hat mit dem Bereich der Daten zu tun, im Hinblick auf ihrer Affinität zu einer Leistung von 10

Antwort

4

Sieht aus wie es noch kein direkter Weg, dies zu spezifizieren. Bitte folgen Sie den entsprechenden issue. Dies ist eine Abhilfe:

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

Sie die Anzahl der Tickets über den interval Parameter in SingleIntervalTicker steuern kann.

+0

Hmm, tatsächlich werden die Figuren/Layouts in einer generischen Klasse erstellt, die vom Rendern der Daten getrennt ist. An diesem Punkt habe ich keine Möglichkeit, den tatsächlichen Bereich der Daten zu kennen, um diesen Trick zu verwenden. Das heißt, es bietet eine mögliche Abhilfe, nur nicht wirklich eine, die ich in meiner Situation verwenden kann, so wird als beantwortet markiert. Danke –

7

Sie können die Anzahl der Ticks jetzt mit desired_num_ticks Eigenschaft steuern. Schauen Sie sich das Beispiel aus der Bokeh-Dokumentation here an (und dieses issue).

Zum Beispiel in Ihrem Fall, etwa so: plot.yaxis[0].ticker.desired_num_ticks = 10.

+0

Dies ist ein Kommentar, keine Antwort. – Alex

+0

Ich habe deine Antwort überprüft. Sie sollten Ihre Antwort unterstützen und mehr erklären. – Alex

+0

@alireza fertig ... danke :) – Kevad

Verwandte Themen