热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

python热图显示圆形_Python数据可视化热图,力图

不要停止奔跑,不要回顾来路,来路无可眷恋,值得期待的只有前方。——《马男波杰克》​​​​一、matplotlib绘制热力图Matplotl

不要停止奔跑,不要回顾来路,来路无可眷恋,值得期待的只有前方。——《马男波杰克》 ​​​​

5b5a780e8b4ac48e9dc558d08075696b.png

一、matplotlib绘制热力图

Matplotlib是Python著名的2D绘图库,该库仿造Matlab提供了一整套相似的绘图函数,用于绘图和绘表,是强大的数据可视化工具和做图库,且绘制出的图形美观。

代码如下:

import pandas as pd

import matplotlib.pyplot as plt

import numpy as np

import matplotlib as mpl

df = pd.read_excel('real_estate_info.xlsx')

area = df['土地位置']

# 成都主要 区 县 市 9区6县4市

with open('test.txt', encoding='utf-8') as f:

areas = f.read().split('、')

for item in areas:

# 每个行政区 对每行数据都进行判断

# 土地位置里包含行政区名 值为规划建筑面积 不包含 值为0

# 得到19列 以行政区为列名 其下面值为规划建筑面积

df[item] = [eval(df.loc[x, '规划建筑面积'][:-1]) if item in df.loc[x, '土地位置'] else 0 for x in range(len(df['土地位置']))]

date = df['推出时间'].str.split('年', expand=True)[0] # 这列的字符串 按年切割

df['年份'] = date # 添加新的一列 年份

df1 = df[areas]

df1.index = df['年份']

df2 = df1.groupby('年份').sum()

# print(df2.iloc[:5, ::]) # 2020年数据只有到2月的 舍去

# print(type(df2.iloc[:5, ::].T)) # 转置

datas = np.array(df2.iloc[:5, ::].T) # 19行 5列 二维数组

print(datas)

x_label = [year for year in range(2015, 2020)]

y_label = areas

mpl.rcParams['font.family'] = 'Kaiti' # 中文显示

fig, ax = plt.subplots(figsize=(15, 9)) # 绘图

heatmap = plt.pcolor(datas)

for y in range(datas.shape[0]):

for x in range(datas.shape[1]):

plt.text(x + 0.5, y + 0.5, '%.1f' % datas[y, x], # 热力图种每个格子添加文本 数据项设置

horizontalalignment='center', verticalalignment='center',

)

# x y轴刻度设置

plt.xticks(np.arange(0.5, 5.5, 1))

plt.yticks(np.arange(0.5, 19.5, 1))

# x y轴标签设置

ax.set_xticklabels(x_label)

ax.set_yticklabels(areas)

# title

ax.set_title(r'各行政区2015-2019年的总规划建筑面积(平方米)', fontsize=25, x=0.5, y=1.02)

# 隐藏边框

ax.spines['top'].set_visible(False)

ax.spines['right'].set_visible(False)

ax.spines['left'].set_visible(False)

ax.spines['bottom'].set_visible(False)

plt.savefig('heat_map.png')

# 热力图 展示

plt.colorbar(heatmap)

plt.show()

运行效果如下:

d3f9f5f12181837c02157db8d94ed8bb.png

matplotlib绘制heatmap,该方法比较繁琐,要调用很多辅助函数才能实现效果更好的热图。

二、seaborn绘制热力图

Seaborn是基于matplotlib的Python可视化库。它提供了一个高级界面来绘制有吸引力的统计图形。Seaborn其实是在matplotlib的基础上进行了更高级的API封装,从而使得作图更加容易,不需要经过大量的调整就能使你的图变得精致。

seaborn.heatmap(data, vmin=None, vmax=None, cmap=None, center=None, robust=False,

annot=None, fmt=".2g", annot_kws=None,

linewidths=0, linecolor="white",

cbar=True, cbar_kws=None, cbar_ax=None,

square=False, xticklabels="auto", yticklabels="auto",

mask=None, ax=None, **kwargs):

data:矩阵数据集,可以是numpy的数组(ndarray),也可以是pandas的DataFrame。如果是DataFrame,则df的index/column信息会对应到heatmap上,即df.index对应到热力图的x轴,df.columns对应到热力图的y轴

vmax,vmin:分别是热力图的颜色取值最大和最小范围,默认是根据data数据表里的取值确定

center:数据表取值有差异时,设置热力图的色彩中心对齐值;通过设置center值,可以调整生成的图像颜色的整体深浅

robust:默认取值False;如果是True,且没设定vmin和vmax的值,热力图的颜色映射范围根据具有鲁棒性的分位数设定,而不是用极值设定

annot(annotate的缩写):默认取值False;如果为True,在热力图每个方格写入对应的数据

fmt:字符串格式代码,矩阵上标识数字的数据格式,比如保留小数点后几位数字

annot_kws:默认取值False;如果是True,设置热力图矩阵上数字的大小颜色字体

linewidths:定义热力图里表示两两特征关系的矩阵小块之间的间隔大小

linecolor:切分热力图上每个矩阵小块的线的颜色,默认值是 white

xticklabels,,yticklabels:xticklabels控制x轴标签的输出;yticklabels控制y轴标签的输出。默认值是auto,如果是True,则以DataFrame的index作为x轴标签、columns作为y轴的标签。如果是False,则不添加行标签名。如果是列表,则标签名改为列表中给的内容。如果是整数K,则在图上每隔K个标签进行一次标注。 如果是auto,则自动选择标签的标注间距,将标签名不重叠的部分(或全部)输出

mask:控制某个矩阵块是否显示出来。默认值是None。如果是布尔型的DataFrame,则将DataFrame里True的位置用白色覆盖掉

ax:设置作图的坐标轴,一般画多个子图时需要修改不同子图的该值

**kwargs:All other keyword arguments are passed to ax.pcolormesh

cbar:是否在热力图侧边绘制颜色刻度条,默认值是True

cbar_kws:热力图侧边绘制颜色刻度条时,相关字体设置,默认值是None

cbar_ax:热力图侧边绘制颜色刻度条时,刻度条位置设置,默认值是None

cmap:从数字到色彩空间的映射

cmap:从数字到色彩空间的映射,改变cmap参数可以改变图的颜色,cmap有以下选择:

Accent, Accent_r, Blues, Blues_r, BrBG, BrBG_r, BuGn, BuGn_r, BuPu, BuPu_r, CMRmap, CMRmap_r, Dark2, Dark2_r, GnBu, GnBu_r, Greens,Greens_r, Greys, Greys_r, OrRd, OrRd_r, Oranges, Oranges_r, PRGn, PRGn_r, Paired, Paired_r, Pastel1, Pastel1_r, Pastel2, Pastel2_r,

PiYG, PiYG_r, PuBu, PuBuGn, PuBuGn_r, PuBu_r, PuOr, PuOr_r, PuRd, PuRd_r, Purples, Purples_r, RdBu, RdBu_r, RdGy, RdGy_r, RdPu, RdPu_r, RdYlBu, RdYlBu_r, RdYlGn, RdYlGn_r, Reds, Reds_r, Set1, Set1_r, Set2, Set2_r, Set3, Set3_r, Spectral, Spectral_r, Wistia, Wistia_r, YlGn, YlGnBu, YlGnBu_r, YlGn_r, YlOrBr, YlOrBr_r, YlOrRd, YlOrRd_r, afmhot, afmhot_r, autumn, autumn_r, binary, binary_r, bone, bone_r, brg, brg_r, bwr, bwr_r, cividis, cividis_r, cool, cool_r, coolwarm, coolwarm_r, copper, copper_r, cubehelix, cubehelix_r, flag, flag_r, gist_earth, gist_earth_r, gist_gray, gist_gray_r, gist_heat, gist_heat_r, gist_ncar, gist_ncar_r, gist_rainbow, gist_rainbow_r, gist_stern, gist_stern_r, gist_yarg, gist_yarg_r, gnuplot, gnuplot2, gnuplot2_r, gnuplot_r, gray, gray_r, hot, hot_r, hsv, hsv_r, icefire, icefire_r, inferno, inferno_r, jet, jet_r, magma, magma_r, mako, mako_r, nipy_spectral, nipy_spectral_r, ocean, ocean_r, pink, pink_r, plasma, plasma_r, prism, prism_r, rainbow, rainbow_r, rocket, rocket_r, seismic, seismic_r, spring, spring_r, summer, summer_r, tab10, tab10_r, tab20, tab20_r, tab20b, tab20b_r, tab20c, tab20c_r, terrain, terrain_r, twilight, twilight_r, twilight_shifted, twilight_shifted_r, viridis, viridis_r, vlag, vlag_r, winter, winter_r

代码如下:

import matplotlib.pyplot as plt

import numpy as np

import seaborn as sns

import pandas as pd

import matplotlib as mpl

df = pd.read_excel('real_estate_info.xlsx')

area = df['土地位置']

# 成都主要 区 县 市 9区6县4市

with open('test.txt', encoding='utf-8') as f:

areas = f.read().split('、')

for item in areas:

# 每个行政区 对每行数据都进行判断

# 土地位置里包含行政区名 值为规划建筑面积 不包含 值为0

# 得到19列 以行政区为列名 其下面为规划建筑面积

df[item] = [eval(df.loc[x, '规划建筑面积'][:-1]) if item in df.loc[x, '土地位置'] else 0 for x in range(len(df['土地位置']))]

date = df['推出时间'].str.split('年', expand=True)[0] # 这列的字符串 按年切割

df['年份'] = date # 添加新的一列 年份

df1 = df[areas]

df1.index = df['年份']

df2 = df1.groupby('年份').sum()

# print(df2.iloc[:5, ::]) # 2020年数据只有到2月的 舍去

# print(type(df2.iloc[:5, ::].T)) # 转置

datas = np.array(df2.iloc[:5, ::].T) # 19行 5列 二维数组

print(datas, type(datas))

x_label = [year for year in range(2015, 2020)]

y_label = areas

mpl.rcParams['font.family'] = 'Kaiti'

fig, ax = plt.subplots(figsize=(15, 9))

# 绘制热力图 cmap:从数字到色彩空间的映射

sns.heatmap(data=df2.iloc[:5, ::].T, linewidths=0.25,

linecolor='black', ax=ax, annot=True,

fmt='.1f', cmap='OrRd', robust=True,

)

# 添加描述信息 x y轴 title

ax.set_xlabel('年份', fontdict={'size': 18, 'weight': 'bold'})

ax.set_ylabel('行政区', fontdict={'size': 18, 'weight': 'bold'})

ax.set_title(r'各行政区2015-2019年的总规划建筑面积(平方米)', fontsize=25, x=0.5, y=1.02)

# 隐藏边框

ax.spines['top'].set_visible(False)

ax.spines['right'].set_visible(False)

ax.spines['left'].set_visible(False)

ax.spines['bottom'].set_visible(False)

# 保存 展示图片

plt.savefig('heat_map.png')

plt.show()

运行效果如下:

f08cd1ad44419e17c4935ddf97e3e519.png

改变cmap参数,得到不同的效果:

1dc799ce580dfbf1537d90be72d3140b.png

a6933acbb3244e9e9dac7d16e7095f5f.png



推荐阅读
  • SpringMVC接收请求参数的方式总结
    本文总结了在SpringMVC开发中处理控制器参数的各种方式,包括处理使用@RequestParam注解的参数、MultipartFile类型参数和Simple类型参数的RequestParamMethodArgumentResolver,处理@RequestBody注解的参数的RequestResponseBodyMethodProcessor,以及PathVariableMapMethodArgumentResol等子类。 ... [详细]
  • 基于dlib的人脸68特征点提取(眨眼张嘴检测)python版本
    文章目录引言开发环境和库流程设计张嘴和闭眼的检测引言(1)利用Dlib官方训练好的模型“shape_predictor_68_face_landmarks.dat”进行68个点标定 ... [详细]
  • 本文介绍了Python对Excel文件的读取方法,包括模块的安装和使用。通过安装xlrd、xlwt、xlutils、pyExcelerator等模块,可以实现对Excel文件的读取和处理。具体的读取方法包括打开excel文件、抓取所有sheet的名称、定位到指定的表单等。本文提供了两种定位表单的方式,并给出了相应的代码示例。 ... [详细]
  • 本文介绍了在Python3中如何使用选择文件对话框的格式打开和保存图片的方法。通过使用tkinter库中的filedialog模块的asksaveasfilename和askopenfilename函数,可以方便地选择要打开或保存的图片文件,并进行相关操作。具体的代码示例和操作步骤也被提供。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 本文介绍了如何使用python从列表中删除所有的零,并将结果以列表形式输出,同时提供了示例格式。 ... [详细]
  • Spring学习(4):Spring管理对象之间的关联关系
    本文是关于Spring学习的第四篇文章,讲述了Spring框架中管理对象之间的关联关系。文章介绍了MessageService类和MessagePrinter类的实现,并解释了它们之间的关联关系。通过学习本文,读者可以了解Spring框架中对象之间的关联关系的概念和实现方式。 ... [详细]
  • Python爬虫中使用正则表达式的方法和注意事项
    本文介绍了在Python爬虫中使用正则表达式的方法和注意事项。首先解释了爬虫的四个主要步骤,并强调了正则表达式在数据处理中的重要性。然后详细介绍了正则表达式的概念和用法,包括检索、替换和过滤文本的功能。同时提到了re模块是Python内置的用于处理正则表达式的模块,并给出了使用正则表达式时需要注意的特殊字符转义和原始字符串的用法。通过本文的学习,读者可以掌握在Python爬虫中使用正则表达式的技巧和方法。 ... [详细]
  • 本文介绍了使用Python解析C语言结构体的方法,包括定义基本类型和结构体类型的字典,并提供了一个示例代码,展示了如何解析C语言结构体。 ... [详细]
  • 本文介绍了一种在PHP中对二维数组根据某个字段进行排序的方法,以年龄字段为例,按照倒序的方式进行排序,并给出了具体的代码实现。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 展开全部下面的代码是创建一个立方体Thisexamplescreatesanddisplaysasimplebox.#Thefirstlineloadstheinit_disp ... [详细]
  • 在重复造轮子的情况下用ProxyServlet反向代理来减少工作量
    像不少公司内部不同团队都会自己研发自己工具产品,当各个产品逐渐成熟,到达了一定的发展瓶颈,同时每个产品都有着自己的入口,用户 ... [详细]
  • 本文介绍了使用Python编写购物程序的实现步骤和代码示例。程序启动后,用户需要输入工资,并打印商品列表。用户可以根据商品编号选择购买商品,程序会检测余额是否充足,如果充足则直接扣款,否则提醒用户。用户可以随时退出程序,在退出时打印已购买商品的数量和余额。附带了完整的代码示例。 ... [详细]
  • JS实现一键分享功能
    本文介绍了如何使用JS实现一键分享功能,并提供了2019独角兽企业招聘Python工程师的标准。同时,给出了分享到QQ空间、新浪微博和人人网的链接。 ... [详细]
author-avatar
Aries小阳光
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有