我正在尝试为python对象属性分配一个变量。这是我一直在尝试做的事情:
from read import *
import matplotlib.pyplot as plt
import numpy as np
data=table('data.txt')
semi=data['data']['a']
ecc = data['data']['e']
incl= data['data']['i']
bias = data['data']['bias']
fig = plt.figure()
ax1 = fig.add_axes([0.06, 0.1, 0.4, 0.35])
ax2 = fig.add_axes([0.06, 0.6, 0.4, 0.35])
ax3 = fig.add_axes([0.55, 0.6, 0.4, 0.35])
ax4 = fig.add_axes([0.55, 0.1, 0.4, 0.35])
aaa = getattr(ax1,'xaxis')
nax={'ax1':ax1,'ax2':ax2,'ax3':ax3,'ax4':ax4}
for a in sorted(nax):
aax = {'xaxis':nax[a].get_xaxis()}
for axis in ['bottom','left']:
nax[a].spines[axis].set_linewidth(0.5)
for axis in ['right','top']:
nax[a].spines[axis].set_visible(False)
for b in sorted(aax):
nax[a].b.set_tick_position('bottom')
当我运行我的代码时,它说:
Traceback (most recent call last):
File "./test1.py", line 35, in <module>
ax1.b.set_ticks_position('bottom')
AttributeError: 'Axes' object has no attribute 'b'
最初在以下情况下有效:
ax1.xaxis.set_tick_position('bottom')
但是为了创建绘图模板,我需要使XAxis属性成为变量。 知道如何使上述功能起作用吗?
答案 0 :(得分:2)
尝试使用x.set_tick_position('bottom')
而不是ax1.x.set_tick_position('bottom')
。 x
已经是ax1
对象的属性,因此您无需再次访问ax1
。
此外,如果您静态知道属性名称,则不需要getattr
。您可以只做x = ax1.xaxis
。
答案 1 :(得分:0)
我建议直接在对象上工作。
nax=[ax1,ax2,ax3,ax4]
for ax in nax:
for axis in ['bottom','left']:
ax.spines[axis].set_linewidth(0.5)
for axis in ['right','top']:
ax.spines[axis].set_visible(False)
ax.xaxis.set_tick_position('bottom')