1. 引言
嘿,小伙伴们!今天咱们来点不一样的,走进Matplotlib的神奇世界,一起绘制那让人热血沸腾的热力图!别误会,这可不是什么天气预报图,而是让数据“火辣辣”展现自我的秘密武器。想象一下,那些冷冰冰的数字,在Matplotlib的魔法下,瞬间变身成为色彩斑斓的火焰图,每一格都诉说着它的故事。不论你是数据小白还是分析大神,这一招学会,保证让你的报告不再沉闷,让听众眼前一亮!快来,咱们一起给数据加点“辣”!热力图是一种通过对色块着色显示数据的统计图表。绘图时,需指定颜色映射的规则。
2. 导包
# 导包
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
# 如果浏览器不显示图片,就需要加上这句话
%matplotlib inline
# 让图片中可以显示中文
plt.rcParams['font.sans-serif'] = "SimHei"
# 让图片中可以显示负号
plt.rcParams["axes.unicode_minus"] = False
# 支持svg矢量图
%config Inlinebackend.figure_format = "svg"
3. 绘制热力图
df = pd.read_excel("11_imshow.xlsx", sheet_name="imshow")
df
省份 | 产品A | 产品B | 产品C | 产品D | 产品E | 产品F | 产品G | |
---|---|---|---|---|---|---|---|---|
0 | 广东 | 9275 | 8498 | 5019 | 4468 | 3637 | 5997 | 8307 |
1 | 广西 | 9849 | 8413 | 9222 | 6162 | 3401 | 4045 | 1983 |
2 | 湖南 | 5413 | 7855 | 2973 | 197 | 1078 | 4316 | 6213 |
3 | 湖北 | 7425 | 9862 | 3341 | 7923 | 4348 | 3878 | 3065 |
4 | 江西 | 1159 | 1334 | 1927 | 9884 | 8205 | 5933 | 6321 |
5 | 四川 | 8869 | 8405 | 8244 | 5410 | 8609 | 3332 | 8103 |
6 | 福建 | 4189 | 2610 | 2293 | 8297 | 2708 | 2305 | 9252 |
7 | 江苏 | 5818 | 7852 | 3670 | 5593 | 1827 | 5824 | 4199 |
8 | 河南 | 9914 | 8509 | 3010 | 8881 | 1950 | 7763 | 2435 |
9 | 河北 | 1374 | 7141 | 9549 | 9895 | 7170 | 3065 | 7211 |
10 | 山东 | 7908 | 4466 | 3310 | 7333 | 7452 | 4683 | 2780 |
11 | 山西 | 8703 | 2270 | 5979 | 9614 | 9307 | 2951 | 6253 |
data = df.drop(columns="省份").values
data
array([[9275, 8498, 5019, 4468, 3637, 5997, 8307],
[9849, 8413, 9222, 6162, 3401, 4045, 1983],
[5413, 7855, 2973, 197, 1078, 4316, 6213],
[7425, 9862, 3341, 7923, 4348, 3878, 3065],
[1159, 1334, 1927, 9884, 8205, 5933, 6321],
[8869, 8405, 8244, 5410, 8609, 3332, 8103],
[4189, 2610, 2293, 8297, 2708, 2305, 9252],
[5818, 7852, 3670, 5593, 1827, 5824, 4199],
[9914, 8509, 3010, 8881, 1950, 7763, 2435],
[1374, 7141, 9549, 9895, 7170, 3065, 7211],
[7908, 4466, 3310, 7333, 7452, 4683, 2780],
[8703, 2270, 5979, 9614, 9307, 2951, 6253]], dtype=int64)
y = df["省份"]
x = df.drop(columns="省份").columns
x
Index(['产品A', '产品B', '产品C', '产品D', '产品E', '产品F', '产品G'], dtype='object')
plt.figure(figsize=(8, 6))
# 热力图
plt.imshow(data, cmap="rainbow")
# 设置刻度
plt.xticks(range(len(x)), x)
plt.yticks(range(len(y)), y)
# 添加文字
for i in range(len(x)):
for j in range(len(y)):
plt.text(
x = i,
y = j,
s = data[j, i],
ha = "center",
va="center",
fontsize=10
)
# 颜色条
plt.colorbar()
plt.show()