密谋:在折线图中添加折线

时间:2019-03-18 11:31:20

标签: python plotly

我有一个数据框中的条形图:

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

是否可以将数据框中的一列变成一个行系列?

2 个答案:

答案 0 :(得分:1)

评论中的建议链接确实具有一些宝贵的资源,但是它们不会直接回答您的问题。 iplot()使用pandas数据框作为输入,并生成一个堆叠的barplot。尽管无需使用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')

答案 1 :(得分:0)

回答最后一条评论,我更改了代码,以包括您所要求的循环。 让我知道这是否有帮助:

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 = []
for i in df.columns:
    if i!= "x":
        data.append(
            go.Bar(
                x=df['x'], # assign x as the dataframe column 'x'
                y=df[i]
            )
        )

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')