擅长:python、mysql、java
<p>您可以将<code>x</code>值提供给<code>plt.plot</code>,并让matplotlib负责设置记号标签。在</p>
<p>在您的例子中,您可以绘制<code>plt.plot(l, B)</code>,但是仍然有m的刻度,而不是nm。在</p>
<p>因此,您可以在绘图之前(或绘图期间)将<code>l</code>数组转换为nm。下面是一个有效的例子:</p>
<pre><code>import scipy.constants as sc
import numpy as np
import matplotlib.pyplot as plt
lhinm = 10000 # Highest wavelength in nm
T = np.linspace(200, 1000, 10) # Temperature in K
l = np.linspace(0, lhinm*1E-9, 101) # Wavelength in m
l_nm = l*1e9 # Wavelength in nm
labels = np.linspace(0, lhinm, 6) # Axis labels giving l in nm
B = (2*sc.h*sc.c**2/l[:, np.newaxis]**5)/(np.exp((sc.h*sc.c)/(T*l[:, np.newaxis]*sc.Boltzmann))-1)
plt.plot(l_nm, B)
# Alternativly:
# plt.plot(l*1e9, B)
plt.xlabel("Wavelength (nm)")
plt.title("With xticks()")
plt.savefig("withticks.png")
plt.show()
</code></pre>
<p><a href="https://i.stack.imgur.com/gl2GW.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/gl2GW.png" alt="enter image description here"/></a></p>