为了账号安全,请及时绑定邮箱和手机立即绑定

使用辅助轴时的图例透明度

使用辅助轴时的图例透明度

慕的地10843 2021-03-29 16:23:25
辅助轴图的图例对于另一轴图是透明的。重现此问题的最小示例:import matplotlib.pyplot as pltax1 = plt.subplot(111)ax2 = ax1.twinx()ax2.plot([1, 2, 3], [0.3, 0.2, 0.1], 'r')  ax1.plot([1, 2, 3], [1, 2, 3], 'b', label='ax1')ax1.legend(loc=2)plt.show()我得到的输出是:如您所见,蓝色图的图例被红色图覆盖。重新排列绘图命令,更改alpha值或更改对象的z顺序无济于事。有什么方法可以使图例对所有图不透明?编辑:@ tcaswell:虽然您的答案适用于单个图例,但如果两个轴都有单独的图例,则它不起作用。在以下代码中,我添加了的标签ax2:import matplotlib.pyplot as pltplt.figure()ax1 = plt.subplot(111)ax2 = ax1.twinx()ax2.plot([1, 2, 3], [0.3, 0.2, 0.1], 'r', label='ax2')  ax1.plot([1, 2, 3], [1, 2, 3], 'b', label='ax1')ax1.legend(loc=2)ax2.legend(loc=1)ax1.set_zorder(1) # make it on topax1.set_frame_on(False) # make it transparentax2.set_frame_on(True) # make sure there is any backgroundplt.show()结果如下:虽然您可以采用更通用的方法来解决此问题,但是Figure.legend不幸的是,使用图例会将其放置在绘图之外。明确地放置它们loc会有点乏味,并且在缩放绘图时效果不佳。有更好的解决方案吗?
查看完整描述

2 回答

?
陪伴而非守候

TA贡献1757条经验 获得超8个赞

我使用bbox_to_anchor设置两个图例的位置,它们都显示在顶部。不知道为什么,但是有效。例如:


ax1.legend(bbox_to_anchor=(0.16,0.2))

ax2.legend(bbox_to_anchor=(1,0.2))


查看完整回答
反对 回复 2021-04-02
  • 2 回答
  • 0 关注
  • 193 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号