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()

 

图像如下:

 

posted @ 2018-08-15 19:12  HuZihu  阅读(8859)  评论(0编辑  收藏  举报