Python matplotlib使用单个命令将多个变量指定给轴实例

Python matplotlib使用单个命令将多个变量指定给轴实例,python,matplotlib,Python,Matplotlib,有没有一种方法可以将字典传递给axes方法,以一次性设置所有实例变量,而无需分别调用.set\u xlim()、.set\u ylim()等等?我知道Matlab有这个功能,我也认为Matplotlib也有这个功能,但找不到文档。它是(另请参见getp) 举个简单的例子: import matplotlib.pyplot as plt linestyle = dict(color='red', marker='^', linestyle='--', linewidth=2) fig, ax

有没有一种方法可以将字典传递给axes方法,以一次性设置所有实例变量,而无需分别调用
.set\u xlim()
.set\u ylim()
等等?我知道Matlab有这个功能,我也认为Matplotlib也有这个功能,但找不到文档。

它是(另请参见
getp

举个简单的例子:

import matplotlib.pyplot as plt

linestyle = dict(color='red', marker='^', linestyle='--', linewidth=2)

fig, ax = plt.subplots()
line, = ax.plot(range(10))

plt.setp(ax, xlim=[-1, 12], ylim=[-5, 12], xlabel='X-axis')
plt.setp(line, **linestyle)

plt.show()

setp
getp
是“matlab isms”,所以很多人觉得它们是“非音速的”,除非绝对必要,否则不应该使用

显然,您可以通过其他方式(例如,使用
ax.axis([xmin,xmax,ymin,ymax])
设置轴限制,或者在调用
plot
时仅扩展
linestyle
dict)

setp
仍然非常有用。它自动对艺术家序列进行操作,因此您可以执行类似于
plt.setp([ax1,ax2,ax3],**参数)
的操作。这对于像滴答声和滴答声标签这样的东西特别方便,因为你经常同时操作一群艺术家


它还允许matplotlib艺术家进行简单的内省。尝试调用
plt.setp(ax)
查看所有参数的列表,或
plt.setp(line,'marker')
查看
line.set\marker的所有有效参数的列表

谢谢!那怎么会是非音速的呢?太棒了。我无法想象为什么冗长的
set
方法会带来任何实用或美学上的优势。我同意
setp
getp
非常方便。setter和getter之所以存在,部分是因为它们早于python的属性,但在本例中,它们允许
setp
在没有大量“神奇”代码的情况下工作。它只是寻找以“set”开头的方法(当然,您仍然可以使用属性来完成这项工作)。不管怎样,我完全同意setter和getter是matplotlib的一些更大的缺点。另一方面,所有matplotlib美工人员都有一个
artist.set
artist.get
方法,允许大多数相同的功能。