2015-01-18 11 views
5

so che posso fare scale logaritmiche con bokeh utilizzando l'API tracciato:Bokeh scala logaritmica per bar chart

p = figure(
    tools="pan,box_zoom,reset,previewsave", 
    y_axis_type="log", y_range=[0.001, 10**22], title="log axis example", 
    x_axis_label='sections', y_axis_label='particles' 
) 

Tuttavia, non riesco a capire come ottenere questo per applicare ai grafici di alto livello tali come Bokeh.charts.Bar. In generale sto avendo un sacco di problemi per quanto riguarda il rapporto tra uno Chart e uno figure. Qualcuno può indicarmi qualche documentazione su questo o spiegare come modificare le cose che sono esposte solo attraverso la figura e farle influenzare la mia Carta.

risposta

3

Sono in particolare intenzione di aggiornare la documentazione che descrive le diverse API Bokeh di questa settimana, ma per ora, i tre API Bokeh in ordine crescente di "livello":

  • modelli interfaccia: più basso livello di API , strato di base serializzazione, deve mettere tutto insieme tutto manualmente
  • glifi interfaccia (bokeh.plotting): intermedio livello API, creare facilmente piazzole/figure centrate attorno glifi visivi con attributi legati ai dati
  • chart interface (bokeh.charts): API di alto livello per grafici statistici in scatola/schematica, ad es. "BoxPlot" e "Istogramma".

Non c'è particolare relazione tra figure e le varie funzioni dei grafici, eccetto che entrambi produce sottoclassi di Plot come uscita.

Non sono sicuro che sia attualmente possibile aggiungere un asse di registro al grafico a barre nell'interfaccia "grafici" (che sarebbe una caratteristica ragionevole da aggiungere). Tuttavia sarebbe semplice realizzare un diagramma a scatole "a mano" usando l'interfaccia centrale "glifi" usando glifi rect o quad. Ecco un breve esempio:

from bokeh.plotting import figure, output_file, show 

output_file("bars.html") 

p = figure(title="log bar example", y_axis_type="log") 

p.quad(
    bottom=0, top=[10**5, 10**8, 10**3], 
    left=[0, 2, 4], right=[1,3,5] 
) 

show(p) 
+0

Come è possibile tracciare il codice con questi parametri: 'sinistra = [0, 4, 2], destra = [1,5,3]'? Quindi voglio che x_axis non venga ordinato. E nel tuo codice voglio che il valore più alto ('10 ** 8') sia l'ultimo. Grazie!! – ragesz

+0

Puoi fornire i valori nell'ordine che preferisci. Hai scritto la risposta nella tua domanda. – bigreddot

+0

OK, hai ragione! (Non ero abbastanza chiaro ...) Il mio problema è che ho (numerico) ID-s all'asse xe voglio un grafico a barre ordinato, quindi diciamo 'my_value = 15' a' ID = 0', ' my_value = 10' a 'ID = 2' e' my_value = 5' a 'ID = 1'. Quindi voglio che l'asse x assomigli a questo: '0-2-1' e asse y assomigliano a questo:' 15-10-5'. È possibile? – ragesz