在绘制误差条图时,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()
在调用linestyle='None'
时,是唯一明确设置pyplot.errorbar()
的解决方案吗?
答案 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'