Экспорт графиков Bokeh как изображений - PullRequest
0 голосов
/ 04 июля 2019

У меня есть образец Python, который делает водопад визуальным.Он использует bokeh lib

Он отлично выглядит и хорошо работает в Jupyter, но когда я использую его в PowerBI, я получаю сообщение об ошибке, в котором говорится, что изображение не было создано

, код использует show (p), который, кажется, открывает страницу Internet Explorer, когда я запускаю ее в PowerBI

, я попробовал пример matplotlib, и он использует: my_plot.get_figure (). savefig ("waterfall.png", dpi = 200, bbox_inches =«туго») есть ли что-то похожее на bokeh lib?

from bokeh.plotting import figure, show
from bokeh.io import output_notebook
from bokeh.models import ColumnDataSource, LabelSet
from bokeh.models.formatters import NumeralTickFormatter
import pandas as pd

#output_notebook()

# Create the initial dataframe
index = ['sales','returns','credit fees','rebates','late charges','shipping']
data = {'amount': [350000,-30000,-7500,-25000,95000,-7000]}
df = pd.DataFrame(data=data,index=index)

# Determine the total net value by adding the start and all additional transactions
net = df['amount'].sum()

df['running_total'] = df['amount'].cumsum()
df['y_start'] = df['running_total'] - df['amount']

# Where do we want to place the label?
df['label_pos'] = df['running_total']

df_net = pd.DataFrame.from_records([(net, net, 0, net)],
                                   columns=['amount', 'running_total', 'y_start', 'label_pos'],
                                   index=["net"])
df = df.append(df_net)

df['color'] = 'grey'
df.loc[df.amount < 0, 'color'] = 'red'
df.loc[df.amount > 0, 'color'] = 'green'
df.loc[df.amount > 300000, 'color'] = 'blue'
df.loc[df.amount < 0, 'label_pos'] = df.label_pos - 10000
df["bar_label"] = df["amount"].map('{:,.0f}'.format)

TOOLS = "box_zoom,reset,save"
source = ColumnDataSource(df)
p = figure(tools=TOOLS, x_range=list(df.index), y_range=(0, net+40000),
           plot_width=800, title = "Sales Waterfall")

p.segment(x0='index', y0='y_start', x1="index", y1='running_total',
          source=source, color="color", line_width=55)

p.grid.grid_line_alpha=0.3
p.yaxis[0].formatter = NumeralTickFormatter(format="($ 0 a)")
p.xaxis.axis_label = "Transactions"

labels = LabelSet(x='index', y='label_pos', text='bar_label',
                  text_font_size="8pt", level='glyph',
                  x_offset=-20, y_offset=0, source=source)
p.add_layout(labels)
show(p)

1 Ответ

0 голосов
/ 04 июля 2019

Существует глава Руководства пользователя, посвященная Экспорт графиков :

from bokeh.io import export_png
export_png(plot, filename="plot.png")

Обратите внимание, что вам необходимо установить необходимые необязательные зависимости (PhantomJS и selenium).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...