Matplotlib学习---用matplotlib画热图(heatmap)

时间:2023-03-09 20:05:47
Matplotlib学习---用matplotlib画热图(heatmap)

这里利用Nathan Yau所著的《鲜活的数据:数据可视化指南》一书中的数据,学习画图。

数据地址:http://datasets.flowingdata.com/ppg2008.csv

首先查看一下数据文件的前5行:

           Name     G   MIN   PTS   FGM   FGA    FGP  FTM  FTA    FTP ...   \
0 Dwyane Wade 79 38.6 30.2 10.8 22.0 0.491 7.5 9.8 0.765 ...
1 LeBron James 81 37.7 28.4 9.7 19.9 0.489 7.3 9.4 0.780 ...
2 Kobe Bryant 82 36.2 26.8 9.8 20.9 0.467 5.9 6.9 0.856 ...
3 Dirk Nowitzki 81 37.7 25.9 9.6 20.0 0.479 6.0 6.7 0.890 ...
4 Danny Granger 67 36.2 25.8 8.5 19.1 0.447 6.0 6.9 0.878 ... 3PA 3PP ORB DRB TRB AST STL BLK TO PF
0 3.5 0.317 1.1 3.9 5.0 7.5 2.2 1.3 3.4 2.3
1 4.7 0.344 1.3 6.3 7.6 7.2 1.7 1.1 3.0 1.7
2 4.1 0.351 1.1 4.1 5.2 4.9 1.5 0.5 2.6 2.3
3 2.1 0.359 1.1 7.3 8.4 2.4 0.8 0.8 1.9 2.2
4 6.7 0.404 0.7 4.4 5.1 2.7 1.0 1.4 2.5 3.1

这是NBA球员的比赛统计数据,比如说AST:(assists) 助攻次数,STL:(steals ) 抢断次数,等等。

让我们用这些统计数据来画一个热图,这样就可以大概知道哪个球员哪方面的得分比较高。

热图:ax.imshow(x,cmap=...)

代码如下:

import numpy as np
import pandas as pd
from matplotlib import pyplot as plt
NBA=pd.read_csv(r"http://datasets.flowingdata.com/ppg2008.csv")
fig,ax=plt.subplots(figsize=(10,20)) score=NBA.loc[:,"G":"PF"].values
name=NBA.iloc[:,0]
col=NBA.loc[:,"G":"PF"].columns im=ax.imshow(score,cmap='plasma_r') #用cmap设置配色方案
ax.xaxis.set_ticks_position('top') #设置x轴刻度到上方
ax.set_xticks(np.arange(len(col))) #设置x轴刻度
ax.set_yticks(np.arange(len(name))) #设置y轴刻度
ax.set_xticklabels(col) #设置x轴刻度标签
ax.set_yticklabels(name) #设置y轴刻度标签
fig.colorbar(im,pad=0.03) #设置颜色条
ax.set_title("NBA Average Performance (Top 50 Players)",x=0.2,y=1.034,fontsize=16) #设置标题以及其位置和字体大小 plt.show()

图像如下:

Matplotlib学习---用matplotlib画热图(heatmap)