Bokeh plot (Python)
Matthai
Član
Torej, v Pythonu iz baze preberem podatke o povprečni temperaturi v intervalu vsake ure (se pravi 0-1: 22,5 C, 1-2: 23,0 C,. itd.).
Podatki so v arrayih x in y.
Takole rišem graf:
Prvič.
Na osi x mi napiše ura:0, ura:5... jaz bi rad, da mi napiše interval. Torej ura: 0-1, ura: 0.5...
Drugič.
x os vsebuje labele 0, 5, 10, 15,... jaz bi seveda rad večjo natančnost, 0, 1, 2, 3, 4,...
Tretjič.
Kako na črti oz. krogcu na črti izpisati vrednost. Se pravi da mi napiše temperaturo na tisti točki.
Četrtič.
Na y osi mi napiše temperaturo in C. Se pravi 22 C, 23 C,... Kako bi napisal znak za stopinjo, torej tisti krogec?
Podatki so v arrayih x in y.
Takole rišem graf:
...No, zdaj imam par vprašanj.
...
from bokeh.plotting import figure, show, output_file
from bokeh.models import PrintfTickFormatter
...
...
output_file("graf.html")
datum = reading[0].strftime("%-d. %-m. %Y")
p = figure(plot_width=600, plot_height=400, tools="reset,save", x_range=(0,24), y_range=(round(min(y),0)-1,round(max(y),0)+1))
p.title.text_font_size = '20pt'
p.title.text_font = 'helvetica'
p.title.text = u'Temperatura na dan %s' % datum
p.xaxis.axis_label='ura'
p.xaxis.axis_label_text_font_size = "12pt"
p.xaxis.axis_label_text_font_style = "normal"
p.xaxis[0].formatter = PrintfTickFormatter(format='ura: %s')
p.yaxis.axis_label='temperatura'
p.yaxis.axis_label_text_font_size = "12pt"
p.yaxis.axis_label_text_font_style = "normal"
p.yaxis[0].formatter = PrintfTickFormatter(format='%s C')
# narisi crto s krogci
p.line(x, y, line_width=2, line_color="red", legend="rdeči senzor")
p.circle(x, y, line_width=2, line_color="red", fill_color="red", size=4, legend="rdeči senzor")
show(p)
Prvič.
Na osi x mi napiše ura:0, ura:5... jaz bi rad, da mi napiše interval. Torej ura: 0-1, ura: 0.5...
Drugič.
x os vsebuje labele 0, 5, 10, 15,... jaz bi seveda rad večjo natančnost, 0, 1, 2, 3, 4,...
Tretjič.
Kako na črti oz. krogcu na črti izpisati vrednost. Se pravi da mi napiše temperaturo na tisti točki.
Četrtič.
Na y osi mi napiše temperaturo in C. Se pravi 22 C, 23 C,... Kako bi napisal znak za stopinjo, torej tisti krogec?
Komentarji
po moje je tole tvoja rešitev https://stackoverflow.com/questions/35611233/using-months-in-x-axis-in-bokeh
oziroma http://bokeh.pydata.org/en/latest/docs/user_guide/plotting.html#categorical-axes
Četrtič pa °.
...
Dobim tole:
https://pravokator.si/wp-content/uploads/2016/06/bokeh_plot.pngX os je sedaj čudna...
Se spomniš ko si tole delal https://repl.it/FhLf/3
No tam imaš primer plot_hours_interval, ki ga podaš x_range=plot_hours_interval
Ampak problem ostaja.
Namreč, ni bil problem to, da so bile ure v prihodnosti prazne - takrat seveda senzor še ni odčital podatkov. Problem je, da so labele čez spodnjo črto. V bistvu se nahajajo ravno na redini črte, ne pa pod njo - ko so zarotirane.
To me moti.
https://pravokator.si/wp-content/uploads/2016/06/bokeh_plot-1.png
Sem na sliki označil kaj je težava.
Mogoče kaj v smislu http://bokeh.pydata.org/en/0.10.0/docs/reference/models/axes.html label_standoff? Ali pa če daš label orientation na horizontal ?
Label orientation pa lahko dam na horizontal, ampak potem je graf preširok (npr. za telefon).
A se da narediti, da ima graf slider?