Plotly: добавить линию на гистограмму - PullRequest
1 голос
/ 18 марта 2019

У меня есть линейчатая гистограмма из фрейма данных:

fig = df.iplot(asFigure=True, kind='bar', barmode = 'relative')
py.iplot(fig)

Можно ли превратить один из столбцов во фрейме данных в ряд строк?

1 Ответ

1 голос
/ 18 марта 2019

Предлагаемая ссылка в комментариях действительно имеет несколько ценных ресурсов, но они не будут отвечать на ваши вопросы напрямую.iplot() использует фрейм данных pandas в качестве входных данных и создает столбчатую диаграмму с накоплением.Вот подход, который позволит вам сделать именно это, хотя и без использования df.iplot()


Во-первых, сюжет:

enter image description here

Теперь код

Мое предложение основано на примере, найденном по адресу: plot.ly / pandas / bar-charts .Как вы увидите, это пример, который построен на фрейме данных pandas - так же, как df.iplot().Вы можете просто взять серию или «трассировку» из уложенных столбцов и отобразить их в виде линии, изменив

go.Bar(x=df['x'],
       y=df['y4'])

на:

 go.Scatter(x=df['x'],
            y=df['y4'])

Я также добавил несколькоэлементы, чтобы упростить отображение результатов в автономном режиме в блокноте Jupyter.Также обратите внимание, что я изменил последнюю строку с py.iplot(fig, filename='pandas-bar-chart-layout') на iplot(fig, filename='pandas-bar-chart-layout')

Полный фрагмент:

import plotly.plotly as py
import plotly.graph_objs as go
from plotly.offline import download_plotlyjs, init_notebook_mode, plot, iplot

init_notebook_mode(connected=True)

import pandas as pd
import numpy as np

N = 20
x = np.linspace(1, 10, N)
y = np.random.randn(N)+3
y2 = np.random.randn(N)+6
y3 = np.random.randn(N)+9
y4 = np.random.randn(N)+12
df = pd.DataFrame({'x': x, 'y': y, 'y2':y2, 'y3':y3, 'y4':y4})
df.head()

data = [
    go.Bar(
        x=df['x'], # assign x as the dataframe column 'x'
        y=df['y']
    ),
    go.Bar(
        x=df['x'],
        y=df['y2']
    ),
    go.Bar(
        x=df['x'],
        y=df['y3']
    ),
    go.Scatter(
        x=df['x'],
        y=df['y4']
    )

]

layout = go.Layout(
    barmode='stack',
    title='Stacked Bar with Pandas'
)

fig = go.Figure(data=data, layout=layout)

# IPython notebook
iplot(fig, filename='pandas-bar-chart-layout')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...