如何获取pandas绘制的柱状图中各柱体元素的颜色
获取pandas柱状图柱体颜色的方法
你之前使用的get_lines()只能获取折线图生成的Line2D类型对象,柱状图的柱体属于Patch类型,全部存储在axes对象的patches属性中。
pandas绘制多列分组柱状图时,patches的排序规则为:按行遍历每一组的所有列柱体,比如示例中2行2列的数据集,patches顺序为:col1第一行柱、col2第一行柱、col1第二行柱、col2第二行柱。因此要获取某一列的统一柱体颜色,只需取该列第一个柱体的填充色即可。
以下是修正后的可运行代码,同时实现了你需要的均值水平参考线需求:
"""Access bar plot colors and add mean reference lines.""" import pandas as pd df = pd.DataFrame(data={'col1': [1, 2], 'col2': [3, 4]}) ax = df.plot(kind='bar') # 统计列数,获取每列对应的柱体颜色 col_count = len(df.columns) col_color_list = [] for col_idx in range(col_count): # 取当前列第一个柱体的填充色 cur_color = ax.patches[col_idx].get_facecolor() col_color_list.append(cur_color) print(f"{df.columns[col_idx]} 柱体颜色:{cur_color}") # 为每列添加与柱体同色的均值水平参考线 for col_idx, col_name in enumerate(df.columns): col_mean = df[col_name].mean() ax.axhline(y=col_mean, color=col_color_list[col_idx], linestyle='--', label=f"{col_name}均值") # 渲染图例 ax.legend()
如果需要获取柱体的边框颜色,将get_facecolor()替换为get_edgecolor()即可。
内容的提问来源于stack exchange,提问作者Azrael_DD
相关产品推荐
相关产品推荐

