这是一个基本情节。要使用plt.plot(x, y, fmt) 绘图,您需要两个大小相同的数组 x 和 y,其中 x 是要绘制的每个点的 x 坐标,y 是 y 坐标,fmt 是描述如何绘制数字的字符串。
因此,您需要做的就是创建一个均匀分布的波长阵列(我将其命名为 np.arraywavelengths)。这可以通过arange(start, end, spacing) 来完成,它将创建一个从头到尾(不包括在内)以spacing 分隔的数组。
然后使用您的函数计算数组中每个点的强度(将存储在另一个np.array 中),然后调用plt.plot 绘制它们。注意 numpy 让您在 vectorized form 中快速对数组进行数学运算,这将是计算高效的。
import matplotlib.pyplot as plt
import numpy as np
h = 6.626e-34
c = 3.0e+8
k = 1.38e-23
def planck(wav, T):
a = 2.0*h*c**2
b = h*c/(wav*k*T)
intensity = a/ ( (wav**5) * (np.exp(b) - 1.0) )
return intensity
# generate x-axis in increments from 1nm to 3 micrometer in 1 nm increments
# starting at 1 nm to avoid wav = 0, which would result in division by zero.
wavelengths = np.arange(1e-9, 3e-6, 1e-9)
# intensity at 4000K, 5000K, 6000K, 7000K
intensity4000 = planck(wavelengths, 4000.)
intensity5000 = planck(wavelengths, 5000.)
intensity6000 = planck(wavelengths, 6000.)
intensity7000 = planck(wavelengths, 7000.)
plt.plot(wavelengths*1e9, intensity4000, 'r-')
# plot intensity4000 versus wavelength in nm as a red line
plt.plot(wavelengths*1e9, intensity5000, 'g-') # 5000K green line
plt.plot(wavelengths*1e9, intensity6000, 'b-') # 6000K blue line
plt.plot(wavelengths*1e9, intensity7000, 'k-') # 7000K black line
# show the plot
plt.show()
你会看到:
您可能需要清理坐标轴标签、添加图例、在同一图上绘制多个温度下的强度,等等。请咨询relevant matplotlib documentation。