Matplotlib Errorbar Caps缺失

ast*_*max 18 python matplotlib

我正在尝试使用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()
Run Code Online (Sandbox Code Playgroud)

问题是输出的图表根本没有上限! 在此输入图像描述

对于它的价值,我在Ubuntu 13.04,Python的2.7.5 |蟒蛇1.6.1(64位)|,和Matplotlib 1.2.1.

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

ast*_*max 17

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

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

for cap in caps:
    cap.set_color('red')
    cap.set_markeredgewidth(10)
Run Code Online (Sandbox Code Playgroud)


小智 11

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

import matplotlib
matplotlib.rcParams.update({'errorbar.capsize': 2})
Run Code Online (Sandbox Code Playgroud)

它也适用于plt.bar().


aqu*_*tle 5

astromax的答案略有简化:

plt.errorbar(x,y, yerr=err, capsize=20, elinewidth=3, markeredgewidth=10)
Run Code Online (Sandbox Code Playgroud)

似乎有时候markeredgewidth默认为0。