这是我的代码,当我运行我的图形是这样的:在这里输入图像描述我不知道如何解决它。当我画很多值的时候。我的文件是:https://drive.google.com/file/d/1gfljbTr82K5lLKRa7BVbs5JUmqtaZsp1/view?usp=sharing
我正在尝试绘制每个值的错误栏。
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
df = pd.read_csv('C:/Users/LENOVO/Downloads/PN_ART.txt', sep=" ", header=0)
#oxígeno
O3art = df.loc[:, 'O3']
eO3art = df.loc[:, 'eO3']
#Nitrógeno
N2art = df.loc[:, 'N2']
eN2art = df.loc[:, 'eN2']
#Hidrógeno
Halphart = df.loc[:, 'Halpha']
eHalphart = df.loc[:, 'eHalpha']
eHbetart = df.loc[:, 'eHbeta']
Y = np.log(O3art)
X = np.log(N2art/Halphart)
xe = eN2art + eHalphart
ye = eO3art + eHbetart
plt.plot(X, Y, 'go')
plt.errorbar(X, Y, xerr=xe, yerr=ye, color='k')
Matplotlib默认在连续的点之间绘制线。如果您绘制了几个点,它们不是沿着x轴排列的,这将产生您在绘图中观察到的奇怪之字形线。
一个解决方案是按数据点的x值排序。另一种方法是告诉matplotlib不要画线。这可以通过传递
来实现。linestyle=''
到plot命令。通常如果你碰巧有这个问题,点与点之间的线是没有意义的,所以最好不要从科学的角度来画它们。
顺便说一下,您可以(并且应该)将plot()
和errorbar()
调用合并为一个errorbar()
调用,例如如下
plt.errorbar(X, Y, xerr=xe, yerr=ye, marker='o', color='g', linestyle='', ecolor='k')
您可以在errorbar()
函数的文档中找到参数和其他选项的含义。