plotly:分组条形图中的降序
Posted
技术标签:
【中文标题】plotly:分组条形图中的降序【英文标题】:plotly: descending order in grouped bar chart 【发布时间】:2021-11-05 09:52:57 【问题描述】:我正在尝试
-
创建一个漂亮的图,按 LABEL 排序,然后按每个 LABEL 内的值排序。
如果可能,请删除图表底部的标签,因为我在图例中有说明。
图书馆:
from plotly import graph_objs as go
import plotly.express as px
import pandas as pd
我的数据如下所示:
df = pd.DataFrame('LABEL': ['1', '1', '2', '2', '3', '3', '3', '3'],
'Cat2': ['a', 'b', 'a', 'b', 'c', 'a', 'e', 'f'],
'Value': [3, 2, 1, 4, 1, 3, 4, 1])
df.sort_values(by=['LABEL', 'Value'], ascending=[True, False],inplace=True)
这是我的尝试:
COLOR_MAP = str(i): c for i, c in enumerate(px.colors.qualitative.Light24)
fig = go.Figure()
for i in df['LABEL'].unique():
df_ = df[df['LABEL'] == i]
fig.add_trace(go.Bar(
x=[df_['LABEL'], df_['Cat2']],
y=df_['Value'],
marker=dict(color=COLOR_MAP[i]),
name=f'i'))
fig.update_layout(legend_title='Cat1')
fig.update_layout(
xaxis=dict(tickangle=45))
fig.update_layout(xaxis='categoryorder': 'trace') # I tried: 'total descending', 'category descending', 'array'
结果:
我的期望:
提前致谢!!
【问题讨论】:
【参考方案1】: 在 plotly express 中要简单得多 在定义 x 的数据框中定义一个新列from plotly import graph_objs as go
import plotly.express as px
import pandas as pd
df = pd.DataFrame(
"LABEL": ["1", "1", "2", "2", "3", "3", "3", "3"],
"Cat2": ["a", "b", "a", "b", "c", "a", "e", "f"],
"Value": [3, 2, 1, 4, 1, 3, 4, 1],
)
df.sort_values(by=["LABEL", "Value"], ascending=[True, False], inplace=True)
# define a concatenated column for x
df = df.assign(labx=df["LABEL"] + df["Cat2"])
px.bar(
df,
x="labx",
y="Value",
hover_data=["Cat2"],
color="LABEL",
color_discrete_sequence=px.colors.qualitative.Light24,
).update_layout(
xaxis="tickmode": "array", "tickvals": df["labx"], "ticktext": df["Cat2"]
)
【讨论】:
谢谢。太棒了。我知道 plotly express 但没有想到那些选项:xaxis="tickmode": "array", "tickvals": df["labx"], "ticktext": df["Cat2"]
,它们对于实现这一结果最重要。以上是关于plotly:分组条形图中的降序的主要内容,如果未能解决你的问题,请参考以下文章
删除分组 plotly express 条形图中的空条,使每组条之间的视觉距离相等
Plotly Python:在具有多个 Y 轴的分组条形图中对齐 X 轴
如何使用 Plotly 删除堆叠和分组条形图中的 x 轴刻度标签
Python使用matplotlib绘制柱状图(bar plot)实战:水平条形图垂直条形图分组条形图堆叠条形图
Python使用seaborn可视化分组条形图并且在分组条形图的条形上添加数值标签(seaborn grouped bar plot add labels)
R语言ggplot2可视化绘制条形图(bar plot)使用gghighlight包突出高亮条形图中的特定条形(highlight specific bar plot)