我是 python 和 matplotlib 的新手。
我试图突出显示 matplotlib 中现有绘图中符合特定标准的几个点。
初始绘图的代码如下:
pl.plot(t,y)
pl.title('Damped Sine Wave with %.1f Hz frequency' % f)
pl.xlabel('t (s)')
pl.ylabel('y')
pl.grid()
pl.show()
在上图中,我想突出显示一些符合标准 abs(y)>0.5 的特定点。提出要点的代码如下:
markers_on = [x for x in y if abs(x)>0.5]
我尝试使用参数“markevery”,但它抛出一个错误说
'markevery' is iterable but not a valid form of numpy fancy indexing;
给出错误的代码如下:
pl.plot(t,y,'-gD',markevery = markers_on)
pl.title('Damped Sine Wave with %.1f Hz frequency' % f)
pl.xlabel('t (s)')
pl.ylabel('y')
pl.grid()
pl.show()
The markevery
绘图函数的参数接受不同类型的输入。根据输入类型的不同,它们的解释也不同。找到一个不错的可能性列表这个 matplotlib 示例.
如果您有显示标记的条件,则有两种选择。假设t
and y
是 numpy 数组,其中一个有import
ed numpy as np
,
-
要么指定布尔数组,
plt.plot(t,y,'-gD',markevery = np.where(y > 0.5, True, False))
or
-
an 索引数组.
plt.plot(t,y,'-gD',markevery = np.arange(len(t))[y > 0.5])
完整示例
import matplotlib.pyplot as plt
import numpy as np; np.random.seed(42)
t = np.linspace(0,3,14)
y = np.random.rand(len(t))
plt.plot(t,y,'-gD',markevery = np.where(y > 0.5, True, False))
# or
#plt.plot(t,y,'-gD',markevery = np.arange(len(t))[y > 0.5])
plt.xlabel('t (s)')
plt.ylabel('y')
plt.show()
导致
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)