График скорости протона против магнитного поля в Python - PullRequest
0 голосов
/ 16 ноября 2018

Я пытался построить линейную скорость протона в зависимости от магнитного поля. Протон движется по круговой орбите в однородное магнитное поле, перпендикулярное скорости. Радиус орбиты изменяется от 14 см до 8 см, когда однородное магнитное поле увеличивается от 0,35 Тл до 2 Тл.

#!/usr/bin/env python
import matplotlib.pyplot as plt
import numpy as np
import scipy.constants
p  = 1.6
q  = scipy.constants.e 
p_mass    = scipy.constants.proton_mass

B_List = []
r_List = []
v_List = []
for r in np.linspace (0.14, 0.08):
    for B in np.linspace (0.35, 2):
        v = (r*q*B)/p_mass  
        B_List.append(B)
        v_List.append(v)
fig = plt.figure()
plt.plot(B_List,v_List)
fig.suptitle('Linear Speed Vs Magnatic Field', fontsize=18)
plt.xlabel('Magnatic field (T)', fontsize=14)
plt.ylabel('Speed of the Proton (m/s)', fontsize=14)
plt.show()

По некоторым причинам я получил несколько строк на графике.

enter image description here

Я попытался сделать пробелы = 2 (в linspace) следующим образом:

for r in np.linspace (0.14, 0.08,2, 2):
for B in np.linspace (0.35, 2, 2):

но, тем не менее, эти несколько строк появляются.

Мой вопрос здесь, как избавиться от этих строк?

1 Ответ

0 голосов
/ 16 ноября 2018

Ваша основная проблема в том, что вы используете функцию plot в pyplot, чтобы показать свои очки. Эта функция рисует отрезки между последовательными точками.

Вместо этого используйте функцию scatter, которая просто показывает точки без каких-либо соединительных отрезков. Когда я заменяю plot на scatter, я получаю результат ниже. Нажмите на изображение, чтобы увидеть его в полном размере - тогда вы увидите, что каждый из этих видимых вертикальных отрезков на самом деле находится на расстоянии 50 точек друг от друга Это кажется правильным, хотя нет круговых путей, которые вы упоминаете. Это то, что вы хотите?

enter image description here

...