成图效果如下

下面将热力图的绘制分为导入数据格式与代码。

1、导入数据格式

可以在excel里将数据先编辑好,导入python以后,第一行是默认的列标签,所以第一行一定不要有需要绘制的数据。

 2、代码

热力图可设置的参数:数据来源,数据是否显示在图上,保留几位小数;图标标题,横纵坐标轴标题,横纵坐标轴标签;色条最大最小值,色条颜色。

色条颜色可以参考这篇文章:python matplotlib自定义colorbar颜色条-以及matplotlib中的内置色条

其中通过设置色条最大最小值就可以解决少数值过大从而使得大部分色块区别不明显的问题。

画好以后就可以导出到自己想要保存的路径。

import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
pd.set_option('expand_frame_repr',False)
df=pd.read_csv(r"D:\柳州\速度报警类型.csv",encoding='utf-8')
y_ticks = ['车道偏离报警','分神驾驶报警','车距过近报警','生理疲劳报警','前向碰撞报警','驾驶员异常报警',
           '抽烟报警','接打电话报警',
           '自动抓拍事件','行人碰撞报警','驾驶员变更事件']
x_ticks = ['0', '1-20', '21-40','41-60','61-87']  # 自定义横纵轴标签
plt.rcParams['font.sans-serif'] = ['SimHei'] #可以正常显示中文
ax = sns.heatmap(df,annot=True,fmt='.0f',cmap="Blues",vmax=350, vmin=20,xticklabels=x_ticks, yticklabels=y_ticks)
#  annot=True表示每一个格子显示数字;fmt='.0f'表示保留0位小数,同理fmt='.1f'表示保留一位小数
#  camp表示颜色,在另一个博主的文章中讲解的很清晰
#  vmax=350, vmin=20表示右侧颜色条的最大最小值,在最大最小值外的颜色将直接以最大或最小值的颜色显示,
#  通过此设置就可以解决少数值过大从而使得大部分色块区别不明显的问题
#  xticklabels=x_ticks, yticklabels=y_ticks,横纵轴标签
ax.set_title('分速度报警类型分布')  # 图标题
ax.set_xlabel('速度(公里/时)')  # x轴标题
ax.set_ylabel('报警类型')  # y轴标题
plt.show()
figure = ax.get_figure()
figure.savefig('D:\柳州\分速度报警类型.jpg')  # 保存图片

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐