在matplotlib中更改错误栏的capstyle

时间:2016-10-27 19:35:28

标签: python matplotlib errorbar

我想将错误栏的垂直线的capstyle设置为'round'。例如,以下代码生成一些带有错误栏的点:

import matplotlib.pyplot as plt

fig, ax = plt.subplots()
plt.plot([1,2,3], [2,3,4], marker='o', linestyle='None')
plt.errorbar([1,2,3], [2,3,4], yerr=[1,1,1], fmt=None, linewidth=3, capsize=0)
plt.xlim([0,4])
plt.show()

对于普通线,我可以使用以下方法在rcParams中设置上限样式:

plt.rcParams['lines.dash_capstyle'] = 'round'

我还找到了一些很好的例子,如何获得圆形的圆形样式:

for i in ax.xaxis.get_ticklines(): i._marker._capstyle = 'round'

但是我无法找到类似于错误栏的方法。

2 个答案:

答案 0 :(得分:2)

plotline, cap, barlinecols =\
         plt.errorbar([1,2,3], [2,3,4], yerr=[1,1,1], fmt=None, linewidth=3, capsize=0)

plt.errorbar返回3个对象。 plotlinecapLine2D个对象,您可以这样做:

plotline.set_capstyle('round')
cap.set_capstyle('round')

barlinecolsLineCollection个对象。但是,当前版本(matplotlib 2.0)不支持更改capstyle个对象中的LineCollection(请参阅:https://github.com/matplotlib/matplotlib/issues/8277)。但看起来这将在下一个版本中实现。

答案 1 :(得分:0)

要在此处提供工作代码以更改垂直错误栏行的标题样式:

import matplotlib.pyplot as plt

plotline, caps, barlinecols =\
         plt.errorbar([1,2,3], [2,3,4], yerr=[1,1,1], linewidth=5, capsize=0)

plt.setp(barlinecols[0], capstyle="round", color="orange")

plt.show()

enter image description here

要改为更改错误栏大写的大写样式,则需要使用一些私有属性

import matplotlib.pyplot as plt

plotline, caps, barlinecols =\
         plt.errorbar([1,2,3], [2,3,4], yerr=[1,1,1], linewidth=1, capsize=8, capthick=5)

for cap in caps:
    cap._marker._capstyle = "round"

plt.show()

enter image description here