python - 没有阴影误差线的阴影误差线标记

标签 python matplotlib

我正在尝试对误差条图的标记进行遮蔽,而不对误差条线进行遮蔽。

这是一个 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)
    

使用它我可以获得这样的图像:

example_marker_control

引用: 我不能完全相信第二个答案,它是根据 this 的已接受答案修改的所以问题。

编辑:

字典 other_marker_params 可能类似于:

other_marker_params = {'marker':'.', 
                       'linestyle':' ', 
                       'ecolor':'black', 
                       'elinewidth':0.5}

关于python - 没有阴影误差线的阴影误差线标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55439753/

相关文章:

python - 从 Seaborn/Matplotlib 中的颜色条中删除最低颜色

python-3.x - 使用 Seaborn 和 SciPy 绘制分位数-分位数图

python - 使用标签而不是字段名称呈现表单错误

python - 使用 Python 线程与 async/await 有什么区别

python - 单个窗口中的多个图形

python - MatPlotLib:同一个散点图上的多个数据集

python - while 循环阻塞异步任务

python - 在 Pandas 中的特定列值之后删除 id 的行

当我将它放入函数中时,Python 脚本停止工作

python - Pandas:将多个时间序列 DataFrame 绘制成一个图