我已经解出了带有中心孔的环面上的拉普拉斯方程。 (图上的蓝红色颜色图部分: /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
但我认为,如果在 X
和 Y
中以更高分辨率准备基本轮廓图,这看起来会更好...
PS:例如设置
#initial conditions
Nr = 500
N_phi = 500
让它看起来很锐利
关于python - 如何在 matplotlib 中删除环形图的偏离中心部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53897492/