Python 具有两个y轴的熊猫中的Plot():第二行存储在哪里?

Python 具有两个y轴的熊猫中的Plot():第二行存储在哪里?,python,pandas,matplotlib,Python,Pandas,Matplotlib,我正在使用pandas中的集成绘图功能生成一个具有两个y轴的图形。这很有效,图例甚至指向第二个数据集的右y轴。但这位传奇人物的地位并不好 但是,当我更新图例位置时,我会得到两个图例,一个是正确的“A”,另一个是在不方便的位置的“B right”,另一个是错误的“A”,仅在所选位置 因此,现在我想自己生成一个图例,并正在寻找第二个图例,但它不包含在ax环境中 import pandas as pd df = pd.DataFrame({"A":[1,2,3],"B":[1/4,1/5,1/6]})

我正在使用pandas中的集成绘图功能生成一个具有两个y轴的图形。这很有效,图例甚至指向第二个数据集的右y轴。但这位传奇人物的地位并不好

但是,当我更新图例位置时,我会得到两个图例,一个是正确的“A”,另一个是在不方便的位置的“B right”,另一个是错误的“A”,仅在所选位置

因此,现在我想自己生成一个图例,并正在寻找第二个图例,但它不包含在ax环境中

import pandas as pd
df = pd.DataFrame({"A":[1,2,3],"B":[1/4,1/5,1/6]})
ax = df.plot(secondary_y=['B'])
len(ax.lines)
>>> 1
我的最终目标是能够移动正确的图例,但我相信我可以手动放置图例,只要我能够访问第二行容器

如果我有,我将通过调用df.plot…,legend=None来抑制原始图例,并执行类似plt.legend[ax.lines[0],ax.lines[1],[A','B right'],loc='center left',bbox_to_anchor=1.2,0.5的操作。但是ax只存储第一行A,第二行在哪里


此外,ax.get_legend_句柄_标签仅包含[]和['A']。

您可以创建两个轴。每个包含一行。因此,您需要在轴上循环,并从每个轴上获取线

import numpy as np
import pandas as pd

df = pd.DataFrame({"A":[1,2,3],"B":[1/4,1/5,1/6]})
ax = df.plot(secondary_y=['B'])

lines = np.array([axes.lines for axes in ax.figure.axes]).flatten()
print(lines)
但是,为了创建单个图例,您可以只使用图形图例

import pandas as pd
import matplotlib.pyplot as plt

df = pd.DataFrame({"A":[1,2,3],"B":[1/4,1/5,1/6]})
ax = df.plot(secondary_y=['B'], legend=False)

ax.figure.legend()
plt.show()

创建两个轴。每个包含一行。因此,您需要在轴上循环,并从每个轴上获取线

import numpy as np
import pandas as pd

df = pd.DataFrame({"A":[1,2,3],"B":[1/4,1/5,1/6]})
ax = df.plot(secondary_y=['B'])

lines = np.array([axes.lines for axes in ax.figure.axes]).flatten()
print(lines)
但是,为了创建单个图例,您可以只使用图形图例

import pandas as pd
import matplotlib.pyplot as plt

df = pd.DataFrame({"A":[1,2,3],"B":[1/4,1/5,1/6]})
ax = df.plot(secondary_y=['B'], legend=False)

ax.figure.legend()
plt.show()