Ошибка Javascript в линейной линейной диаграмме Bokeh Nested - PullRequest
0 голосов
/ 25 сентября 2019

Я создаю вложенную категориальную гистограмму с боке и пандами.Я проверил примеры, включенные в документы Bokeh (показанные ниже)

from bokeh.io import show, output_file
from bokeh.plotting import figure
from bokeh.palettes import Spectral5
from bokeh.sampledata.autompg import autompg_clean as df
from bokeh.transform import factor_cmap

output_file("bar_pandas_groupby_nested.html")

df.cyl = df.cyl.astype(str)
df.yr = df.yr.astype(str)

group = df.groupby(by=['cyl', 'mfr'])

index_cmap = factor_cmap('cyl_mfr', palette=Spectral5, factors=sorted(df.cyl.unique()), end=1)

p = figure(plot_width=800, plot_height=300, title="Mean MPG by # Cylinders and Manufacturer",
           x_range=group, toolbar_location=None, tooltips=[("MPG", "@mpg_mean"), ("Cyl, Mfr", "@cyl_mfr")])

p.vbar(x='cyl_mfr', top='mpg_mean', width=1, source=group,
       line_color="white", fill_color=index_cmap, )

p.y_range.start = 0
p.x_range.range_padding = 0.05
p.xgrid.grid_line_color = None
p.xaxis.axis_label = "Manufacturer grouped by # Cylinders"
p.xaxis.major_label_orientation = 1.2
p.outline_line_color = None

show(p)

Я пытаюсь применить это с моим набором данных.Тем не менее, мы запускаем скрипт и получаем ошибку

Ошибка JS

Это мой код:

def test(data):
    output_file("bar_pandas_groupby_nested.html")
    print(df.head())
    data.prueba = data.prueba.astype(str)
    data.inst_nombre_institucion = data.inst_nombre_institucion.astype(str)

    group = data.groupby(by=['prueba', 'inst_nombre_institucion'])

    index_cmap = factor_cmap('prueba_inst_nombre_institucion', palette=Spectral5, factors=sorted(data.prueba.unique()), end=1)

    p = figure(plot_width=800, plot_height=300, title="Mean",
               x_range=group, toolbar_location=None, tooltips=[("MPG", "@media_mod_ingles_mean"), ("prueba, institucion", "@prueba_inst_nombre_institucion")])

    p.vbar(x='prueba_inst_nombre_institucion', top='media_mod_ingles_mean', width=1, source=group,
           line_color="white", fill_color=index_cmap, )

    p.y_range.start = 0
    p.x_range.range_padding = 0.05
    p.xgrid.grid_line_color = None
    p.xaxis.axis_label = "Mean"
    p.xaxis.major_label_orientation = 1.2
    p.outline_line_color = None

    show(p)
    return True

И мои данные выглядят такэто: data.head ()

Почему я получаю эту ошибку?

Спасибо за ваше время!

ОБНОВЛЕНИЕ:

data.csv и скрипт можно скачать здесь

1 Ответ

0 голосов
/ 25 сентября 2019

Проблема заключается в том, что ваши метки way , way слишком длинные, чтобы поместиться в графике высотой 300px, когда они ориентированы по вертикали.Если я изменю ориентацию на

p.xaxis.major_label_orientation = 0.2

, тогда график может отобразиться, но вы также можете увидеть проблему:

enter image description here

В качестве альтернативы, если я на самом деле делаю метки почти вертикально (~ pi / 2), а высота графика составляет 800 пикселей, все видно:

enter image description here

Но я бы сказал, что все еще довольно трудно интерпретировать / читать.Я бы посоветовал попытаться найти более короткие строки для ваших категорий.

...