matplotlib - matplotlib 以零为中心的堆积条形图
问题描述
我有一个如下所示的数据集。
电汇 | 价值 | 类别 |
---|---|---|
吨 | 1 | 一种 |
F | 3 | 乙 |
吨 | 5 | C |
F | 7 | 一种 |
吨 | 8 | 乙 |
... | ... | ... |
所以,我想画一个像下面这样的条形图。相同的类别具有相同的位置
同一类别具有相同的位置,零居中的条形图,F 的数量是水平线下方的条形图,T 是上方的条形图。
如何使用 matplotlib.pyplot 制作此图表?或其他图书馆
我需要例子。
解决方案
一种方法是将False
值设为负值,然后创建一个barplot
带有T/F
as 色调的 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()
推荐阅读
- python - 根据数据框中的值从字典中删除嵌套的键值对
- asp.net-core - ASP.NET Core Web API 操作的永久不记名令牌身份验证
- python - conda环境需要pipwin
- c# - 在不使用开始表单或帖子的情况下将文本框的值获取到视图组件中
- python - 打开文件并将内容存储在变量中
- python - UnicodeEncodeError:“ascii”编解码器无法对位置 25-32 中的字符进行编码:序数不在范围内(128)
- python - 向量化前向传播
- python - 海龟子类“对象没有属性'_shown'”
- java - ISP 或 Windows 防火墙阻止 UDP 连接
- reactjs - 如何使用 mui datepicker 在 Reactjs 中过滤从和到特定日期的日期