【发布时间】:2018-08-19 05:57:05
【问题描述】:
我想知道在使用 pandas 提供的绘图时,是否有办法将条形图中重叠的条形居中。
当使用 twiny 时,我们得到不同地块对应的条形重叠,这非常实用。当它们具有相同的宽度时,它们将完全居中。
但是,当更改其中一组的宽度时,它们将不再居中,这使得情节看起来很混乱,如下所示:
cat 1 和 cat 2 的第一个黑色条完全位于相应的蓝色条的中心。然而,下一个黑条不在橙色条的中心,第三个黑条不在绿条的中心。
从这里可以看出,当它们具有相同的宽度时,它们完全居中。那么当它们没有相同的宽度时,它们如何以相同的方式居中呢?:
这是创建当前未居中图的代码:
from io import StringIO
import pandas as pd
import matplotlib.pyplot as plt
txt = '''Category COLUMN1 COLUMN2 COLUMN3
A 0.5 3 Cat1
B 0.3 5 Cat1
C 0.7 4 Cat1
A 0.4 3 Cat2
B 0.8 5 Cat2
C 0.3 4 Cat2
'''
df = pd.read_table(StringIO(txt), sep="\s+")
order = ['Cat1', 'Cat2']
fig, ax = plt.subplots()
ax2 = ax.twiny()
col1 = pd.pivot_table(df,index='COLUMN3',columns='Category',values='COLUMN1').reindex(order)
col1.plot(kind='bar', ax=ax, edgecolor='Black', lw=1, color='black')
col2 = pd.pivot_table(df,index='COLUMN3',columns='Category',values='COLUMN2').reindex(order)
col2.plot(kind='bar', ax=ax2, legend=False, alpha=0.7)
ax2.xaxis.set_visible(False)
plt.show()
编辑
这是想要的图片,请原谅“糟糕的图形编辑”。:
【问题讨论】:
标签: python pandas matplotlib