在Python matplotlib中设置boxplot'boxes'面色透明度

问题描述 投票:0回答:1

我正在寻找一种设置箱形图面色透明度的方法。现在,它显示为“红色”,alpha = 1。我如何将其更改为例如alpha值为0.5的“红色”,同时保持框边缘颜色不透明的“黑色”?我只想为脸色而不是为边缘色透明。

有什么想法吗?

尝试输入的代码:

import numpy as np

import pandas as pd

import matplotlib.pyplot as plt

import matplotlib.colors as cls

import matplotlib

matplotlib.interactive(True)



df = pd.DataFrame({
"A": [18,28,29,32,35,36,37,37,39,40,42,42,46,48,54,56,57,61,61,62,63,65],

                   "B":  [9,13,17,15,23,21,24,28,26,30,29,30,38,42,40,48,40,51,54,50,51,57],

                   "C": [1,98,65,47,58,95,24,5,63,7,41,5,6,84,56,96,33,25,61,94,68,83]
})



columns = ['A', 'B']

df_data = df.loc[:, columns]



def boxplot(y_lims, y_lime):


    plt.figure(figsize=((12.0 / 2.54), (7.42 / 2.54)), facecolor=None, edgecolor='black')

    

    fig, ax = plt.subplots()
    
    boxprops = dict(linestyle='-', linewidth=0.6)

    

    bp = df_data.boxplot(ax=ax, grid=False, showfliers=False, boxprops=boxprops, showmeans=True, return_type='dict', patch_artist=True)

    [patch.set(facecolor='red', alpha=1.0) for patch in bp['boxes']]
   #if alpha=0.5; both face and edge color are transparent, I only want the facecolor to be transparent 
    [patch.set_edgecolor('black') for patch in bp['boxes']]

    [item.set_color('black') for item in bp['whiskers']]

    [item.set_color('black') for item in bp['caps']]

    [item.set_marker('.') for item in bp['means']]

    [item.set_markerfacecolor('black') for item in bp['means']]

    [item.set_markeredgecolor('black') for item in bp['means']]

    [item.set_color('black') for item in bp['medians']]



    ax.set_ylim(y_lims, y_lime)

    
    plt.show()




if __name__ == '__main__':

    Boxplot_a = boxplot(None, None)

python matplotlib transparency
1个回答
0
投票

set_alpha会同时更改面部颜色和边缘颜色,为避免这种情况,您可能需要考虑将RGBA值直接传递给面部颜色。

© www.soinside.com 2019 - 2024. All rights reserved.