给定现有matplotlib轴对象kwargs
我想给现有的Axis对象一个关键字参数字典。这可能吗 例如给定现有matplotlib轴对象kwargs,matplotlib,Matplotlib,我想给现有的Axis对象一个关键字参数字典。这可能吗 例如 导入matplotlib.pyplot作为plt kwargs={'xlim':(0,2),'ylabel':'y'} 图,ax=plt.子批次() ax.给出_-kwargs(**kwargs) 我看到matplotlib.Axes类有一个**kwargs参数,但是(我很确定)它只在对象初始化期间可用,而不是在对象已经存在之后 编辑: 为了避免这种情况,下面是想做类似事情的背景 我发现自己经常做的是创建函数来绘制一些通用数据,我必须
导入matplotlib.pyplot作为plt
kwargs={'xlim':(0,2),'ylabel':'y'}
图,ax=plt.子批次()
ax.给出_-kwargs(**kwargs)
我看到matplotlib.Axes
类有一个**kwargs
参数,但是(我很确定)它只在对象初始化期间可用,而不是在对象已经存在之后
编辑:
为了避免这种情况,下面是想做类似事情的背景
我发现自己经常做的是创建函数来绘制一些通用数据,我必须添加5个以上的额外参数来处理轴的所有“set”方法:
def fancy\u绘图(数据arg1、数据arg2、xlim=None、ylabel=None):
图,ax=plt.子批次()
ax.plot(数据[data\u arg1],数据[data\u arg2])
如果xlim:ax.set_xlim(xlim)
if ylabel:ax.set_ylabel(ylabel)
是的,我们可以把你的kwargs
词汇当作方法和参数的口述
import matplotlib.pyplot as plt
kwargs = {'set_xlim': (0, 2), 'set_ylabel': 'y'}
fig, ax = plt.subplots()
for (method, arguments) in kwargs:
getattr(ax, method)(*arguments)
或者,如果所有方法都遵循set\u something
命名约定:
import matplotlib.pyplot as plt
kwargs = {'xlim': (0, 2), 'ylabel': 'y'}
fig, ax = plt.subplots()
for (method, arguments) in kwargs:
getattr(ax, f"set_{method}")(*arguments)
然后,您可以将getattr
部分包装在try except
中,以防您的词汇表包含不存在的ax
方法
for (method, arguments) in kwargs:
try:
getattr(ax, f"set_{method}")(*arguments)
except AttributeError:
print("Please everyone panic.")
我不确定在您的情况下是否有必要创建轴和图形。关于您的编辑,我相信单独创建图形和轴可能是更简单的方法。创建
fig=plt.figure()
,然后使用ax=fig.add\u子地块(**kwargs)
添加轴。这样,您仍然可以使用斧头和无花果对供以后使用。