Можно ли сохранять видимость одного и того же количества меток по оси X при изменении уровня масштабирования на графике Python

Программы на Python
Anonymous
Можно ли сохранять видимость одного и того же количества меток по оси X при изменении уровня масштабирования на графике

Сообщение Anonymous »

Я использую Django и генерирую гистограмму боке, используя данные из базы данных. Ниже я привел базовый пример кода. Я генерирую метки деления оси X из переменной datetime, чтобы получать отметку каждый час с помощью строки в формате даты и времени. Это приводит к тому, что все галочки будут постоянно видны. Это нормально при увеличении, но некрасиво при уменьшении, потому что метки находятся друг над другом.

Есть ли способ заставить боке автоматически регулировать видимость меток при изменении уровня масштабирования, чтобы поддерживать постоянное количество меток в виде галочек?

views.py:

Код: Выделить всё

# -*- coding: utf-8 -*-
from django.shortcuts import render

from bokeh.plotting import *
from bokeh.resources import CDN
from bokeh.embed import components
from bokeh.charts import Bar
from bokeh.models import Range1d

from collections import OrderedDict
import datetime

def plot_1_bar(data, y, y_lab, title, xlab, ylab, yrange, palette):
x0_list_str = []

y_list = []

# x_axis_type == "datetime":
i_x = 'x1'
i_y = y[0]
for idx, val in enumerate(data):
x0_list_str.append(val[i_x].strftime("%Y-%m-%d %H h"))
y_list.append(val[i_y])

data_x = x0_list_str
data_y = OrderedDict()
data_y[y_lab[0]] = y_list

plot = Bar(data_y, data_x, title=title, xlabel=xlab,
ylabel=ylab, stacked=True, continuous_range=yrange,
palette=palette, legend=True, height=400)
return components(plot, CDN)

def plot1(request):

script_bokeh = ""
div_bokeh = ""

data = []
data.append({'x1': datetime.datetime(2015,1,1,8,0,0,0),'y1': 0})
data.append({'x1': datetime.datetime(2015,1,1,9,0,0,0),'y1': 0})
data.append({'x1': datetime.datetime(2015,1,1,10,0,0,0),'y1': 0})
data.append({'x1': datetime.datetime(2015,1,1,11,0,0,0),'y1': 0})
data.append({'x1': datetime.datetime(2015,1,1,12,0,0,0),'y1':8})
data.append({'x1': datetime.datetime(2015,1,1,13,0,0,0),'y1':12})
data.append({'x1': datetime.datetime(2015,1,1,14,0,0,0),'y1':0})
data.append({'x1': datetime.datetime(2015,1,1,15,0,0,0),'y1':0})
data.append({'x1': datetime.datetime(2015,1,1,16,0,0,0),'y1':0})
data.append({'x1': datetime.datetime(2015,1,1,17,0,0,0),'y1':0})
data.append({'x1': datetime.datetime(2015,1,1,18,0,0,0),'y1':2})
data.append({'x1': datetime.datetime(2015,1,1,19,0,0,0),'y1':6})
data.append({'x1': datetime.datetime(2015,1,1,20,0,0,0),'y1':4})
data.append({'x1': datetime.datetime(2015,1,1,21,0,0,0),'y1':22})
data.append({'x1': datetime.datetime(2015,1,1,22,0,0,0),'y1':36})
data.append({'x1': datetime.datetime(2015,1,1,23,0,0,0),'y1':32})
data.append({'x1': datetime.datetime(2015,1,2,0,0,0,0),'y1':21})
data.append({'x1': datetime.datetime(2015,1,2,1,0,0,0),'y1':15})
data.append({'x1': datetime.datetime(2015,1,2,2,0,0,0),'y1':4})
data.append({'x1': datetime.datetime(2015,1,2,3,0,0,0),'y1':0})
data.append({'x1': datetime.datetime(2015,1,2,4,0,0,0),'y1':0})
data.append({'x1': datetime.datetime(2015,1,2,5,0,0,0),'y1':0})
data.append({'x1': datetime.datetime(2015,1,2,6,0,0,0),'y1':45})
data.append({'x1': datetime.datetime(2015,1,2,7,0,0,0),'y1':47})
data.append({'x1': datetime.datetime(2015,1,2,8,0,0,0),'y1':52})
data.append({'x1': datetime.datetime(2015,1,2,9,0,0,0),'y1':44})
data.append({'x1': datetime.datetime(2015,1,2,10,0,0,0),'y1':0})
data.append({'x1': datetime.datetime(2015,1,2,11,0,0,0),'y1':0})
data.append({'x1': datetime.datetime(2015,1,2,12,0,0,0),'y1':0})
data.append({'x1': datetime.datetime(2015,1,2,13,0,0,0),'y1':0})

script_bokeh, div_bokeh = plot_1_bar(data,
['y1'],
['y legend label'],
"",
'x label',
'y label',
Range1d(0, 70),
['red'])

return render(request,
'tests/plot1.html',
{'script_bokeh': script_bokeh,
'div_bokeh':  div_bokeh})
plot1.html :

Код: Выделить всё



bokeh bar plot




Bokeh bar plot
{{div_bokeh|safe}}{{script_bokeh|safe}}


Изображение


Изображение


Подробнее здесь: https://stackoverflow.com/questions/321 ... s-the-zoom

Вернуться в «Python»