制作一个具有一个零极点和两个极点的简单传递函数,然后绘制其零极点图:
import control
import matplotlib.pyplot as plt
tfx = control.tf([1,1],[1,1,1])
control.matlab.pzmap(tfx)
plt.show()
结果:Python显示一个有两个极点但没有零的图(python3.6)。 按照以下两个小修改重新执行上述操作:
^{pr2}$结果:Python显示一个带有两个极点和一个零的图。 我的诊断:matplotlib默认打印设置不显示圆标记“o”。 我的问题:我想使用matplotlib的默认绘图设置(因为它很漂亮)。我不想使用“经典”设置。如何更改默认设置以显示圆形标记?以下是我尝试过的:
mpl.rcParams['patch.force_edgecolor'] = True
mpl.rcParams['patch.edgecolor'] = 'k'
mpl.rcParams['boxplot.flierprops.markeredgecolor'] = 'k'
但这并不能改变结果。有什么想法吗?在
第二个稍微相关的问题:根据document on control module,控件.pzmap(tfx)而不是控件.matlab.pzmap(tfx)应绘制零极点图。但是,这将引发“module is not callable”(模块不可调用)错误。奇怪。。。在
在pzmap.py的第81行中,您发现
在这里,facecolor被硬编码为
^{pr2}$'none'
。因此,外部更改rcParams没有帮助。相反,从该行中删除facecolors
参数,使其看起来像相关问题 更多 >
编程相关推荐