在matplotlib中将y轴标签添加到次要y轴

我可以使用plt.ylabel将y标签添加到左y轴,但如何将它添加到次要y轴?

table = sql.read_frame(query,connection)


table[0].plot(color=colors[0],ylim=(0,100))
table[1].plot(secondary_y=True,color=colors[1])
plt.ylabel('$')
433403 次浏览

最好的方法是直接与axes对象交互

import numpy as np
import matplotlib.pyplot as plt
x = np.arange(0, 10, 0.1)
y1 = 0.05 * x**2
y2 = -1 *y1


fig, ax1 = plt.subplots()


ax2 = ax1.twinx()
ax1.plot(x, y1, 'g-')
ax2.plot(x, y2, 'b-')


ax1.set_xlabel('X data')
ax1.set_ylabel('Y1 data', color='g')
ax2.set_ylabel('Y2 data', color='b')


plt.show()

example graph

我现在没有使用Python的权限,但在我的脑海中:

fig = plt.figure()


axes1 = fig.add_subplot(111)
# set props for left y-axis here


axes2 = axes1.twinx()   # mirror them
axes2.set_ylabel(...)

有一个简单的解决方案,不需要打乱matplotlib:只需要熊猫。

调整原示例:

table = sql.read_frame(query,connection)


ax = table[0].plot(color=colors[0],ylim=(0,100))
ax2 = table[1].plot(secondary_y=True,color=colors[1], ax=ax)


ax.set_ylabel('Left axes label')
ax2.set_ylabel('Right axes label')

基本上,当给出secondary_y=True选项时(即使也传递了ax=ax), pandas.plot返回一个不同的轴,我们用它来设置标签。

我知道这个问题很久以前就有答案了,但我认为这种方法是值得的。

对于每一个偶然看到这篇文章的人,因为提到了熊猫, 您现在有了非常优雅和直接的选项直接访问 当ax.right_ax

时,熊猫的secony_y轴

因此,转述最初发布的例子,你可以这样写:

table = sql.read_frame(query,connection)


ax = table[[0, 1]].plot(ylim=(0,100), secondary_y=table[1])
ax.set_ylabel('$')
ax.right_ax.set_ylabel('Your second Y-Axis Label goes here!')

(这已经在这些帖子中提到过:1 2)

很少loc的简单示例:

plot(y1)
plt.gca().twinx().plot(y2, color = 'r') # default color is same as first ax

解释:

ax = plt.gca()    # Get current axis
ax2 = ax.twinx()  # make twin axis based on x
ax2.plot(...)     # ...