python - 如何在 matplotlib 中删除环形图的偏离中心部分?

标签 python matplotlib plot

我已经解出了带有中心孔的环面上的拉普拉斯方程。 (图上的蓝红色颜色图部分: /image/oD6mz.jpg 。我想放弃该图的一部分(我在图上绘制的黑色圆圈之外的任何内容),并且我想要 black x 我画了一个新的、较小的圆盘的中心,其中有一个偏心的孔,该孔曾经是一个较大圆盘的中心孔。

澄清一下,我想得到这个:/image/oNwxG.jpg我还想知道是否可以以某种方式将这个裁剪磁盘的值保存在另一个数组中?:

这是迄今为止我发现的最接近我需要的东西:remove part of a plot in matplotlib 但是,我不知道如何在我的案例中实现它。我觉得我应该以某种方式定义一个新的网格,但我不确定如何告诉它在图中有一个偏心的孔,此外,这无助于保存较小磁盘的值- 中心孔进入新阵列。

这是我绘制原始环的代码:

import numpy as np
import matplotlib.pyplot as plt

#initial conditions
Nr = 50
N_phi = 50
radius = 10
r2 = 2
T1 = 35
T2 = 4


# define for plot
r = np.linspace(r2, radius, Nr)
phi = np.linspace(0, 2*np.pi, N_phi)
R, phi = np.meshgrid(r, phi)
X = R*np.cos(phi)
Y = R*np.sin(phi)


#initialise matrix
T = np.ones((Nr, N_phi))
#print(np.shape(T))

#add solution to laplace's equation to matrix T
for i in reversed(range(0,Nr)):
    T[:,i] = T1 + ((T2-        T1)/np.log(r2/radius))*np.log(r[i]/radius)

#plot
plt.figure()
yes = plt.contourf(X,Y,T,cmap='jet')
plt.colorbar(yes)
plt.show()

我希望有人能引导我走向正确的方向。谢谢。

最佳答案

作为第一次开始,可能会添加

T = np.ma.array(T) # mask a circle in the middle:
outside = np.sqrt((X + 3)**2 + (Y - 3)**2) > 5
T[outside] = np.ma.masked

就在 plt.figure() 之前,根据 https://matplotlib.org/gallery/images_contours_and_fields/contourf_demo.html#sphx-glr-gallery-images-contours-and-fields-contourf-demo-py

但我认为,如果在 XY 中以更高分辨率准备基本轮廓图,这看起来会更好...

PS:例如设置

#initial conditions
Nr = 500
N_phi = 500

让它看起来很锐利

关于python - 如何在 matplotlib 中删除环形图的偏离中心部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53897492/

相关文章:

python - 在 python/pandas 中部分基于自身计算列

python - 如何访问 Django Import Export 的 before_save_instance 中的行数据

python - Matplotlib - imshow twiny() 问题

python - 在线图中用标记突出显示单个点

python - 使用 imshow 绘制一行又一行

python - 在 kmeans 中绘制二维簇

python - 密码字段在表单值更新时显示哈希值

python - 简单的动态类型检查

python - matplotlib中图例中的重复项目?

python - 如何在 matplotlib 中调整树状图的分​​支长度(如在 astrodendro 中)? [Python]