26

我正在尝试在 matplotlib 中创建带有误差线的散点图。以下是我的代码的示例:

import matplotlib.pyplot as plt
import numpy as np
import random

x = np.linspace(1,2,10)
y = np.linspace(2,3,10)
err = [random.uniform(0,1) for i in range(10)]

plt.errorbar(x, y,
       yerr=err,
       marker='o',
       color='k',
       ecolor='k',
       markerfacecolor='g',
       label="series 2",
       capsize=5,
       linestyle='None')
plt.show()

问题是输出的图根本不包含大写字母!在此处输入图像描述

值得一提的是,我使用的是 Ubuntu 13.04、Python 2.7.5 |Anaconda 1.6.1(64 位)|和 Matplotlib 1.2.1。

这可能是需要覆盖的隐藏 rcparam 吗?

4

3 回答 3

24

对我有用的是添加这个(根据:如何在 matplotlib 中设置误差线上限的线宽):

(_, caps, _) = plt.errorbar(x,y, yerr=err, capsize=20, elinewidth=3)

for cap in caps:
    cap.set_color('red')
    cap.set_markeredgewidth(10)
于 2013-08-26T02:28:04.930 回答
16

它与 matplotlib 中的 rcParams 有关。要解决它,请在脚本开头添加以下行:

import matplotlib
matplotlib.rcParams.update({'errorbar.capsize': 2})

它也适用于plt.bar().

于 2018-04-15T04:21:53.250 回答
15

astromax 答案的略微简化:

plt.errorbar(x,y, yerr=err, capsize=20, elinewidth=3, markeredgewidth=10)

似乎markeredgewidth有时默认为0。

于 2019-02-01T21:22:51.660 回答