Mô-đun python seaborn dựa trên matplotlib và tạo ra một bản đồ nhiệt rất đẹp.
Dưới đây là một triển khai với seaborn, được thiết kế cho máy tính xách tay ipython / jupyter.
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline
# import the data directly into a pandas dataframe
nba = pd.read_csv("http://datasets.flowingdata.com/ppg2008.csv", index_col='Name ')
# remove index title
nba.index.name = ""
# normalize data columns
nba_norm = (nba - nba.mean()) / (nba.max() - nba.min())
# relabel columns
labels = ['Games', 'Minutes', 'Points', 'Field goals made', 'Field goal attempts', 'Field goal percentage', 'Free throws made',
'Free throws attempts', 'Free throws percentage','Three-pointers made', 'Three-point attempt', 'Three-point percentage',
'Offensive rebounds', 'Defensive rebounds', 'Total rebounds', 'Assists', 'Steals', 'Blocks', 'Turnover', 'Personal foul']
nba_norm.columns = labels
# set appropriate font and dpi
sns.set(font_scale=1.2)
sns.set_style({"savefig.dpi": 100})
# plot it out
ax = sns.heatmap(nba_norm, cmap=plt.cm.Blues, linewidths=.1)
# set the x-axis labels on the top
ax.xaxis.tick_top()
# rotate the x-axis labels
plt.xticks(rotation=90)
# get figure (usually obtained via "fig,ax=plt.subplots()" with matplotlib)
fig = ax.get_figure()
# specify dimensions and save
fig.set_size_inches(15, 20)
fig.savefig("nba.png")
Kết quả đầu ra như sau:
Tôi đã sử dụng bản đồ màu matplotlib Blues, nhưng cá nhân tôi thấy màu sắc mặc định khá đẹp. Tôi đã sử dụng matplotlib để xoay các nhãn trục x, vì tôi không thể tìm thấy cú pháp seaborn. Như đã lưu ý bởi grexor, cần phải chỉ định kích thước (fig.set_size_inches) bằng cách thử và sai, điều này tôi thấy hơi bực bội.
Theo lưu ý của Paul H, bạn có thể dễ dàng thêm các giá trị vào bản đồ nhiệt (annot = True), nhưng trong trường hợp này, tôi không nghĩ rằng nó đã cải thiện con số. Một số đoạn mã được lấy từ câu trả lời xuất sắc của joelotz.