海运/Matplotlib:如何删除覆盖在条形图上的水平白色?[duplicate]

vdgimpew  于 2023-01-26  发布在  其他
关注(0)|答案(2)|浏览(111)
    • 此问题在此处已有答案**:

how to remove grid lines on image in python?(4个答案)
How to hide axes and gridlines in Matplotlib (python) [duplicate](2个答案)
How to fill legend background color when plotting with TWO axes?(2个答案)
3天前关闭。
它看起来是这样的:

我想删除覆盖在黑条上的白线。顺便说一句:可以去掉图例后面的背景吗?

def stack():
    data1 = [

        0.7,
        0.8,
        0.3,
        0.6,
        0.5

    ]

    data2 = [

        20, 30, 23, 17, 28

    ]
    sns.set_theme()
    data = np.multiply(data1, 100)

    r = [0, 1, 2, 3, 4]

    fig, ax1 = plt.subplots()
    ax1.bar(r, data, color="black", width=.5)
    plt.ylim(0,100)
    plt.ylabel('Percent')
    plt.xlabel('Lineage')
    ax2 = ax1.twinx()
    ax2.bar(r, data2, color="red", width=.1)
    plt.ylim(0,150)
    plt.ylabel("Number")

    lgnd1 = mpatches.Patch(color="black", label='Percent')
    lgnd2 = mpatches.Patch(color="red", label='Number')
    plt.legend(loc='upper center',
               bbox_to_anchor=(0.5, 1.2),
               ncol=3, handles=[lgnd1, lgnd2])

    plt.savefig('number.svg', bbox_inches="tight", transparent=True)
    plt.show()
dxxyhpgq

dxxyhpgq1#

您可以使用以下代码:

plt.grid(False)

或者,如果您仍然需要这些行,则可以使用:

plt.grid(zorder=0)
plt.bar(range(len(y)), y, width=0.3, align='center', color='skyblue', 
zorder=3)
gcmastyq

gcmastyq2#

关于你的传奇色彩:通过将绘图默认值设置为sns.set_theme()的海运标准(请参见seaborn.set_theme),选择此灰色。
但是,正如这里所描述的,您可以覆盖每个rc参数(“运行时配置参数”)使用参数facecolor=...将图例背景颜色设置为另一种颜色应该是可能的(参见matplotlib.pyplot.legend,向下滚动一点)
在您的情况下,可以在图例定义中添加此参数:

plt.legend(loc='upper center',
           facecolor='white',  # choose your background color
           bbox_to_anchor=(0.5, 1.2),
           ncol=3, handles=[lgnd1, lgnd2])

相关问题