当我将传奇移出情节时,传奇失去了第二位艺术家

Posted

技术标签:

【中文标题】当我将传奇移出情节时,传奇失去了第二位艺术家【英文标题】:Legend loses second artist when I move it outside plot 【发布时间】:2018-11-01 18:21:46 【问题描述】:

当我在绘图中添加第二个数据系列(带有辅助 y 轴)并尝试移动图例时,我失去了对第二个系列的引用。如果我不尝试移动图例位置,它会起作用,但最佳情况下我想将图例放在情节之外。有没有快速解决方法?

这在图例中有两个系列标签:

import pandas as pd
import numpy as np

x = np.arange(0,100,1)
y1 = x
y2 = x**2

tempDF = pd.DataFrame('y1': y1, 'y2': y2, index=x)

ax = tempDF.plot(y='y1')
tempDF.plot(y='y2', ax=ax, secondary_y=True)

Default behavior

当我添加以下代码来移动图例时,我丢失了第二个系列标签:

ax.legend(loc=(1.15,.9))

Legend loses second series

有简单的解决方法吗?

【问题讨论】:

【参考方案1】:

首先,你当然可以为每个轴添加一个图例,

ax = tempDF.plot(y='y1')
ax2 = tempDF.plot(y='y2', ax=ax, secondary_y=True)

ax.legend(loc=(0.9,.9))
ax2.legend(loc=(0.9,.8))

要将两者放在同一个图例中,您可以从各自的图例句柄和标签创建图例,

ax = tempDF.plot(y='y1')
ax2 = tempDF.plot(y='y2', ax=ax, secondary_y=True)

h1, l1 = ax.get_legend_handles_labels()
h2, l2 = ax2.get_legend_handles_labels()
ax.legend(h1+h2, l1+l2, loc=(0.9,.9))

另一种方法是使用图形图例。

ax = tempDF.plot(y='y1')
tempDF.plot(y='y2', ax=ax, secondary_y=True)

ax.figure.legend(loc=(0.9,.9))

请注意,此图例可能仅适用于较新的 matplotlib 版本。另请注意,loc 的坐标现在是图形坐标而不是轴坐标。

【讨论】:

这行得通 - 谢谢!我尝试了图例,但我目前已降级为一个非常旧版本的 matplotlib。

以上是关于当我将传奇移出情节时,传奇失去了第二位艺术家的主要内容,如果未能解决你的问题,请参考以下文章

你如何在 Seaborn 中为 kde 情节创造传奇?

移动互联网10年,传奇一直在发生

r - 使用“R 中情节之外的传奇”的答案,但仍然存在一些问题

黑客是什么?揭开郭盛华的神秘面纱,讲解他不为人知传奇故事

Matplotlib 传奇不会出现

已通过身份验证搜索艺术家的热门曲目并创建播放列表,但在将曲目添加到播放列表时失去身份验证