我想在图外添加一个文本框,其中我只是说正值或负值的数量。每种类型的文本必须与图中的数据具有相同的颜色,因此对于正文本必须为红色,对于负文本必须为蓝色。
下面是我写的代码:
text_plot = (f"number of positive neta : {nb_pos_neta}\nnumber of negative neta : {nb_neg_neta}")
fig, ax = plt.subplots(figsize =(10,7))
ax.scatter(time_det, neta, c = np.sign(neta), cmap="bwr", s=4, label='Rapport of polarisation')
plt.title('Evolution of rapport of polarisation - Aluminium')
plt.xlabel('Time [min]')
plt.ylabel('Rapport [-]')
plt.figtext(1.05, 0.5, text_plot, ha="right", fontsize=10, bbox={"facecolor":"white","alpha":0.5, "pad":5})
plt.tight_layout()
plt.savefig("Evolution of rapport of polarisation - (Aluminium).png")
plt.show()
结果是这样的:
2条答案
按热度按时间vzgqcmou1#
这里的技巧是使用matplotlib的补丁来获取自定义图例。因为我需要生成一些假数据来让事情看起来很接近(并且不想深入研究像neta和time_det这样的东西,因为它们不是你的问题的核心),所以我使用numpy的
where
和size
进行了重构,用于着色和计数点。这样(减去y轴范围)得到的图像与您指定的图像非常接近。
yzuktlbb2#
为什么不使用标准选择和标签?