2014-11-26 14 views
8

sto lavorando sul (0.6.1) Bokeh esercitazione e cercando di spegnere le tacche e le etichette in una delle trame di esercizio, the scatter plot:Spegnimento segni di graduazione in bokeh

from __future__ import division 

import numpy as np 
from six.moves import zip 
from bokeh.plotting import * 
from bokeh.objects import Range1d 

output_file("scatter.html") 

figure() 

N = 4000 

x = np.random.random(size=N) * 100 
y = np.random.random(size=N) * 100 
radii = np.random.random(size=N) * 1.5 
colors = [ 
    "#%02x%02x%02x" % (r, g, 150) 
    for r, g in zip(np.floor(50+2*x), np.floor(30+2*y)) 
] 

circle(x, y, radius=radii, 
     fill_color=colors, fill_alpha=0.6, 
     line_color=None, Title="Colorful Scatter") 

grid().grid_line_color = None 
axis().axis_line_color = None 

# QUESTION PART 1: Is this the right way to turn off tick labels? 
axis().major_label_text_font_size = '0pt' 
# QUESTION PART 2: ...and how to turn off tick marks also? 

show() # open a browser 

Sono riuscito per disattivare le etichette dei segni di spunta ma nessuna ricerca della documentazione e googling ha rivelato l'incantesimo necessario per disattivare i segni di graduazione.

Inoltre, non sono sicuro che l'impostazione di axis().major_label_text_font_size a 0pt sia il modo giusto per disattivare le etichette di graduazione o se si tratta di un kludge. Nient'altro sembrava funzionare.

Mi manca qualcosa di ovvio?

risposta

7

Questa risposta è un aggiornamento per il più recente, 0,12 .4 versione di Bokeh. Per ulteriori informazioni, questi comandi sono presi dalla pagina Styling Visual Attributes di Bokeh documentation.

Per disattivare maggiori e minori segni di graduazione impostato il loro colore a None:

p = bokeh.plotting.figure(plot_width=400, plot_height=400) 
p.circle([1,2,3,4,5], [2,5,8,2,7], size=10) 

p.xaxis.major_tick_line_color = None # turn off x-axis major ticks 
p.xaxis.minor_tick_line_color = None # turn off x-axis minor ticks 

p.yaxis.major_tick_line_color = None # turn off y-axis major ticks 
p.yaxis.minor_tick_line_color = None # turn off y-axis minor ticks 

Per disattivare le etichette di graduazione impostare la dimensione del carattere per '0pt':

p.xaxis.major_label_text_font_size = '0pt' # turn off x-axis tick labels 
p.yaxis.major_label_text_font_size = '0pt' # turn off y-axis tick labels 

Un risultato simile può essere raggiunto impostando il colore del carattere su "Nessuno", con lo svantaggio che lo spazio è ancora mantenuto per le etichette di graduazione.

p.xaxis.major_label_text_color = None # turn off x-axis tick labels leaving space 
p.yaxis.major_label_text_color = None # turn off y-axis tick labels leaving space 

Questo frammento di codice esemplifica rimuovendo entrambe le maggiori e minori linee zecche e anche le etichette delle tacche.

import bokeh.io 
import bokeh.plotting 
import bokeh.layouts 
bokeh.io.output_file('remove_tick_marks.html') 

p0 = bokeh.plotting.figure(plot_width=200, plot_height=200, 
          x_axis_label='x', y_axis_label='y', 
          title='original') 
p0.circle([1,2,3,4,5], [2,5,8,2,7], size=10) 

p1 = bokeh.plotting.figure(plot_width=200, plot_height=200, 
          x_axis_label='x', y_axis_label='y', 
          title='remove tick marks') 
p1.circle([1,2,3,4,5], [2,5,8,2,7], size=10) 
p1.xaxis.major_tick_line_color = None # turn off x-axis major ticks 
p1.xaxis.minor_tick_line_color = None # turn off x-axis minor ticks 
p1.yaxis.major_tick_line_color = None # turn off y-axis major ticks 
p1.yaxis.minor_tick_line_color = None # turn off y-axis minor ticks 

p2 = bokeh.plotting.figure(plot_width=200, plot_height=200, 
          x_axis_label='x', y_axis_label='y', 
          title='remove tick labels') 
p2.circle([1,2,3,4,5], [2,5,8,2,7], size=10) 
p2.xaxis.major_tick_line_color = None # turn off x-axis major ticks 
p2.xaxis.minor_tick_line_color = None # turn off x-axis minor ticks 
p2.yaxis.major_tick_line_color = None # turn off y-axis major ticks 
p2.yaxis.minor_tick_line_color = None # turn off y-axis minor ticks 
p2.xaxis.major_label_text_font_size = '0pt' # preferred method for removing tick labels 
p2.yaxis.major_label_text_font_size = '0pt' # preferred method for removing tick labels 

p3 = bokeh.plotting.figure(plot_width=200, plot_height=200, 
          x_axis_label='x', y_axis_label='y', 
          title='notice extra space') 
p3.circle([1,2,3,4,5], [2,5,8,2,7], size=10) 
p3.xaxis.major_tick_line_color = None # turn off x-axis major ticks 
p3.xaxis.minor_tick_line_color = None # turn off x-axis minor ticks 
p3.yaxis.major_tick_line_color = None # turn off y-axis major ticks 
p3.yaxis.minor_tick_line_color = None # turn off y-axis minor ticks 
p3.xaxis.major_label_text_color = None #note that this leaves space between the axis and the axis label 
p3.yaxis.major_label_text_color = None #note that this leaves space between the axis and the axis label 

grid = bokeh.layouts.gridplot([[p0, p1, p2, p3]]) 
bokeh.io.show(grid) 

enter image description here

6

Non sono sicuro che l'assenza di una risposta per più di una settimana sia dovuta a persone che non lo conoscono, o perché la domanda viene ignorata come troppo ovvia.

In ogni caso, nella speranza che altri possano trovare utile, inserisco questa risposta. Ho trovato un modo per farlo che sembra così tanto come un hack che sto solo postando nella speranza che qualcuno lo migliori su di esso ...

from __future__ import division 

import numpy as np 
from six.moves import zip 
from bokeh.plotting import * 

output_file("scatter.html") 

figure() 

N = 4000 

x = np.random.random(size=N) * 100 
y = np.random.random(size=N) * 100 
radii = np.random.random(size=N) * 1.5 
colors = ["#%02x%02x%02x" % (r, g, 150) 
      for r, g in zip(np.floor(50+2*x), np.floor(30+2*y))] 

circle(x, y, radius=radii, 
     fill_color=colors, fill_alpha=0.6, 
     line_color=None, Title="Colorful Scatter") 

grid().grid_line_color = None 
axis().axis_line_color = None 
curplot().outline_line_color = None 

# Turn off tick labels 
axis().major_label_text_font_size = '0pt' 
# Turn off tick marks 
axis().major_tick_line_color = None # turn off major ticks 
axis()[0].ticker.num_minor_ticks = 0 # turn off minor ticks 
axis()[1].ticker.num_minor_ticks = 0 

show() # open a browser 
+0

No, questo è probabilmente il modo migliore per farlo corrente. Probabilmente potremmo aggiungere un altro argomento di parole chiave a 'figure', ma è un atto di bilanciamento, aggiungendo convenienza ma evitando il" parametro zuppa ". Se hai suggerimenti per migliorare l'ortografia, ecc. Ti incoraggio a inviarli sul tracker dei problemi di Bokeh GH, tale input è sempre il benvenuto. – bigreddot

+0

Sebbene, dovresti anche essere in grado di impostare "major_label_text_font_color = None" e farlo funzionare anche per rimuovere le etichette principali. Penso che sia la mia preferenza nell'impostare la dimensione del font, ma concederò che non c'è molta differenza. – bigreddot

+0

Grazie a @Bigreddot, è rassicurante vedere che non mi manca l'ovvio. Vengo da un uso intenso di ggplot2 e mi aspetto di trovare un semplice switch come in http://www.cookbook-r.com/Graphs/Axes_(ggplot2)/ ma sono soddisfatto di questa soluzione provvisoria e prenderò in considerazione l'archiviazione di un problema se ho un suggerimento utile da fare. – gauden

Problemi correlati