matplotlib 如何使用python可视化库重现此可视化?[关闭]

fafcakar  于 2023-05-07  发布在  Python
关注(0)|答案(1)|浏览(194)

**关闭。**此题需要debugging details。目前不接受答复。

编辑问题以包含desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem。这将帮助其他人回答这个问题。
4天前关闭。
Improve this question
我想重现下面的堆叠直方图,但不知道如何在matplotlib或seaborn中实现。seaborn堆栈函数根据色调为年份着色,而我希望所有堆栈都是相同的颜色。在matplotlib中我也没有找到一个简单的方法来做到这一点。

我使用的数据集是一个pandas数据框架,它具有直方图上标记的每年相应的百分比回报值。
输入具有以下形状(图中的值与实际值不同):
| 年份|PctReturns|
| --------------|--------------|
| 一九二一年|20.0|
| 小行星1922|-5.0|
| 一九二三年|50.0|
| 二零零五年|-35.0|

7dl7o3gd

7dl7o3gd1#

您可以使用Seaborn的heatmap

bins = np.arange(-60, 71, 10)

s = pd.cut(df['PctReturns'], bins=bins)

tmp = (
 df.sort_values(by='Year')
   .assign(PctReturns=s,
           n=lambda d: d.groupby('PctReturns').cumcount().add(1)
          )
   .pivot_table(index='n', columns='PctReturns', values='Year')
   .reindex(columns=s.cat.categories)
)
m = tmp.notna()

ax = sns.heatmap(m.astype(int).where(m), annot=tmp, fmt='g', cbar=False, linewidth=.5, square=True)
ax.invert_yaxis()

输出:

使用的输入:

Year  PctReturns
0  1921        20.0
1  1922        -5.0
2  1923        -6.0
3  1923        50.0
4  2005       -35.0

相关问题