Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Plotly:将线条添加到条形图_Python_Plotly - Fatal编程技术网

Python Plotly:将线条添加到条形图

Python Plotly:将线条添加到条形图,python,plotly,Python,Plotly,我有一个绘图条形图,来自数据框: fig = df.iplot(asFigure=True, kind='bar', barmode = 'relative') py.iplot(fig) 是否可以将数据框中的一列转换为一系列行?评论中的建议链接确实有一些有价值的资源,但它们不会直接回答您的问题iplot()使用熊猫数据帧作为输入,并生成堆叠条形图。这里有一种方法可以让您完全做到这一点,尽管不需要使用df.iplot() 首先,绘图: import plotly.plotly as py i

我有一个绘图条形图,来自数据框:

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

是否可以将数据框中的一列转换为一系列行?

评论中的建议链接确实有一些有价值的资源,但它们不会直接回答您的问题
iplot()
使用熊猫数据帧作为输入,并生成堆叠条形图。这里有一种方法可以让您完全做到这一点,尽管不需要使用
df.iplot()


首先,绘图:

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

现在,代码

我的建议基于以下示例:。正如您将看到的,这是一个构建在熊猫数据帧上的示例—就像
df.iplot()
。您可以简单地从堆叠的条形图中提取一个系列或“轨迹”,并通过更改将其显示为一条线

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

我还添加了一些元素,以便更容易在Jupyter笔记本中脱机显示结果。还要注意,我将最后一行从
py.iplot(图,filename='pandas-bar-chart-layout')
更改为
iplot(图,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')

在回答最后一条评论时,我更改了代码以包含一个循环,就像您所问的那样。 让我知道这是否有帮助:

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

也许你想再看一个问题,我有很多酒吧。我可以设置一个循环。例如,对于dataframe中的所有列,创建一个go.Bar命令?@fred.schwartz很乐意提供帮助!找到时间后,我将在
循环中进行循环。也许今晚晚些时候或者明天。我不明白为什么它不起作用。您可以在df列的列表上循环,使用
go.Bar
创建一个Bar对象,并将其存储在列表中。这很有意义。整理好了。只是在列表中循环并附加了很多感谢,似乎没有其他人知道这些问题的答案this@fred.schwartz没问题!那么你的循环方法有效了?