【问题标题】:Controlling the tracker when using twinx使用 twinx 时控制跟踪器
【发布时间】:2011-10-05 12:00:17
【问题描述】:

右下角的跟踪器(以红色突出显示)报告相对于右侧 y 轴的 y 值。

如何让跟踪器报告相对于左侧 y 轴的 y 值?

import matplotlib.pyplot as plt
import numpy as np

np.random.seed(6)
numdata = 100
t = np.linspace(0.05, 0.11, numdata)
y1 = np.cumsum(np.random.random(numdata) - 0.5) * 40000
y2 = np.cumsum(np.random.random(numdata) - 0.5) * 0.002

fig = plt.figure()

ax1 = fig.add_subplot(111)
ax2 = ax1.twinx()

ax1.plot(t, y1, 'r-', label='y1')
ax2.plot(t, y2, 'g-', label='y2')

ax1.legend()
plt.show()

我知道将 y1y2 交换将使跟踪器报告 y1 值, 但这也将y1 标记放在右侧,这不是我想要发生的。

ax1.plot(t, y2, 'g-', label='y2')
ax2.plot(t, y1, 'r-', label='y1')

【问题讨论】:

    标签: python matplotlib


    【解决方案1】:

    啊,找到了:ax.yaxis.set_ticks_position("right")。 您可以交换 y 轴的位置,而不是尝试“控制跟踪器”。

    ax1.yaxis.set_ticks_position("right")
    ax2.yaxis.set_ticks_position("left")
    
    ax1.plot(t, y2, 'g-', label='y1')
    ax2.plot(t, y1, 'r-', label='y2')
    

    AFAIK,当使用twinx 时,跟踪器始终跟随ax2

    【讨论】:

      【解决方案2】:

      请注意,如果您在 ax1 和 ax2 之后创建 ax3= ax1.twiny() 轴,则跟踪器会转到 ax3 并且您会再次报告 y1 值。

      import matplotlib.pyplot as plt
      import numpy as np
      
      np.random.seed(6)
      numdata = 100
      t = np.linspace(0.05, 0.11, numdata)
      y1 = np.cumsum(np.random.random(numdata) - 0.5) * 40000
      y2 = np.cumsum(np.random.random(numdata) - 0.5) * 0.002
      
      fig = plt.figure()
      
      ax1 = fig.add_subplot(111)
      ax2 = ax1.twinx()
      
      ax1.plot(t, y1, 'r-', label='y1')
      ax2.plot(t, y2, 'g-', label='y2')
      
      ax1.legend()
      ax3 = ax1.twiny()
      ax3.set_xticks([])
      plt.show()
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-06-15
        • 1970-01-01
        • 1970-01-01
        • 2012-11-09
        • 2013-05-15
        • 1970-01-01
        相关资源
        最近更新 更多