如何使用颜色和阴影绘制matplotlib(Pandas)条形图?

flmtquvp  于 2023-01-07  发布在  其他
关注(0)|答案(1)|浏览(191)

如何对数据应用不同的影线,就像我可以在元组中定义不同的颜色一样?

#!/usr/bin/env python3
import pandas
from matplotlib import pyplot as plt

data = {"Label 1": [2,3,5,10], "Label 2": [1,2,4,8]}
pandas.DataFrame(data).plot.bar(color=("grey", "white"), hatch=("/", "*"))
plt.show()

使用此代码,影线将应用于所有条形图。

阴影线被应用到所有的条形图上。相反,我宁愿让每个数据集使用自己的阴影线颜色组合。
我知道我可以手动修改图中的每个面片,如下所示:

ax = pandas.DataFrame(data).plot.bar(color=("grey", "white"), legend=False)
for container, hatch in zip(ax.containers, ("/", "*")):
    for patch in container.patches:
        patch.set_hatch(hatch)
ax.legend(loc='upper center')
plt.show()

手动将图案填充设置为面片:

这是一种hacky,但最好的解决方案,我发现通过this discussion
在组合图中将影线应用于不同数据集的正确方法是什么?

rt4zxlrg

rt4zxlrg1#

可以单独绘制每个系列:

import pandas as pd
from matplotlib import pyplot as plt

data = pd.DataFrame({"Label 1": [2, 3, 5, 10], "Label 2": [1, 2, 4, 8]})
data['Label 1'].plot.bar(legend=True, label='Label 1', color="red", width=-0.2, align='edge', hatch='/')
data['Label 2'].plot.bar(legend=True, label='Label 2', color="green", width=0.2, align='edge', hatch='*')
plt.show()

相关问题