欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Python Matplotlib绘制渐变色柱状图(bar)并加边框和配置渐变颜色条(colorbar)

程序员文章站 2022-06-15 18:18:06
模仿相关度热力图,使用Python Matplotlib绘制渐变色柱状图(bar)并加边框和配置渐变颜色条(colorbar)。...

热力图是数据分析的常用方法,通过色差、亮度来展示数据的差异、易于理解。目前,常见的是看数据表里多个特征两两的相关度热力图。

基于此思想,做出柱状热力图,用于展现单个特征针对整体的相关度,以此列出所有特征,每个特征与整体的相关度,如下图所示。

需求:

(1)各个特征柱形条,按热力图规则采用渐变颜色,例如样图中采用’inferno’色带;
(2)由于渐变的原因,会出现接近背景的颜色,需要给柱形条加外边框;
(3)考虑过0的分界坐标;
(4)加注颜色渐变条形颜色棒(Colorbar);
(5)最好加上数据标注。

Python Matplotlib绘制渐变色柱状图(bar)并加边框和配置渐变颜色条(colorbar)

渐变颜色条采用matplotlib内置色带,也就是在cmap中提供了一些默认色带[color example code]
Python Matplotlib绘制渐变色柱状图(bar)并加边框和配置渐变颜色条(colorbar)

实现代码如下:

import matplotlib.pyplot as plt from matplotlib import cm def draw_bar(key_name,key_values): plt.rcParams['font.sans-serif']=['SimHei'] #显示中文标签 plt.rcParams['axes.unicode_minus']=False # 标准柱状图的值 def autolable(rects): for rect in rects: height = rect.get_height() if height>=0: plt.text(rect.get_x()+rect.get_width()/2.0 - 0.3,height+0.02,'%.3f'%height) else: plt.text(rect.get_x()+rect.get_width()/2.0 - 0.3,height-0.06,'%.3f'%height) # 如果存在小于0的数值,则画0刻度横向直线 plt.axhline(y=0,color='black') #归一化 norm = plt.Normalize(-1,1) norm_values = norm(key_values) map_vir = cm.get_cmap(name='inferno') colors = map_vir(norm_values) fig = plt.figure() #调用figure创建一个绘图对象 plt.subplot(111) ax = plt.bar(key_name,key_values,width=0.5,color=colors,edgecolor='black') # edgecolor边框颜色 sm = cm.ScalarMappable(cmap=map_vir,norm=norm) # norm设置最大最小值 sm.set_array([]) plt.colorbar(sm) autolable(ax) plt.show() if __name__ == '__main__': #multi_corr() key_name = ['时长','鹤位','设定量','发油量','发油率','时间','月份','日期','损溢量','温度','密度'] key_values = [0.1,0.9,1,1,0.4,0.3,-0.1,-0.6,0.2,0.4,0.5] draw_bar(key_name,key_values) 

由于作者水平有限,欢迎讨论。

参考:

plt绘图颜色渐变以及colormap 一方的天地 2018.12
Python实现柱状图【数字精准展示,使用不同颜色】 博客园 , 云山之巅 2019.07
Matplotlib中柱状图bar使用 博客园 ,1直在路上1 ,2018.09
colorbar for a broken bar chart Stack Overflow ,2017.05

本文地址:https://blog.csdn.net/xiaoyw/article/details/108845807