python matplotlib 将字符串变量转换为轴属性

python matplotlib convert string variable to axes attributes

我不是一个真正的 python 人。我来自 Fortran 背景并试图理解面向对象的编程,所以如果我的问题很愚蠢,请原谅我! 我有以下简单的代码:

#!/usr/bin/env python

import matplotlib.pyplot as plt
import numpy as np


fig = plt.figure(figsize=(6,6))
ax1 = fig.add_axes([0.1,0.1,0.6,0.6])

a = ax1
ya = 'yaxis'

x = np.linspace(0.0, 2.*np.pi)
a.ya.set_ticks_position('left')

a.plot(x,np.sin(x))
plt.show()

现在我想将轴属性 yaxis 分配给变量 ya。显然 'yaxis' 是字符串,所以 ya 将是一个字符串变量。 所以,我的代码失败了:

Traceback (most recent call last):
  File "./t.py", line 14, in <module>
    a.ya.set_ticks_position('left')
AttributeError: 'Axes' object has no attribute 'ya'

我明白了这样做的原因(因为 ya 是一个字符串变量,而 a 是一个 class 对象并且需要某种数据类型的属性)。我的问题是如何将 ya = yaxis 转换为 aax1 将接受的适当变量。我知道在这种情况下这样做有点多余,但最终我会遍历许多轴及其属性,例如(ax1, ax2.......)xaxis, yaxis 我不想对它们进行硬编码。 任何帮助将不胜感激!

检查内置函数 getattrsetattr

getattr(object, attrname)
setattr(object, attrname, value)