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
转换为 a
或 ax1
将接受的适当变量。我知道在这种情况下这样做有点多余,但最终我会遍历许多轴及其属性,例如(ax1, ax2.......)
和 xaxis, yaxis
我不想对它们进行硬编码。
任何帮助将不胜感激!
检查内置函数 getattr
和 setattr
。
getattr(object, attrname)
setattr(object, attrname, value)
我不是一个真正的 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
转换为 a
或 ax1
将接受的适当变量。我知道在这种情况下这样做有点多余,但最终我会遍历许多轴及其属性,例如(ax1, ax2.......)
和 xaxis, yaxis
我不想对它们进行硬编码。
任何帮助将不胜感激!
检查内置函数 getattr
和 setattr
。
getattr(object, attrname)
setattr(object, attrname, value)