如何使用 python 绘制渐变色的柱状堆积图

前言

python 版本:3.9.5 (tags/v3.9.5:0a7dcbd, May 3 2021, 17:27:52)

演示环境:jupyter-lab

备注:这里默认大家都已经安装了 python 及其相关的工具包。

导入依赖包

import numpy as np
import matplotlib.pyplot as plt
import pickle
import os

获取文件列表,为后面读取数据做准备

在绘制柱状堆积图之前,我们需要为其准备好用于展示的数据。这里我从准备好了的 pickle 文件中进行读取,所以需要先获取文件列表。 我们在解决实际问题时,每个人的数据不尽相同,所以大家可以视自己的情况而定,总之是要为获取数据做准备。

file_dir = "./pickle/"
file_list = os.listdir(file_dir)
x_label = []

for filename in file_list:
    temp_str = filename.split(".")[0]
    label = temp_str.split("_")[1]
    x_label.append(label)

print("length of file_list: {}".format(len(file_list)))
print(file_list)
print(x_label)

加载数据,使用 bar 函数绘制渐变色柱状堆积图

我们将调用 bar 函数来绘制柱状图。渐变色的关键在于我们设置了自定义颜色,且颜色随着柱状图层次堆积按比例变化。 代码如下:

fig = plt.figure(figsize=(10,10), dpi=150)
ax = fig.add_subplot(111)

# 设置字体,以便支持中文显示
plt.rcParams['font.sans-serif'] = [u'Microsoft YaHei']

x = np.arange(len(x_label))
bottom_y = []
for i in range(len(x_label)):
    bottom_y.append(0.0)
bottom_y = np.array(bottom_y)

top_k = 10
for i in range(top_k):
    change_pct_list = []
    bar_width = 0.25
    for filename in file_list:
        file_path = file_dir + filename
        f = open(file_path, 'rb') 
        concept_stock_list = pickle.load(f)
        f.close
        change_pct_list.append(concept_stock_list[top_k-i-1]["平均涨跌幅"])
    y = np.array(change_pct_list)
    # 颜色按层次进行比例变化
    red_val = i * (1/top_k)
    green_val = 0.4 - i*(0.3/top_k)
    ax.bar(x, y, color=(red_val, green_val, 0.1), bottom=bottom_y, tick_label=x_label, width=bar_width)
    bottom_y += y

image_path = "pickle/渐变色的柱状堆积图.jpg"
fig.savefig(image_path)

运行以上代码,就可以看到如下图所示的渐变色柱状堆积图了。

为柱状堆积图添加文字标签

为了效果好看一些,我们还可以为柱状堆积图添加数据对应的标签。数据的标签,我这里依然从前面准备好的 pickle 文件中获取。

for i,filename in enumerate(file_list):
    file_path = file_dir + filename
    f = open(file_path, 'rb') 
    concept_stock_list = pickle.load(f)
    f.close
    text_y = 0.0
    for j in range(top_k):
        text_label = concept_stock_list[top_k-j-1]["name"]
        change_pct = concept_stock_list[top_k-j-1]["平均涨跌幅"]
        
        stocks_num = len(concept_stock_list[top_k-j-1]["stocks"])
        text_label = "{:.2f}".format(change_pct) + "% " + text_label + "[{}]".format(stocks_num)
        ax.text(i, text_y+change_pct/2, text_label, ha='left')
        text_y += change_pct

ax.set_xlabel('日期')
ax.set_ylabel('平均涨跌幅')
ax.set_title('2023行业热度堆积图',fontsize=10)
image_path = "pickle/加文字标签的渐变色柱状堆积图.jpg"
fig.savefig(image_path)

添加标签后的效果图如下:

结语

使用 python 绘制渐变色的柱状堆积图的方法,大致就是上面描述的这几个步骤了,希望对大家有所帮助。有问题欢迎在评论区讨论。

展开阅读全文

页面更新:2024-04-25

标签:柱状   函数   层次   平均   颜色   文字   标签   代码   文件   数据

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号

Top