在python中绘制电容器板之间的电子偏转

问题描述 投票:0回答:2

我想绘制电子的偏转图,并且在我编译程序时所有的图都没有显示。到目前为止,这是我的代码,注释代表国际单位制。

import matplotlib.pyplot as plt

v=25300000 # m/s
E=1000 # V/m
d=10 # m
m=9*pow(10,-31) #kg 
q=1.6*pow(10,-19) # C

for i in range(0,d):
  y=(q*E*i*i)/(2*m*v*v)
  plt.plot(i,y)

plt.xlabel("x")
plt.ylabel("y")
plt.show()
python python-3.x matplotlib physics
2个回答
0
投票

我认为您正在寻找散点图。 plt.plot代替绘制曲线。要绘制散点图,请将x和y坐标分组到列表中,然后调用plt.scatter

import matplotlib.pyplot as plt

v=25300000 # m/s
E=1000 # V/m
d=10 # m
m=9*pow(10,-31) #kg 
q=1.6*pow(10,-19) # C

x_list = []
y_list = []

for i in range(0,d):
  y=(q*E*i*i)/(2*m*v*v)
  x_list.append(i)
  y_list.append(y)

plt.xlabel("x")
plt.ylabel("y")

plt.scatter(x_list, y_list)

plt.show()

0
投票

[plt.plot需要多个点,所以

plt.plot(i,y)

iy是单独的值时,仅当它们是数组或类似数组的对象时,不会生成图形。您可以将其替换为plt.scatter

import matplotlib.pyplot as plt

v=25300000 # m/s
E=1000 # V/m
d=10 # m
m=9*pow(10,-31) #kg 
q=1.6*pow(10,-19) # C

for i in range(0,d):
  y=(q*E*i*i)/(2*m*v*v)
  plt.scatter(i,y)

plt.xlabel("x")
plt.ylabel("y")
plt.show()

谁会给你

enter image description here

或列出yx值,

y = []
x = []
for i in range(0, d):
    y.append((q*E*i*i)/(2*m*v*v))
     x.append(i)

plt.plot(x,y)

或者更好的是,将xy设为numpy数组:

import numpy as np
# ...
x = np.arange(0,10)
y = (q*E*x**2)/(2*m*v*v)
plt.plot(x,y)

其中任何一个都会给您

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.