4

在 twinx() 之后使用 axhline 时,绘制的水平线仍然遵循第一个 y 轴的坐标。

关于如何使其缩放到第二个 y 轴的任何提示?

4

2 回答 2

2

axhline您可以从 Axes 对象调用该方法,如下例所示,或者使用sca.

import numpy as np
import matplotlib.pyplot as plt

x = np.arange(0, 10, 0.1)
y1 = np.sin(x)
y2 = 2.0 * np.cos(x)

fig = plt.figure()
ax1 = plt.subplot(111)
ax2 = ax1.twinx()

ax1.axhline( 0.5, 0.1, 0.5, color='r', lw=3)
ax2.axhline(-0.5, 0.5, 0.9, color='b', lw=3)

ax1.plot(x, y1, 'r', lw=2)
ax2.plot(x, y2, 'b', lw=2)

plt.show()
于 2013-03-20T18:13:32.997 回答
1

如果您无法访问(例如当 Pandas 为您调用它时)的返回值,您可以使用 Axes 对象的和属性twinx()访问左右轴。left_axright_ax

只有其中一个会出现,因为每个都链接到另一个轴。

  • 如果您有左轴的句柄,则其right_ax属性将指向链接的右轴。
  • 如果您有右轴的句柄,它的left_ax属性将指向链接的左轴。

例如:

df = pandas.DataFrame({'d1': numpy.random.rand(10), 
                       'd2': numpy.random.rand(10) * 10})
ax = df.plot(secondary_y=['d2'])  # returns the left axis
ax.axhline(y=0.5, alpha=0.5)      # draw a line from it
ax.right_ax.axhline(y=10, color="red", alpha=0.5)  # draw a line from the right axis

熊猫情节()输出

于 2018-10-17T12:16:37.047 回答