【问题标题】:Matplotlib Errorbar Caps MissingMatplotlib 误差条大写缺失
【发布时间】:2013-08-25 22:45:28
【问题描述】:

我正在尝试在 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 吗?

【问题讨论】:

  • 您是否进行了任何更改以使背景变灰?我想知道您是否有 zorder 问题(与 stackoverflow.com/questions/14003572/… 相关)。该问题的补丁在 1.3 中,但不是 1.2.1
  • 您的代码在我的系统上正常运行,我怀疑在使图表看起来很糟糕(是的,我知道这是主观的)时,您破坏了某些东西。我们需要查看您的 rcparams 来调试它。
  • 是的,实际上我使用的是一个 matplotlibrc 文件,该文件与默认情况相比有很大的改变。您需要查看文件的哪一部分?
  • 如果您使用默认的matplotlibrc 文件(只需在启动 python 之前重命名您的文件),这是否按预期工作?

标签: python matplotlib


【解决方案1】:

astromax 的回答稍微简化:

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

似乎markeredgewidth有时会默认为0。

【讨论】:

    【解决方案2】:

    对我有用的是添加这个(根据:How to set the line width of error bar caps, in matplotlib):

    (_, caps, _) = plt.errorbar(x,y, yerr=err, capsize=20, elinewidth=3)
    
    for cap in caps:
        cap.set_color('red')
        cap.set_markeredgewidth(10)
    

    【讨论】:

    • 不是特别的。我试图理解它,但它的语法似乎让我感到困惑。我知道 (,caps,) 正在生成一个元组的元组,但是我不熟悉 set_color() 和 set_markeredgewidth()。
    • 他们完全按照听起来的样子,设置标记的颜色和边缘宽度。 matplotlib.org/api/…matplotlib.org/api/…
    • 我更想问的是,您是否弄清楚您在matplotlibrc 文件中所做的更改是否破坏了它。
    • 对我来说,主要的错误是出于某种莫名其妙的原因capsize。除了set_markeredgewidthset_color,您应该能够在errorbar call 中使用capthickecolor 参数。
    【解决方案3】:

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

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

    它也适用于plt.bar()

    【讨论】:

      猜你喜欢
      • 2018-08-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-12
      • 2013-04-07
      • 1970-01-01
      • 2016-11-26
      • 1970-01-01
      相关资源
      最近更新 更多