如何使用ax.errorbar()函数绘制误差线图
参考:ax errorbar
在matplotlib中,ax.errorbar()函数用于绘制误差线图,可以在数据点周围显示误差条。这在展示数据的同时,也可以展示数据的不确定性,使图表更具说服力。本文将介绍如何使用ax.errorbar()函数绘制误差线图,并提供详尽的示例代码。
示例1:基本误差线图
import matplotlib.pyplot as plt
import numpy as np
x = np.arange(0, 10, 1)
y = np.sin(x)
error = np.random.rand(10) # 生成随机误差
plt.errorbar(x, y, yerr=error, fmt='o', color='b')
plt.show()
Output:
在这个示例中,我们生成了一组正弦函数的数据,并添加了随机误差。通过errorbar()
函数,我们将x、y数据传入并指定y轴的误差,fmt='o'
表示数据点以圆圈标记,color='b'
表示误差条的颜色为蓝色。
示例2:自定义误差条样式和样式
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y = [1, 4, 9, 16, 25]
y_err = [0.5, 0.4, 0.3, 0.2, 0.1]
plt.errorbar(x, y, yerr=y_err, fmt='o', ecolor='r', elinewidth=2, capsize=5, capthick=2)
plt.show()
Output:
在这个示例中,我们自定义了误差条的样式和参数。通过ecolor='r'
指定误差条颜色为红色,elinewidth=2
指定误差条线宽为2,capsize=5
指定误差条帽的大小为5,capthick=2
指定误差条帽的线宽为2。
示例3:水平误差条图
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y = [1, 4, 9, 16, 25]
x_err = [0.2, 0.3, 0.4, 0.1, 0.5]
plt.errorbar(x, y, xerr=x_err, fmt='o', ecolor='g')
plt.show()
Output:
这个示例展示了如何绘制水平误差条图。我们传入了x轴的误差数据,参数xerr=x_err
表示x轴误差,ecolor='g'
指定误差条颜色为绿色。
示例4:不同数据点不同颜色的误差条
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y = [1, 4, 9, 16, 25]
y_err = [0.5, 0.4, 0.3, 0.2, 0.1]
colors = ['r', 'g', 'b', 'c', 'm']
plt.errorbar(x, y, yerr=y_err, fmt='o', ecolor='k', elinewidth=2, capsize=5, capthick=2, color=colors)
plt.show()
在这个示例中,我们设置了不同数据点显示不同颜色的误差条,color=colors
参数用于指定每个数据点的颜色。误差条的颜色由ecolor='k'
指定。
示例5:设置误差条标签
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y = [1, 4, 9, 16, 25]
y_err = [0.5, 0.4, 0.3, 0.2, 0.1]
labels = ['A', 'B', 'C', 'D', 'E']
plt.errorbar(x, y, yerr=y_err, fmt='o', ecolor='b', elinewidth=2, capsize=5, capthick=2)
for i, txt in enumerate(labels):
plt.annotate(txt, (x[i], y[i]))
plt.show()
Output:
在这个示例中,我们除了绘制误差条外,还为每个数据点添加了标签。通过plt.annotate()
函数,在每个数据点的位置添加了对应的标签。
示例6:自定义误差条方向
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y = [1, 4, 9, 16, 25]
x_err = [0.1, 0.2, 0.3, 0.4, 0.5]
y_err = [0.5, 0.4, 0.3, 0.2, 0.1]
plt.errorbar(x, y, xerr=x_err, yerr=y_err, fmt='o', ecolor='r', elinewidth=2, capsize=5, capthick=2)
plt.show()
Output:
在这个示例中,我们展示了如何自定义水平和垂直方向的误差条。通过指定xerr
和yerr
参数,可以分别设置x轴和y轴的误差。
示例7:定制误差条样式
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y = [1, 4, 9, 16, 25]
y_err = [0.5, 0.4, 0.3, 0.2, 0.1]
plt.errorbar(x, y, yerr=y_err, fmt='o', ecolor='b', elinestyle='-', capsize=5, capthick=2)
plt.show()
通过设置elinestyle='-'
参数,我们可以更改误差条的线型。在这个示例中,我们将误差条的线型设置为实线。
示例8:绘制包含缺失值的误差条图
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(10)
y = np.sin(x)
y[3] = np.nan
error = np.random.rand(10)
plt.errorbar(x, y, yerr=error, fmt='o', color='b')
plt.show()
Output:
在这个示例中,我们展示了如何绘制包含缺失值的误差条图。通过将数据中的某个值设置为np.nan
,即表示该数据点缺失,误差条图将不会显示该数据点。
示例9:绘制多组误差条
import matplotlib.pyplot as plt
import numpy as np
x = np.arange(0, 10, 1)
y1 = np.sin(x)
y2 = np.cos(x)
error1 = np.random.rand(10)
error2 = np.random.rand(10)
plt.errorbar(x, y1, yerr=error1, fmt='o', color='b', label='sin')
plt.errorbar(x, y2, yerr=error2, fmt='x', color='r', label='cos')
plt.legend()
plt.show()
Output:
在这个示例中,我们绘制了两组数据的误差条图。通过多次调用errorbar()
函数,可以在同一张图上展示多组数据的误差条。
示例10:自定义误差条宽度
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y = [1, 4, 9, 16, 25]
y_err = [0.5, 0.4, 0.3, 0.2, 0.1]
plt.errorbar(x, y, yerr=y_err, fmt='o', ecolor='b', elinewidth=4, capsize=5, capthick=2)
plt.show()
Output:
通过设置elinewidth
参数,我们可以自定义误差条的宽度。在这个示例中,我们将误差条的宽度设置为4。
示例11:误差条图水平对齐
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y = [1, 4, 9, 16, 25]
y_err = [0.5, 0.4, 0.3, 0.2, 0.1]
plt.errorbar(x, y, yerr=y_err, fmt='o', ecolor='b', align='mid', elinewidth=2, capsize=5, capthick=2)
plt.show()
通过设置align='mid'
参数,可以使误差条与数据点水平对齐。在这个示例中,我们将误差条水平对齐于数据点。
示例12:多种样式的误差条
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y = [1, 4, 9, 16, 25]
y_err = [0.5, 0.4, 0.3, 0.2, 0.1]
plt.errorbar(x, y, yerr=y_err, fmt='o', ecolor='b', elinewidth=2, capsize=5, capthick=2)
plt.errorbar(x, np.array(y)*2, yerr=np.array(y_err)*1.5, fmt='x', ecolor='r', elinewidth=2, capsize=5, capthick=2)
plt.show()
在这个示例中,我们展示了如何在同一张图上绘制不同样式的误差条。我们通过多次调用errorbar()
函数,并分别设置不同的样式参数,实现了多种样式的误差条。
示例13:自定义误差条长度
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y = [1, 4, 9, 16, 25]
y_err = [0.5, 0.4, 0.3, 0.2, 0.1]
plt.errorbar(x, y, yerr=y_err, fmt='o', ecolor='b', elinewidth=2, capsize=10, capthick=2)
plt.show()
Output:
通过设置capsize
参数,我们可以自定义误差条的末端帽的长度。在这个示例中,我们将帽的长度设置为10。
示例14:设置误差条线型
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y = [1, 4, 9, 16, 25]
y_err = [0.5, 0.4, 0.3, 0.2, 0.1]
plt.errorbar(x, y, yerr=y_err, fmt='o', ecolor='b', elinewidth=2, capsize=5, capthick=2, linestyle='--')
plt.show()
Output:
通过设置linestyle
参数,我们可以为误差条指定线型。在这个示例中,我们将误差条的线型设置为虚线。
示例15:自定义误差条标记
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y = [1, 4, 9, 16, 25]
y_err = [0.5, 0.4, 0.3, 0.2, 0.1]
plt.errorbar(x, y, yerr=y_err, fmt='o', ecolor='b', elinewidth=2, capsize=5, capthick=2, marker='s')
plt.show()
通过设置marker
参数,我们可以自定义误差条的标记样式。在这个示例中,我们将误差条的标记样式设置为正方形。
示例16:调整误差条标签位置
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y = [1, 4, 9, 16, 25]
y_err = [0.5, 0.4, 0.3, 0.2, 0.1]
plt.errorbar(x, y, yerr=y_err, fmt='o', ecolor='b', elinewidth=2, capsize=5, capthick=2)
plt.errorbar(x, np.array(y)*2, yerr=np.array(y_err)*1.5, fmt='x', ecolor='r', elinewidth=2, capsize=5, capthick=2)
for i, txt in enumerate(y):
plt.text(x[i], y[i], f'{y[i]}',
color='black',
fontsize=9,
horizontalalignment='center',
verticalalignment='bottom')
plt.show()
在这个示例中,我们使用plt.text()
函数调整了误差条标签的位置,将标签显示在误差条上。参数horizontalalignment='center'
和verticalalignment='bottom'
用于设置标签的水平和垂直对齐方式。
示例17:通过pandas绘制误差条图
import pandas as pd
import matplotlib.pyplot as plt
data = {'x': [1, 2, 3, 4, 5],
'y': [1, 4, 9, 16, 25],
'y_err': [0.5, 0.4, 0.3, 0.2, 0.1]}
df = pd.DataFrame(data)
ax = df.plot(x='x', y='y', kind='bar', yerr='y_err', capsize=5, capthick=2, color='b', legend=False)
plt.show()
通过pandas库,可以更便捷地绘制误差条图。在这个示例中,我们将数据转换为DataFrame,并使用df.plot()
函数绘制了误差条图。
示例18:绘制包含多个子图的误差条图
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y1 = [1, 4, 9, 16, 25]
y2 = [1, 3, 6, 10, 15]
y_err1 = [0.5, 0.4, 0.3, 0.2, 0.1]
y_err2 = [0.3, 0.2, 0.4, 0.1, 0.5]
fig, ax = plt.subplots(1, 2, figsize=(10, 4))
ax[0].errorbar(x, y1, yerr=y_err1, fmt='o', ecolor='b', elinewidth=2, capsize=5, capthick=2)
ax[0].set_title('Group 1')
ax[1].errorbar(x, y2, yerr=y_err2, fmt='o', ecolor='r', elinewidth=2, capsize=5, capthick=2)
ax[1].set_title('Group 2')
plt.show()
Output:
通过在plt.subplots()
函数中指定行数和列数,可以绘制包含多个子图的误差条图。在这个示例中,我们通过创建一个1行2列的图像,将两组数据分别显示在两个子图中。