600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > 数据可视化|用热力地图进行数据分析

数据可视化|用热力地图进行数据分析

时间:2021-10-09 21:27:38

相关推荐

数据可视化|用热力地图进行数据分析

01

热力地图是根据指标数据的大小,对各地区按比例填充颜色,用颜色的深浅代表数值的大小。由于展现的数据与地理位置相关,所以让信息沟通变得更加直观形象,也更具专业的品质。

传统的数据地图,地理区域的面积大小严重失衡,但是这又与展示的数据大小无关,造成面积小的区域在地图上可能难以识别。比如说,北京和上海,在地图上常常看不清楚。

为了统一各区域的大小,同时体现相对的地理位置,我们使用正六边形来代替地图上的区域。

比如说,为了展现各省 年的 GDP 数据,我们可以制作一个如下的热力地图:

从上面的热力地图可以直观地看出,广东和江苏的 GDP 明显高于其他地区。

02

你可以前往 /linjiwx/mp 下载画图用的数据和完整代码。

下面是作图的过程。

首先,导入所需的库,并设置中文字体和定义颜色等。

#导入所需的库importpandasaspdimportnumpyasnpfromplotnineimport*frompylabimportmplimportmatplotlib.pyplotaspltimportmatplotlib.patchesasmpathesfrommatplotlib.collectionsimportPatchCollectionfrommatplotlibimportcm,colors#正常显示中文标签mpl.rcParams['font.sans-serif']=['SimHei']#正常显示负号mpl.rcParams['axes.unicode_minus']=False#禁用科学计数法pd.set_option('display.float_format',lambdax:'%.2f'%x)#定义颜色,主色:蓝色,辅助色:灰色,互补色:橙色c={'蓝色':'#00589F','深蓝色':'#003867','浅蓝色':'#5D9BCF','灰色':'#999999','深灰色':'#666666','浅灰色':'#CCCCCC','橙色':'#F68F00','深橙色':'#A05D00','浅橙色':'#FBC171'}

其次,读取和定义数据。

#从Excel文件中读取数据df=pd.read_excel('./data/中国省份坐标.xlsx')gdp=pd.read_excel('./data/各省GDP数据.xlsx')#计算每个省份的中心坐标df_center=df.groupby('Province').mean()#合并省份坐标和数据dfxy=pd.merge(df_center,gdp,on='Province',how='left')#定义颜色数值color_value=np.array(dfxy.GDP)

接下来,开始用「面向对象」的方法进行画图。

#使用「面向对象」的方法画图,定义图片的大小fig,ax=plt.subplots(figsize=(16,9))#设置背景颜色fig.set_facecolor('w')ax.set_facecolor('w')#设置标题ax.set_title('\n各省的GDP数据',loc='center',fontsize=26)#循环设置每个省份patches=[]forProvinceinnp.unique(df['Province']):#筛选每个省份的数据dfp=df[df['Province']==Province]#多边形的每个位置rect=mpathes.Polygon([(x,y)forx,yinzip(dfp['x'],dfp['y'])])patches.append(rect)#多边形内部显示省份名称和数据ax.text(df_center.loc[Province].x,df_center.loc[Province].y,'\n'+Province+'\n'+'%.2f'%dfxy[dfxy['Province']==Province].GDP.values[0],fontsize=15,va='center',ha='center',color=c['深灰色'])#填充形状和颜色collection=PatchCollection(patches,alpha=0.5,cmap=plt.cm.Oranges,ec=c['浅灰色'],fc='w',lw=1)collection.set_array(color_value)ax.add_collection(collection)#隐藏边框ax.spines['top'].set_visible(False)ax.spines['right'].set_visible(False)ax.spines['left'].set_visible(False)ax.spines['bottom'].set_visible(False)#隐藏X、Y轴ax.xaxis.set_visible(False)ax.yaxis.set_visible(False)#避免变形plt.axis('equal')plt.show()

03

被誉为「摩天大楼之父」的美国著名建筑设计师路易斯·沙利文曾经说过一句名言:

形式永远服从于功能。

这句话用在数据可视化领域非常恰当,数据可视化是为了让数据更容易被读者理解,而不是为了炫耀。我们所使用的每一种视觉效果,都应该有其明确的、有价值的作用。

试想一下,如果我们的数据可视化作品,并没有提高易读性,而仅是为了美观或是为了炫耀自己使用软件的能力,那么同时使用多种效果只会加大读者阅读的难度。

无论你是否花费了大量的努力来精心制作,只要没人能理解你想表达的内容,你的数据可视化作品就是失败的,而你就应该有责任去解决这个问题。

●10万条弹幕,发现战神终极奥义!

●12000+字超详细 SQL 语法速成!

后台回复“入群”即可加入小z干货交流群

干货????

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。