gpt4 book ai didi

python - matplotlib:如何获取现有 twinx() 轴的句柄?

转载 作者:行者123 更新时间:2023-11-28 19:09:15 31 4
gpt4 key购买 nike

我想创建一个具有两个 y 轴的图形,并在我的代码中的不同点(来自不同的函数)向每个轴添加多条曲线。

在第一个函数中,我创建了一个图形:

   import matplotlib.pyplot as plt
from numpy import *

# Opens new figure with two axes
def function1():
f = plt.figure(1)
ax1 = plt.subplot(211)
ax2 = ax1.twinx()

x = linspace(0,2*pi,100)
ax1.plot(x,sin(x),'b')
ax2.plot(x,1000*cos(x),'g')

# other stuff will be shown in subplot 212...

现在,在第二个函数中,我想为每个已创建的轴添加一条曲线:

   def function2():
# Get handles of figure, which is already open
f = plt.figure(1)
ax3 = plt.subplot(211).axes # get handle to 1st axis
ax4 = ax3.twinx() # get handle to 2nd axis (wrong?)

# Add new curves
x = linspace(0,2*pi,100)
ax3.plot(x,sin(2*x),'m')
ax4.plot(x,1000*cos(2*x),'r')

现在我的问题是,在执行第二个代码块后,第一个代码块中添加的绿色曲线不再可见(所有其他代码块都是)。

我觉得是这条线的原因

    ax4 = ax3.twinx()

在我的第二个代码块中。它可能会创建一个新的 twinx() 而不是返回现有的句柄。

如何正确获取绘图中现有双轴的句柄?

最佳答案

你可以使用get_shared_x_axes (get_shared_y_axes) 获取由 twinx (twiny) 创建的轴的句柄:

# creat some axes
f,a = plt.subplots()

# create axes that share their x-axes
atwin = a.twinx()

# in case you don't have access to atwin anymore you can get a handle to it with
atwin_alt = a.get_shared_x_axes().get_siblings(a)[0]

atwin == atwin_alt # should be True

关于python - matplotlib:如何获取现有 twinx() 轴的句柄?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42674563/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com