我试图通过填充图案而不是(仅)颜色来实现差异化。我如何使用熊猫?
在matplotlib中可以通过传递hatch
可选参数来讨论here。我知道我也可以将该选项传递给大熊猫plot
,但我不知道如何告诉它为每个DataFrame
列使用不同的填充图案。
df = pd.DataFrame(rand(10, 4), columns=['a', 'b', 'c', 'd'])
df.plot(kind='bar', hatch='/');
对于颜色,colormap
选项描述为here。孵化有类似的东西吗?或者我可以通过修改Axes
返回的plot
对象来手动设置它吗?
答案 0 :(得分:16)
这有点hacky但是有效:
df = pd.DataFrame(np.random.rand(10, 4), columns=['a', 'b', 'c', 'd'])
ax = plt.figure(figsize=(10, 6)).add_subplot(111)
df.plot(ax=ax, kind='bar', legend=False)
bars = ax.patches
hatches = ''.join(h*len(df) for h in 'x/O.')
for bar, hatch in zip(bars, hatches):
bar.set_hatch(hatch)
ax.legend(loc='center right', bbox_to_anchor=(1, 1), ncol=4)
答案 1 :(得分:1)
此代码可让您在定义模式时更加自由,因此您可以拥有' //'等。
bars = ax.patches
patterns =('-', '+', 'x','/','//','O','o','\\','\\\\')
hatches = [p for p in patterns for i in range(len(df))]
for bar, hatch in zip(bars, hatches):
bar.set_hatch(hatch)