Python3[Jupyter]代码未在图形上显示数据

Python3[Jupyter]代码未在图形上显示数据,python,matplotlib,physics,Python,Matplotlib,Physics,我相信这个问题以前已经被问过很多次了,但可惜我找不到正确的答案。我试图绘制非常简单的代码,但是当它执行时,最终结果只是一个空图。代码如下: import math import matplotlib.pyplot as mpl import numpy as np Q = 13.6 m_e = 9.11e-31 k = 8.6e-5 c = 3e8 eta = 4e-10 for T in np.arange(3000,4500): S = 3.84*eta*((k*T)/(m_e

我相信这个问题以前已经被问过很多次了,但可惜我找不到正确的答案。我试图绘制非常简单的代码,但是当它执行时,最终结果只是一个空图。代码如下:

import math
import matplotlib.pyplot as mpl
import numpy as np

Q = 13.6
m_e = 9.11e-31
k = 8.6e-5
c = 3e8
eta = 4e-10

for T in np.arange(3000,4500):

    S = 3.84*eta*((k*T)/(m_e*c**2))**(3/2)*(Q/(k*T))
    X = (-1 + np.sqrt(1+(4*S)))/(2*S)

%matplotlib inline

mpl.plot(S, T)
mpl.show()

我意识到这就是代码的方式——这可能是一个非常琐碎的答案,但我找不到问题所在。提前感谢您的帮助

S、X和T都是标量。我假设你想画一个向量对一个向量

我认为您正在尝试这样做:

import math
import matplotlib.pyplot as mpl
import numpy as np

Q = 13.6
m_e = 9.11e-31
k = 8.6e-5
c = 3e8
eta = 4e-10
S=[]
X=[]
for T in np.arange(3000,4500):
    tmp=3.84*eta*((k*T)/(m_e*c**2))**(3/2)*(Q/(k*T))
    S.append(tmp)
    X.append((-1 + np.sqrt(1+(4*tmp)))/(2*tmp))

%matplotlib inline

mpl.plot(S, X)
mpl.show()

您没有对在for循环中创建的值执行任何操作。因此,在绘图时,只有1个值
S
X
T
,因此,图形将为空

解决此问题的一种方法是将值附加到一个列表中,然后可以将该列表传递给对
绘图的调用:

Q = 13.6
m_e = 9.11e-31
k = 8.6e-5
c = 3e8
eta = 4e-10

S_list = []
X_list = []

for T in np.arange(3000,4500):

    S = 3.84*eta*((k*T)/(m_e*c**2))**(3/2)*(Q/(k*T))
    X = (-1 + np.sqrt(1+(4*S)))/(2*S)
    S_list.append(S)
    X_list.append(X)
我不确定您是否真的想根据
T
绘制
S
的值,但是如果您这样做了,那么您将执行以下操作:

mpl.plot(S_list, np.arange(3000,4500))
mpl.show()
它给出了类似于:

mpl.plot(S_list, np.arange(3000,4500))
mpl.show()

编辑:

您实际上不需要在此执行任何循环,
numpy
可以处理完整的计算:

T = np.arange(3000,4500)

S = 3.84*eta*((k*T)/(m_e*c**2))**(3/2)*(Q/(k*T))
X = (-1 + np.sqrt(1+(4*S)))/(2*S)

mpl.plot(S, T)
mpl.show()

会给你同样的数字吗

你想打电话给
mpl.plot(S,X)
实际上吗?我相信这个问题是问mpl.plot(X,T),但这仍然没有给我任何帮助。非常感谢你,它起作用了!我认为
绘图也可以在循环中。数据点将一个接一个地绘制,不必累积任何列表。这显然是一个设计决策。
import math
import matplotlib.pyplot as mpl
import numpy as np

Q = 13.6
m_e = 9.11e-31
k = 8.6e-5
c = 3e8
eta = 4e-10
x=[]
t=[]
for T in np.arange(3000,4500):
    S = 3.84*eta*((k*T)/(m_e*c**2))**(3/2)*(Q/(k*T))
    X = (-1 + np.sqrt(1+(4*S)))/(2*S)
    x.append(X)
    t.append(T)

mpl.plot(x,t)
mpl.show()