分享

只会柱状图、饼状图、折线图怎么行,来用Python画个热力图

 北方的白桦林 2020-11-13

花花世界迷人眼,东西太多不知选?万物存在即合理,不知根本,难得善法,不宜轻易。术业有专攻,凡事不能蛮干,不知怎么画热力图,请往下看。



第一步

安装并导入相关包

主要用到了pandas和pyecharts这两个包,pandas用来读取我存放在Excel中的数据,pyecharts用来将数据可视化。

这里需要注意pyecharts的版本,因为不同版本之间的代码可能有所不同,本文安装的是最新版,即1.7.1版本。
如果没有这两个包则先安装:
pip install pyechartspip install pandas
安装完成后导入:
import pandas as pdfrom pyecharts import options as optsfrom pyecharts.charts import HeatMap



第二步

用pandas读取数据

我数据放在Excel中,如下:

用pandas读取数据:

data = pd.read_excel('学生成绩.xlsx')x = data['姓名'].tolist()y = data.columns.values[1:].tolist()values = [[i, j, int(data.iloc[i, j+1])] for i in range(len(x)) for j in range(len(y))]
其中最后一行代码是,将每一个成绩与其对应的行列索引(也可以理解成坐标)组合在一起。

我知道这么说大家肯定不理解,所以我就直接将values值打印出来,如下:

[[0085], [0173], [0262], [0378], [0487], [0580], [0665], [0794], [0882], [1072], [1162], [1277], [1360], [1478], [1568], [1675], [1762], [1893], [2096], [2180], [2270], [2385], [2470], [2583], [2690], [2775], [2883], [3078], [3170], [3260], [3379], [3489], [3570], [3665], [3776], [3895], [4065], [4181], [4275], [4396], [4477], [4588], [4678], [4790], [4883], [5070], [5190], [5265], [5391], [5485], [5575], [5670], [5783], [5872], [6076], [6160], [6270], [6383], [6465], [6580], [6668], [6793], [6885]]



第三步

用pyecharts画图

myHeatMap = HeatMap()myHeatMap.add_xaxis(x)myHeatMap.add_yaxis('学生成绩', y, values)myHeatMap.set_global_opts(title_opts=opts.TitleOpts(title='HeatMap'),                          visualmap_opts=opts.VisualMapOpts(min_=60, max_=100))myHeatMap.render(path='学生成绩.html')

额,上面应该没什么好说的,大家看看就懂。

其中60和100表示我数据的范围,因为所有的成绩都在60至100区间内。
将以上代码运行后,就会得到一个html文件,打开后如下:



其实我事先准备了一些内容,用来叙述为什么用热力图,而不用其它图,但是写出来后发现有点抽象,对读者不太友好。

所以我只能让各位自己私下细品了,各位可以想象一下用其它图画出来会是什么样,有没有热力图直观。

最后希望大家能品出什么样的数据适合什么样的图...

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多