matplotlib 如何修改误差线的颜色

vc9ivgsu  于 2023-10-24  发布在  其他
关注(0)|答案(2)|浏览(161)

如何使错误栏须状物的 * 仅左侧部分 (与红色水平栏重叠) 为白色而不是黑色 * 以获得更好的可读性?
我试着在黑色的胡须上加上白色的边缘,但这看起来不太像我所期望的。

MWE:

import matplotlib.pyplot as plt
cm = 1/2.54 # for inches-cm conversion

fig, axes = plt.subplots(
        num = 'main',
        nrows = 2,
        ncols = 1,
        sharex=True,
        dpi = 300,
        figsize=(16.5*cm, 5*cm)
    )

axes[0].set_xlim(0,100)
axes[0].set_ylim(-1,1)

axes[0].barh(
    y = 0,
    width = 30,
    height = 1.5,
    align='center',
    color = 'red',
    edgecolor = 'black'
)
axes[0].errorbar(
    x = 30,
    y = 0,
    xerr = [[4], [65]],
    fmt = 'none',
    capsize = 2,
    ecolor = 'black',
    elinewidth = 1,
)
kmynzznz

kmynzznz1#

IIUC,你可以循环每对 bar/errorset_colorwhite,也可以使hlines

from matplotlib.patches import Rectangle

containers = axes[0].containers

for bc, ebc in zip(containers[::2], containers[1::2]):
    
    for art in bc:
        if isinstance(art, Rectangle):
            x, w = art.get_x(), art.get_width()
            
    _, (left_ebcvline, _), _ = ebc

    left_ebcvline.set_color("white")
    
    axes[0].hlines(left_ebcvline._y, left_ebcvline._x, x+w, color="white")

w51jfk4q

w51jfk4q2#

您可以更改误差条函数,为误差条的每一侧选择单独的颜色,以便仅使误差条须的左侧部分为白色而不是黑色。您可以选择使左侧为白色,右侧为黑色。

以下是你应该如何去做:

import matplotlib.pyplot as plt

cm = 1/2.54  # for inches-cm conversion

fig, axes = plt.subplots(
    num='main',
    nrows=2,
    ncols=1,
    sharex=True,
    dpi=300,
    figsize=(16.5*cm, 5*cm)
)

axes[0].set_xlim(0, 100)
axes[0].set_ylim(-1, 1)

axes[0].barh(
    y=0,
    width=30,
    height=1.5,
    align='center',
    color='red',
    edgecolor='black'
)

# Modify the errorbar function to specify different colors for left and right sides
axes[0].errorbar(
    x=30,
    y=0,
    xerr=[[4], [65]],
    fmt='none',
    capsize=2,
    ecolor='black',  # Right side color (same as before)
    elinewidth=1,
    markeredgecolor='white',  # Left side color (set to white)
)

plt.show()

输出:

在这里,我只使用markeredgecolor参数将误差条左侧的颜色指定为白色,而将右侧保持为黑色。这将创建您想要的效果,误差条晶须的左侧部分为白色。

相关问题