import math as m
import numpy as np
import matplotlib.pyplot as plt
def intensity(x, y, R=1.343, lamd=589.3e-9, Delta_d=0):
r2 = x**2 + y**2
theta = m.pi*r2/(R*lamd) + (2*m.pi*Delta_d)/lamd
l, c = np.shape(theta)
i = np.zeros((l, c))
i = np.array([[m.sin(theta[i, j]) for j in range(c)] for i in range(l)])
print('1',i,type(i))
return i
def CalculateI(width, N):
x = np.linspace(-width, width, N)
y = np.linspace(-width, width, N)
[X, Y] = np.meshgrid(x, y)
I = intensity(-X, -Y)
print('2',I,type(I))
return I
def MakePlot():
# 建立子图
fig = plt.figure()
ax1 = fig.add_subplot(221)
ax2 = fig.add_subplot(222)
ax3 = fig.add_subplot(223)
ax4 = fig.add_subplot(224)
# 计算四种环的光强分布
I1 = CalculateI(0.004, 1000)
I2 = CalculateI(0.003, 1000)
I3 = CalculateI(0.002, 1000)
I4 = CalculateI(0.001, 1000)
#print(I1,I2,I3,I4)
# 作图
ax1.imshow(I1)
ax2.imshow(I2)
ax3.imshow(I3)
ax4.imshow(I4)
plt.show()
MakePlot()
能帮我改一下吗,谢谢!
可以参照以下代码,(cmap参数: 为调整显示颜色 viridis是一种颜色组合,加_r取反)
ax1.imshow(I1, cmap=plt.cm.viridis_r)
ax2.imshow(I2, cmap=plt.cm.viridis_r)
ax3.imshow(I3, cmap=plt.cm.viridis_r)
ax4.imshow(I4, cmap=plt.cm.viridis_r)
本人再补充一下
就是中间有一个紫色的点,让他变成黄色,第二圈,是黄色的,让它变成紫色,就这样以此类推,把所有颜色都颠倒一下