Построение электронного отклонения между пластинами конденсатора в python - PullRequest
2 голосов
/ 19 января 2020

Я хочу построить график отклонения электрона, и все это не показывает графика, когда я компилирую программу. Пока это мой код, а комментарии представляют единицы СИ.

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()

Ответы [ 2 ]

3 голосов
/ 19 января 2020

plt.plot требует более одной точки (если не указан маркер), поэтому

plt.plot(i,y)

не будет отображать график, когда i и 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

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

, либо составить список значения y и x,

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)

Или, что еще лучше, сделать массивы x и y 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

1 голос
/ 19 января 2020

Я думаю, что вы ищете точечный график. 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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...