我正在寻找一种简单的方法来添加阴影到matplotlib中的情节。我只想在特定的酒吧舱口,而不是为我所有的酒吧在情节。我不想手动设置每个酒吧。
0)这是我的df的一部分:
target withCR_RF withCR_ET withCR_LG withCR_Ridge
0 partA 0.102 0.100 -0.3 -0.3
1 partB 0.081 0.085 -0.3 -0.3
2 part -0.063 -0.050 -0.3 -0.3
1)这是我用于绘图的代码:
from matplotlib.colors import ListedColormap
cmap = ListedColormap(['#96C3EB', '#299438', '#B8B8B8', '#CCAC93'])
ax = df.plot.bar(x='target', colormap=cmap)
ax.set_xlabel(None)
ax.set_ylabel('prediction performance R²')
ax.set_title('comparing pipelines of prediction of executive function variables')
plt.xticks(rotation=45, ha='right')
plt.show()
2)现在,我想以与颜色相同的方式实现阴影。我不希望所有的酒吧都被孵化,但只需要第一个,所以我尝试了这个,这不起作用。
cmap = ListedColormap(['#96C3EB', '#299438', '#B8B8B8', '#CCAC93'])
hatches = ['++', '', '', '']
ax = df.plot.bar(x='target', colormap=cmap, hatch=hatches)
ax.set_xlabel(None)
ax.set_ylabel('prediction performance R²')
ax.set_title('comparing pipelines of prediction of executive function variables')
plt.xticks(rotation=45, ha='right')
plt.show()
我要么让所有的酒吧孵化要么一个都不孵化。我不想为所有的酒吧舱口,我不想适应每个酒吧手动。
3)@ Trambi,谢谢你的建议。这是现在的工作,但不是所有的浅蓝色酒吧。有六个浅蓝色的条带CR_RF(因为有6个目标),但其中只有一个条发生了变化。我怎么能改变这六个人呢?
cmap = ListedColormap(['#96C3EB', '#299438', '#B8B8B8', '#CCAC93'])
#hatches = ['++', '', '', '']
#hatches = ['', '++', '', '', '', '', 'xx', '', '', '']
ax = df.plot.bar(x='target', colormap=cmap, hatch=hatches)
ax.set_xlabel(None)
ax.set_ylabel('prediction performance R²')
ax.set_title('comparing pipelines of prediction of executive function variables')
plt.xticks(rotation=45, ha='right')
for lbl, patch in zip(ax.get_xticklabels() , ax.patches):
if lbl.get_text() == 'withCR_RF':
patch.set_hatch('*')
patch.set_edgecolor(patch.get_facecolor())
patch.set_facecolor('none')
plt.show()
4)@Mozway,谢谢你的回答。您的最后一个选项非常适合我的需要,但是否有可能索引多个酒吧?不幸的是,这行不通。我想把所有浅蓝色的条都画上阴影。
cmap = ListedColormap(['#96C3EB', '#299438', '#B8B8B8', '#CCAC93'])
hatches = ['++', '', '', '']
hatches = ['', '++', '', '', '', '', 'xx', '', '', '']
ax = df.plot.bar(x='target', colormap=cmap)
ax.patches[0,1,2,3].set_hatch('+') #see here please
ax.set_xlabel(None)
ax.set_ylabel('prediction performance R²')
ax.set_title('comparing pipelines of prediction of executive function variables')
plt.xticks(rotation=45, ha='right')
plt.show()
2条答案
按热度按时间wtzytmuj1#
你想要什么不清楚。
根据您的数据,您可以用途:
或者:
最后一个选项,如果要手动更改一个修补程序:
tzcvj98z2#
对我来说,下面的代码工作得最好,因为我不需要定义每个轴,但可以轻松地更改和编辑我想要更改的每一条。在我的例子中,我可以通过设置顺序来完美地指定目标的条件。这段代码仍然很简单,我可以很容易地修改它来创建很多类似的情节。