首页 > 解决方案 > 在 Python 中绘制质子对磁场的速度

问题描述

我一直在尝试绘制质子对磁场的线速度。质子在垂直于速度的均匀磁场中沿圆形轨道运动。当均匀磁场从 0.35 T 增加到 2 T 时,轨道半径从 14 cm 变为 8 cm。

#!/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()

由于某些原因,我在图表上得到了多条线。

在此处输入图像描述

我试图使空格= 2(在linspace中)如下:

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

但是,仍然出现了这些多行。

我的问题是,如何摆脱这些线条?

标签: pythonplotphysics

解决方案


您的主要问题是您使用该plot功能pyplot来显示您的观点。该函数在连续的绘图点之间绘制线段。

相反,使用该scatter函数,它只显示没有任何连接线段的点。当我替换plot为 时scatter,我得到以下结果。单击该图形以查看其全尺寸——然后您将看到这些明显的垂直线段中的每一个实际上都是 50 个点相近。这似乎是正确的,尽管您没有提到任何循环路径。那是你要的吗?

在此处输入图像描述


推荐阅读