gpt4 book ai didi

python - Tricontourf 地 block ,中间有一个洞。

转载 作者:太空宇宙 更新时间:2023-11-03 11:21:42 34 4
gpt4 key购买 nike

我在常规笛卡尔网格上定义了一些数据。我只想显示其中一些具有基于中心半径的条件。这将有效地创建一个在中心有一个孔的环状结构。因此,我无法使用 imshowtricontourftripcolor 是我发现的处理方法。我的代码看起来像这样:

R = np.sqrt(x**2+y**2)
flag = (R<150)*(R>10)
plt.tricontourf(x[flag], y[flag], data[flag], 100)

其中 xydata 定义的网格。这里的问题是 tricontourftripcolor 都试图填充环的中间,我希望可以留空。

更具体地说,左边的那个和我想要的差不多,但是我只能用上面这段代码得到右边的那个。

Sample plots

最佳答案

下面显示了如何根据条件屏蔽绘图的某些部分。使用 imshow 是完全可行的,下面的脚本就是这样做的。

想法是将图中所有不需要的部分设置为 nan。要使 nan 值消失,我们可以将它们的 alpha 设置为 0,基本上使绘图在这些点处透明。

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(-150, 150, 300)
y = np.linspace(-150, 150, 300)
X,Y = np.meshgrid(x,y)
data = np.exp(-(X/80.)**2-(Y/80.)**2)

R = np.sqrt(X**2+Y**2)
flag =np.logical_not( (R<110) * (R>10) )
data[flag] = np.nan

palette = plt.cm.jet
palette.set_bad(alpha = 0.0)

im = plt.imshow(data)

plt.colorbar(im)
plt.savefig(__file__+".png")
plt.show()

enter image description here


只是要补充一点, tricontourf 也可以完成您的要求。 This example from the matplotlib gallery准确显示您要查找的内容,而 this question on SO以更全面的方式处理类似的问题。

关于python - Tricontourf 地 block ,中间有一个洞。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41713813/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com