首页 > 解决方案 > matplotlib 以零为中心的堆积条形图

问题描述

我有一个如下所示的数据集。

电汇 价值 类别
1 一种
F 3
5 C
F 7 一种
8
... ... ...

所以,我想画一个像下面这样的条形图。相同的类别具有相同的位置

同一类别具有相同的位置,零居中的条形图,F 的数量是水平线下方的条形图,T 是上方的条形图。 在此处输入图像描述

如何使用 matplotlib.pyplot 制作此图表?或其他图书馆

我需要例子。

标签: matplotlib

解决方案


一种方法是将False值设为负值,然后创建一个barplot带有T/Fas 色调的 Seaborn。如果您无法更改原始数据,您可能需要制作数据的副本。

import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
import numpy as np

data = pd.DataFrame({'T/F': ['T', 'F', 'T', 'F', 'T'],
                     'Value': [1, 3, 5, 7, 8],
                     'category': ['A', 'B', 'C', 'A', 'B']})
data['Value'] = np.where(data['T/F'] == 'T', data['Value'], -data['Value'])
ax = sns.barplot(data=data, x='category', y='Value', hue='T/F', dodge=False, palette='turbo')
ax.axhline(0, lw=2, color='black')
plt.tight_layout()
plt.show()

sns.barplot 加入正面和负面


推荐阅读