Python преобразование фигуры водопада в сюжет - PullRequest
0 голосов
/ 05 июня 2018

Я использую пакет waterfall_chart в Python для создания фигуры водопада.Пакет в основном использует matplotlib в бэкэнде, поэтому я пытался использовать функцию tls.mpl_to_plotly(mpl_fig) для преобразования цифры matplotlib в plotly.Но при конвертации всплывает ошибка.Есть ли способ конвертировать waterfall_chart в plotly или есть простой способ создать диаграмму прямо в plotly?Я видел предыдущее обсуждение аналогичного графика в plotly, но оно включало довольно ручное кодирование номера графика.

Вы можете использовать следующий код для воссоздания диаграммы.

import waterfall_chart
import matplotlib.pyplot as plt
import plotly.tools as tls

a = ['sales','returns','credit fees','rebates','late charges','shipping']
b = [10,-30,-7.5,-25,95,-7]
mpl_fig = plt.figure()
waterfall_chart.plot(a, b)

plt.show()

диаграмма водопада

Но когда я пытаюсь преобразовать в plotlyпри использовании mpl_to_plotly() возникает ошибка:

plotly_fig = tls.mpl_to_plotly(mpl_fig)

ValueError: min() arg is an empty sequence

Подробности пакета waterfall_chart можно найти здесь: https://github.com/chrispaulca/waterfall/blob/master/waterfall_chart.py

1 Ответ

0 голосов
/ 14 мая 2019

Адреса моего ответа

[...] или есть простой способ создать диаграмму непосредственно на графике?


Сболее новые версии plotly можно использовать plotly.graph_objs.Waterfall.

Ниже приведен базовый пример с образцом данных с настройкой, использующей iplot в автономном ноутбуке Jupyter:

Участок:

enter image description here

Код:

# imports
import plotly
from plotly.offline import download_plotlyjs, init_notebook_mode, plot, iplot
from IPython.core.display import display, HTML
import plotly.figure_factory as ff
import plotly.graph_objs as go
import pandas as pd
import numpy as np

# setup
display(HTML("<style>.container { width:35% !important; } .widget-select > select {background-color: gainsboro;}</style>"))
init_notebook_mode(connected=True)
np.random.seed(1)

import plotly.offline as py
import plotly.graph_objs as go
py.init_notebook_mode(connected = False)

# your values
a = ['sales','returns','credit fees','rebates','late charges','shipping']
b = [10,-30,-7.5,-25,95,-7]

# waterfall trace
trace = go.Waterfall(
     x = a, 
    textposition = "outside", 
    text = [str(elem) for elem in b], 
    y = b, 
    connector = {"line":{"color":"rgb(63, 63, 63)"}}, 
)

layout = go.Layout(
        title = "Waterfall chart, plotly version 3.9.0", 
        showlegend = True
)

iplot(go.Figure([trace], layout))

Проверьте свою версию с помощью:

import plotly
plotly.__version__

Обновите свою версию в консоли cmd, используя:

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