如何在rcParams中使用linestyle=None在matplotlib中绘制errorbar图?

2024-04-25 18:06:58 发布

您现在位置:Python中文网/ 问答频道 /正文

打印errorbar打印时,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

调用pyplot.errorbar()时显式设置linestyle='None'的唯一解决方案是什么?


Tags: importnone示例matplotlibas绘制plt直线
1条回答
网友
1楼 · 发布于 2024-04-25 18:06:58

这是matplotlib旧版本中的一个“bug”(在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上就此打开一个问题。

错误栏doc

另一方面,调用签名上次更改似乎是在2007年,这是为了使errorbars不默认为蓝色。

相关问题 更多 >