Plotly:向条形图添加线条
Plotly: Add line to bar chart
我有一个数据框的条形图:
fig = df.iplot(asFigure=True, kind='bar', barmode = 'relative')
py.iplot(fig)
是否可以将数据框中的其中一列转换为线系列?
评论中建议的link确实有一些有价值的资源,但他们不会直接回答你的问题。 iplot()
使用 pandas 数据框作为输入,并生成堆叠条形图。这里有一种方法可以让你做到这一点,尽管不使用 df.iplot()
一、剧情:
现在,代码
我的建议建立在一个例子的基础上:plot.ly/pandas/bar-charts。正如您将看到的,这是一个基于 pandas 数据框的示例 - 就像 df.iplot()
一样。您可以简单地从堆叠条中取出一个系列或 'trace' 并通过更改
将其显示为一条线
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')
为了回答最后一条评论,我更改了代码以包含您所要求的循环。
让我知道这是否有帮助:
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')
我有一个数据框的条形图:
fig = df.iplot(asFigure=True, kind='bar', barmode = 'relative')
py.iplot(fig)
是否可以将数据框中的其中一列转换为线系列?
评论中建议的link确实有一些有价值的资源,但他们不会直接回答你的问题。 iplot()
使用 pandas 数据框作为输入,并生成堆叠条形图。这里有一种方法可以让你做到这一点,尽管不使用 df.iplot()
一、剧情:
现在,代码
我的建议建立在一个例子的基础上:plot.ly/pandas/bar-charts。正如您将看到的,这是一个基于 pandas 数据框的示例 - 就像 df.iplot()
一样。您可以简单地从堆叠条中取出一个系列或 'trace' 并通过更改
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')
为了回答最后一条评论,我更改了代码以包含您所要求的循环。 让我知道这是否有帮助:
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')