python 利用matplotlib选择振荡数据中的特定等值线进行绘图

2hh7jdfx  于 2022-10-30  发布在  Python
关注(0)|答案(1)|浏览(180)

我有一些振荡数据,我想在其中添加一条特定的等高线。例如,数据多次通过某个值,我想选择该值的一个特定示例,用等高线突出显示。例如,考虑一个贝塞尔函数。下面,我用一个级别0.2绘制等高线。我想选择只显示外等高线,但是,而不是其他内部的。

from scipy.special import jv
import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(-20,20,num=500)
y = np.linspace(-20,20,num=500)
[X,Y] = np.meshgrid(x,y)
Z = jv(1,np.sqrt(X**2.+Y**2.))

fig = plt.figure()
ax = fig.add_subplot(111)
cb = ax.pcolormesh(X,Y,Z)
ax.contour(X,Y,Z,[.2],linestyles='dashed')
cbar = fig.colorbar(cb)
plt.show()

如果有帮助的话,这是我的实际数据图(用于创建的代码太长,无法包含在这里)。我只想绘制最外面的紫色轮廓:

谢谢你

gcmastyq

gcmastyq1#

让我们看看你喜欢这个;)...我以不可见的方式绘制所有轮廓线,但提取轮廓对象并重新绘制第一个轮廓线(我只是通过反复试验才得出的结果,在您的情况下可能会有所不同)。

from scipy.special import jv
import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(-20, 20, num=500)
y = np.linspace(-20, 20, num=500)
[X, Y] = np.meshgrid(x, y)
Z = jv(1, np.sqrt(X**2. + Y**2.))

fig = plt.figure()
ax = fig.add_subplot(111)
cb = ax.pcolormesh(X, Y, Z)
cont = ax.contour(X, Y, Z, [.2], alpha=0)  # alpha = 0 -> invisible
the_interesting_one = cont.allsegs[0][0]
plt.plot(the_interesting_one[:, 0], the_interesting_one[:, 1], "k--")

cbar = fig.colorbar(cb)
plt.show()

相关问题