在Matplotlib中隐藏空心点下的errobar

nwo49xxi  于 2023-04-21  发布在  其他
关注(0)|答案(1)|浏览(132)

我想绘制带有错误的数据。数据点是空心菱形,我不希望错误的部分显示在空心菱形内部。我只希望它显示在菱形外部,留下内部空白。我使用的代码部分是:

plt.errorbar(x=unknown['asd'], y=(unknown['dsa'])*-10, 
xerr=unknown['asderr'], yerr=(unknown['dsaerr']*-10), linestyle="None", fmt='D', markersize=7, 
ecolor='b', elinewidth=0.2, capsize=0.05, markerfacecolor='white', markeredgecolor='blue',
label=None, alpha=0.6)

我试着用zorder:

plt.errorbar(x=unknown['asd'], y=(unknown['dsa'])*-10, 
xerr=unknown['asderr'], yerr=(unknown['dsaerr']*-10), linestyle="None", fmt='D', markersize=7, 
ecolor='b', elinewidth=0.2, capsize=0.05, markerfacecolor='white', markeredgecolor='blue',
label=None, alpha=0.6, zorder=1)

plt.plot(unknown['asd'], (unknown['dsa'])*-10, marker='D', markerfacecolor='none', markeredgecolor='blue', 
markeredgewidth=1, markersize=7, linestyle='None', zorder=2, alpha=0.6)

但是我仍然看到错误条穿过空心钻石。有没有什么快速的方法使错误条线不显示在空心部分下面?

sz81bmfz

sz81bmfz1#

这是由于在plt.errorbar调用中设置了alpha值。
下面是一个更简单的示例,说明您正在执行的操作:

import matplotlib.pyplot as plt

markers_style = dict(fmt='D', markersize=20, markerfacecolor='white', markeredgecolor='blue')
lines_style = dict(ecolor='b', elinewidth=1, capsize=0.05)

plt.errorbar(x=10, y=10, xerr=0.5, yerr=0.5, **markers_style, **lines_style, alpha=0.6)

删除alpha=0.6,您将获得下图

出于某种原因,您可能希望在errobar调用中保留alpha值。在这种情况下,为了获得所需的图形,您必须创建第二个图(plt.plotplt.scatter)来隐藏每个空心菱形的中心。

# [...]
plt.errorbar(x=10, y=10, xerr=0.5, yerr=0.5, **markers_style, **lines_style, alpha=0.6)

plt.plot(10, 10, marker='D', c="w", markersize=20)

相关问题