Plotly Express - 如何绘制单变量堆积条形图
Plotly Express - ho to plot a stacked bar chart of single variable
我有一个这样的数据框
df = pd.DataFrame({'name':['a', 'b', 'c', 'd', 'e'], 'value':[54.2, 53.239, 43.352, 36.442, -12.487]})
df
我想绘制一个简单的堆积条形图,如下图所示 plotly.express
我该怎么做?
我在文档中看到了几个示例,但其中 none 解决了我的问题
谢谢
条形图曾经只有一列吗?对于条形图来说,这似乎是一个奇怪的用例,但是...
我要做的是为每个“名称”创建一个跟踪,将 df 过滤为 trace_df=df[df['name']==name],然后为每个跟踪创建一个 Bar那些,像这样:
import plotly.graph_objects as go
trace_dfs = [df[df['name']==name] for name in df['name']]
bars = [
go.Bar(
name=name,
x=['constant' for _ in trace_frame['value']],
y=trace_frame['value'],
)
for trace_frame in trace_dfs
]
fig = go.Figure(
data=bars,
barmode='stack'
)
当然,那不是 plotly_express
,它是核心 plotly
,它允许更多的控制。如果您想要不同值的多个堆叠条,则需要单独的标签和 x 和 y 的单独值,而不是您描述的两列 DF。还有几个例子here and a full description of the available bar chart options here.
有点罗嗦,但您可以为 x 轴设置一个值,在本例中为零。然后你只需要调整你的维度、标签和范围。
import pandas as pd
import plotly.express as px
df = pd.DataFrame({'name':['a', 'b', 'c', 'd', 'e'], 'value':[54.2, 53.239, 43.352, 36.442, -12.487]})
df['x'] = 0
fig = px.bar(df, x='x', y='value',color='name', width=500, height=1000)
fig.update_xaxes(showticklabels=False, title=None)
fig.update_yaxes(range=[-50,200])
fig.update_traces(width=.3)
fig.show()
我有一个这样的数据框
df = pd.DataFrame({'name':['a', 'b', 'c', 'd', 'e'], 'value':[54.2, 53.239, 43.352, 36.442, -12.487]})
df
我想绘制一个简单的堆积条形图,如下图所示 plotly.express
我该怎么做? 我在文档中看到了几个示例,但其中 none 解决了我的问题 谢谢
条形图曾经只有一列吗?对于条形图来说,这似乎是一个奇怪的用例,但是...
我要做的是为每个“名称”创建一个跟踪,将 df 过滤为 trace_df=df[df['name']==name],然后为每个跟踪创建一个 Bar那些,像这样:
import plotly.graph_objects as go
trace_dfs = [df[df['name']==name] for name in df['name']]
bars = [
go.Bar(
name=name,
x=['constant' for _ in trace_frame['value']],
y=trace_frame['value'],
)
for trace_frame in trace_dfs
]
fig = go.Figure(
data=bars,
barmode='stack'
)
当然,那不是 plotly_express
,它是核心 plotly
,它允许更多的控制。如果您想要不同值的多个堆叠条,则需要单独的标签和 x 和 y 的单独值,而不是您描述的两列 DF。还有几个例子here and a full description of the available bar chart options here.
有点罗嗦,但您可以为 x 轴设置一个值,在本例中为零。然后你只需要调整你的维度、标签和范围。
import pandas as pd
import plotly.express as px
df = pd.DataFrame({'name':['a', 'b', 'c', 'd', 'e'], 'value':[54.2, 53.239, 43.352, 36.442, -12.487]})
df['x'] = 0
fig = px.bar(df, x='x', y='value',color='name', width=500, height=1000)
fig.update_xaxes(showticklabels=False, title=None)
fig.update_yaxes(range=[-50,200])
fig.update_traces(width=.3)
fig.show()