如何在rcParams中使用linestyle = None在matplotlib中创建错误栏图?

时间:2013-08-28 21:42:59

标签: python matplotlib

在绘制误差条图时,matplotlib不遵循无线型的rcParams。相反,它正在绘制与线相关的所有点。这是一个最低限度的工作示例:

import matplotlib.pyplot as plt

lines = {'linestyle': 'None'}
plt.rc('lines', **lines)

plt.errorbar((0, 1), (1, 0), yerr=(0.1, 0.1), marker='o')

plt.savefig('test.pdf')
plt.delaxes()

enter image description here

在调用linestyle='None'时,是唯一明确设置pyplot.errorbar()的解决方案吗?

2 个答案:

答案 0 :(得分:28)

这是matplotlib旧版本中的“错误”(1.4系列已为fixed)。问题在于Axes.errorbar '-'的默认值为fmt,然后传递给plot的调用,用于绘制标记和线条。因为格式字符串传递到plot,所以从不查看rcparams中的默认值。

您也可以传递fmt = ''

eb = plt.errorbar(x, y, yerr=.1, fmt='', color='b')

将导致rcParam['lines.linestlye']值得到尊重。我已提交PR来实现此目的。

另一个解决方法是分两步制作错误栏:

l0, = plt.plot(x,y, marker='o', color='b')
eb = plt.errorbar(x, y, yerr=.1, fmt=None, color='b')

这是一个令人讨厌的设计决定,但改变它将是一个主要的api休息。请在github上打开一个关于此的问题。

errorbar doc

作为旁注,看起来呼叫签名在2007年最后一次更改,那就是使错误栏不是默认为蓝色。

答案 1 :(得分:1)

使用:fmt='' 确实不起作用。需要放置一些不是空字符串的东西。 正如@strpeter 所提到的,点或任何其他标记都可以。 例子: fmt='.' fmt=' ' fmt='o'