在matplotlib / python中的错误栏上的边框

时间:2016-03-23 09:05:29

标签: python matplotlib

我正在寻找一种在我的情节中的错误栏上设置黑色边框的方法,

以下代码:

ax.errorbar(x, y, yerr, fmt='o', label='label',color="#8da0cb",capthick=2, elinewidth=2,zorder=10)

产生

errorbar

如果错误栏周围有黑色边框,我会发现它更美观。

感谢您提供的任何帮助

2 个答案:

答案 0 :(得分:3)

不是一个很好的解决方案,但你可以通过在原始的错误栏后面绘制错误栏,使用更宽的线和帽子思想,并将那些颜色设置为黑色来实现。我们可以利用zorder kwarg将它们置于其他人之后。

继承人MWE:

import matplotlib.pyplot as plt
import numpy as np

# Fake data
x=np.arange(0,5,1)
y=np.ones(x.shape)
yerr = np.ones(x.shape)/4.

# Create figure
fig,ax = plt.subplots(1)

# Set some limits
ax.set_xlim(-1,5)
ax.set_ylim(-2,4)

# Plot errorbars with the line color you want
ax.errorbar(x,y,yerr, fmt='o',color='r',capthick=2,elinewidth=2,capsize=3,zorder=10)

# Plot black errorbars behind (lower zorder) with a wider line and cap thinkness
ax.errorbar(x,y,yerr, fmt='o',color='k',capthick=4,elinewidth=4,capsize=4,zorder=5)

plt.show()

enter image description here

同样,不是一个完美的解决方案,但至少它允许你将它包含在图例中。这一次,我们将使用matplotlib.patheffects模块向错误栏添加Stroke,而不是将错误栏绘制两次。

errorbar会返回多个Line2DLineCollection个对象,因此我们需要将笔划应用于每个相关的对象。

import matplotlib.patheffects as path_effects

e = ax.errorbar(x,y,yerr, fmt='o',color='r',capthick=2,elinewidth=2, label='path effects')

e[1][0].set_path_effects([path_effects.Stroke(linewidth=4, foreground='black'),
                          path_effects.Normal()])
e[1][1].set_path_effects([path_effects.Stroke(linewidth=4, foreground='black'),
                          path_effects.Normal()])
e[2][0].set_path_effects([path_effects.Stroke(linewidth=4, foreground='black'),
                          path_effects.Normal()])

ax.legend(loc=0)

enter image description here

答案 1 :(得分:1)

据我所知,webpage of pyplot中提供的信息,我看不到您所询问的有效kwargs

mfc, mec, msmew存在markerfacecolor, markeredgecolor, markersizemarkeredgewith。它可能是asked in GitHub,因此人们会考虑这一点并将其添加到下一版本的matplotlib中。

另外看一下the answer for this question asked in Stackoverflow,我也不相信可以做到。