在twinx()之后使用axhline时,绘制的水平线仍然遵循第一个y轴的坐标。
关于如何使其缩放到第二个y轴的任何提示?
答案 0 :(得分:2)
您可以从Axes对象中调用axhline
方法,如下例所示,或者使用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()
答案 1 :(得分:0)
如果您无权访问twinx()
的返回值(例如,当Pandas调用它时),则可以使用Axes对象的left_ax
访问左轴和右轴和right_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