我正在尝试对误差条图的标记进行遮蔽,而不对误差条线进行遮蔽。
这是一个 MWE:
import matplotlib.pyplot as plt
x = [1, 2, 3, 4]
y = [1, 2, 3, 4]
dx = 0.1
dy = 0.1
plt.errorbar(x, y, xerr = dx, yerr = dy, marker = '.',
linestyle = ' ', color = 'black', capsize = 2,
elinewidth = 0.5, capthick = 0.4, alpha = 0.8)
plt.savefig('MWE.pdf')
plt.show()
此外,如何在不改变倾覆尺寸的情况下去除标记边缘?如果我将 markeredgewidth = 0
设置为 capsize
会重置。
更新代码:
import matplotlib.pyplot as plt
import matplotlib
x = [1, 2, 3, 4]
y = [1, 2, 3, 4]
dx = 0.1
dy = 0.1
other_marker_params = {'marker':'.',
'linestyle':' ',
'alpha':0.8,
'capthick':0.5,
'capsize':20,
'ecolor':'black',
'elinewidth':0.5}
(_, caps, _) = plt.errorbar(x, y, xerr=dx, yerr=dy, markerfacecolor = 'black',
markeredgewidth = 0, **other_marker_params)
for cap in caps:
cap.set_markeredgewidth(1)
cap.set_markersize(2)
plt.savefig('MWE.pdf')
plt.show()
最佳答案
第二个行为(markeredgewidth
控制capsize
)对我来说很奇怪。我的猜测是因为 marker 和 errorcap 线都是 Line2D 对象的实例,它们都被传递给您设置的 markeredgewidth
参数。
回答您的问题:
标记的颜色可以用 kwarg 控制
markerfacecolor
如下:plt.errorbar(x, y, xerr=dx, yerr=dy, markerfacecolor='red', **other_marker_params) # a dict specifying kwargs in
另一个问题可以通过手动编辑用于上限线和误差线的 Line2D 实例来解决,这些实例由
plt.errorbar
函数返回:(_, caps, elines) = plt.errorbar(x, y, xerr=dx, yerr=dy, markerfacecolor='red', markeredgewidth=0, **other_marker_params) for cap in caps: cap.set_markeredgewidth(1) cap.set_markersize(2) cap.set_alpha(1) for eline in elines: eline.set_alpha(1)
使用它我可以获得这样的图像:
引用: 我不能完全相信第二个答案,它是根据 this 的已接受答案修改的所以问题。
编辑:
字典 other_marker_params
可能类似于:
other_marker_params = {'marker':'.',
'linestyle':' ',
'ecolor':'black',
'elinewidth':0.5}
关于python - 没有阴影误差线的阴影误差线标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55439753/