python 柱形图实现不了渐变_Python Matplotlib绘制渐变色柱状图(bar)并加边框和配置渐变颜色条(colorbar)...

本文介绍了如何使用Python的Matplotlib库创建渐变色柱状图,并展示了实现细节,包括设置渐变色带、添加边框、考虑0分界线、添加颜色条和数据标注。示例代码展示了具体实现方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

需求:

(1)各个特征柱形条,按热力图规则采用渐变颜色,例如样图中采用’inferno’色带;

(2)由于渐变的原因,会出现接近背景的颜色,需要给柱形条加外边框;

(3)考虑过0的分界坐标;

(4)加注颜色渐变条形颜色棒(Colorbar);

(5)最好加上数据标注。

渐变颜色条采用matplotlib内置色带,也就是在cmap中提供了一些默认色带 [color example code] :

实现代码如下:

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)

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

参考:

Matplotlib中柱状图bar使用 博客园 ,1直在路上1 ,2018.09

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值