数据可视化门类一览——小白也能学会(Python)

之前被老师说写论文图表单一,不是柱状图就是折线图,于是作者本人痛定思痛>﹏<,决心搜罗五花八门的数据可视化图表(虽然有点花里胡哨,不过能用就行)
注:以下绘图数据来源并不准确,大家看个乐呵就行

01对比图

1-1 柱状图

柱状图对于数据的呈现较为直观,一般都是关注数据的值,和他们之间量的对比。

(1)基础柱状图

基础柱状图
代码如下:

import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']  #设置中文
import seaborn as sns
# 示例数据
categories = ['数据结构与算法', '数学分析', '高等代数', '实分析']
values = [14, 15, 16, 9]

edgecolor = 'black'  # 边框颜色
# 使用 seaborn 提供的调色板
colors = sns.color_palette('pastel', n_colors=len(categories))
# 创建柱状图
bars = plt.bar(categories, values, color=colors, edgecolor=edgecolor, width=0.5)  # 设置宽度

# 添加标题和标签
plt.title('数学系学生对课程的喜爱值')
plt.xlabel('课程')
plt.ylabel('值')

# 显示图形
plt.show()

plt.bar是matplotlib中绘制柱状图的函数,传入参数解释如下:

bars = plt.bar(categories, values, color=colors, edgecolor=edgecolor, width=0.5)
传入参数解释
categories类别, x x x轴上的各个离散值
values y y y轴上的数值
color颜色,例如’black’、‘red’
edgecolor边框颜色
width宽度

由于作者认为Python自带的颜色一言难尽,因此使用了seaborn的调色板:

colors = sns.color_palette(‘pastel’, n_colors=len(categories))
传入参数解释
‘pastle’seaborn的一种柔和的调色风格,类似的还有’deep’,‘muted’,‘dark’
n_colors颜色的个数

(2)分组柱状图

分组柱状图
代码如下(也就和基础柱状图差不多),要注意设置一下间距:

import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif'] = ['SimHei']

# 示例数据
categories = ['北京', '上海', '广州', '深圳']
values1 = [10, 15, 7, 20]  # 组1的数据
values2 = [12, 18, 9, 22]  # 组2的数据
values3 = [15, 16, 20, 14]
bar_width = 0.2  # 柱子宽度

# 生成每组柱子的x轴位置
x = np.arange(len(categories))

# 创建分组柱状图
fig, ax = plt.subplots()
# 绘制两组柱状图
bars1 = ax.bar(x - bar_width, values1, bar_width, label='食物',color='lightblue')
bars2 = ax.bar(x , values2, bar_width, label='电子产品',color='lightgreen')
bars3 = ax.bar(x+bar_width,values3,bar_width,label='化妆品',color='orange')

# 添加标题和标签
ax.set_title('不同城市对不同消费品的喜爱程度')
ax.set_xlabel('类别')
ax.set_ylabel('值')
ax.set_xticks(x)
ax.set_xticklabels(categories)
ax.legend()

# 显示图形
plt.show()

(3) 条形图

值得注意的是,一般来说这种横向的条形图(Horizontal Bar)都是由高到低排序的。
条形图

代码如下:

import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns
plt.rcParams['font.sans-serif']=['SimHei']
# 示例数据
categories = ['北京', '上海', '广州', '深圳']
values = [30, 30, 25, 15]
colors=sns.color_palette('pastel', n_colors=len(categories))

sorted_indices = np.argsort(values)  # 从大到小排序的索引
sorted_categories = np.array(categories)[sorted_indices]
sorted_values = np.array(values)[sorted_indices]

# 创建水平条形图
bars=plt.barh(sorted_categories, sorted_values, color=colors, edgecolor='black')

plt.xlim(0,35)
# 添加标题和标签
plt.title('年轻人最想去的大城市在调查中的占比')
plt.xlabel('值')
plt.ylabel('城市')
for bar in bars:
    plt.text(plt.xlim()[1], bar.get_y() + bar.get_height() / 2, f'{bar.get_width()}%', va='center', ha='right', fontweight='bold', color='darkblue' , family='serif',fontsize=12)
# 显示图形
plt.show()

使用的API是

plt.barh(categories, values, color=colors, edgecolor=‘black’)

跟前面的代码差不多,不再赘述(作者懒,不想写了)

(4)双向柱状图

双向柱状图常用于人口统计对比,可以直观看出两个类别之间数值的差异。
双向柱状图
代码如下(实质是将数据变成负数绘图,本质上和条形图的绘制是一样的):

import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif'] = ['SimHei']

# 示例数据
categories = ['0-10', '10-20', '20-30', '30-40', '40-50', '50+']
male_population = [7, 15, 25, 35, 20, 5]  # 男性人口数据
female_population = [10, 20, 15, 30, 20, 10]  # 女性人口数据

# 生成每组柱子的x轴位置
y = np.arange(len(categories))
bar_width = 1  # 柱子的宽度

# 创建双向柱状图
fig, ax = plt.subplots(figsize=(10, 6))

# 绘制男性人口的柱状图(向右)
bars1 = ax.barh(y, male_population, bar_width, label='男性', color='skyblue', edgecolor='black')
# 绘制女性人口的柱状图(向左),数据取负值
bars2 = ax.barh(y, [-v for v in female_population], bar_width, label='女性', color='salmon', edgecolor='black')

# 设置坐标轴标签
ax.set_yticks(y)
ax.set_yticklabels(categories)
ax.set_xticks((-40,-25,0,25,40),('40','25','0','25','40'))  #重置x轴的显示,不然会显示成负数
ax.set_xlabel('人口数量')
ax.set_title('社区不同年龄段男女人口对比')

# 添加数据标签
for bar in bars1:
    plt.text(bar.get_width() + 1, bar.get_y() + bar.get_height() / 2, f'{bar.get_width()}', va='center', ha='left')

for bar in bars2:
    plt.text(bar.get_width() - 1, bar.get_y() + bar.get_height() / 2, f'{-bar.get_width()}', va='center', ha='right')

# 添加图例
ax.legend()
# 显示图形
plt.show()

(5)堆叠柱状图

堆叠柱状图可以很直观地看出不同数据的对比,缺点是同一类别的柱子有时候不在同一水平线上,肉眼对比不好判断。
堆叠柱状图

代码如下:

import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif']=['SimHei']
# 示例数据
categories = ['一班', '二班', '三班']
values1 = [10, 20, 30]  #三个班关于王者荣耀的数据
values2 = [15, 25, 10]
values3 = [20, 30, 50]

# 创建一个图形对象和一个坐标轴对象
fig, ax = plt.subplots()

# 绘制堆叠柱状图
bar_width = 0.5
index = np.arange(len(categories))

# 绘制第一个数据集
ax.bar(index, values1, bar_width, label='王者荣耀')

# 绘制第二个数据集,堆叠在第一个数据集上
ax.bar(index, values2, bar_width, bottom=values1, label='原神')

# 绘制第三个数据集,堆叠在前两个数据集上
ax.bar(index, values3, bar_width, bottom=np.array(values1) + np.array(values2), label='蛋仔派对')

# 添加标签和标题
ax.set_xlabel('班级')
ax.set_ylabel('人数')
ax.set_title('三个班喜欢的游戏数据')
ax.set_xticks(index)
ax.set_xticklabels(categories)
ax.legend()

# 显示图形
plt.show()

该代码的核心在于设置bar中的bottom参数,让其与上一个数据的顶部平齐即可。

(6)百分比堆叠柱状图

这实际上是堆叠柱状图的一个改进,百分比堆叠柱状图的上下都是平齐的,对于表示百分比数据非常方便。仍然以上面堆叠柱状图所调查的主题作为例子:

百分比堆叠柱状图
代码如下:

import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif']=['SimHei']
# 示例数据
categories = ['一班', '二班', '三班']
values1 = [10, 20, 30]  #三个班关于王者荣耀的数据
values2 = [15, 25, 10]
values3 = [20, 30, 50]

# 计算总值
total_values = np.array(values1) + np.array(values2) + np.array(values3)

# 计算百分比
percentage1 = np.array(values1) / total_values * 100
percentage2 = np.array(values2) / total_values * 100
percentage3 = np.array(values3) / total_values * 100

# 创建图形对象和坐标轴对象
fig, ax = plt.subplots()

# 绘制百分比堆叠柱状图
bar_width = 0.5
index = np.arange(len(categories))

# 绘制第一个数据集
bars1 = ax.bar(index, percentage1, bar_width, label='王者荣耀')

# 绘制第二个数据集,堆叠在第一个数据集上
bars2 = ax.bar(index, percentage2, bar_width, bottom=percentage1, label='原神')

# 绘制第三个数据集,堆叠在前两个数据集上
bars3 = ax.bar(index, percentage3, bar_width, bottom=percentage1 + percentage2, label='蛋仔派对')

# 添加标签和标题
ax.set_xlabel('班级')
ax.set_ylabel('人数占比/%')
ax.set_title('三个班关于喜爱游戏的数据')
ax.set_xticks(index)
ax.set_xticklabels(categories)
ax.legend()

# 显示图形
plt.show()

1-2 饼状图

(1)雷达图

雷达图一般适用于类别较少,且差别不算太大的情况下,对于数据的对比非常直观。

例子1:基本雷达图

雷达图
代码如下:

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.patches import Patch
from matplotlib.lines import Line2D
plt.rcParams['font.sans-serif']=['SimHei']
# 示例数据
categories = ['体能', '学习', '社交', '科研', '对人类的大爱']
values = [4, 3, 2, 5, 4]

# 计算雷达图的角度
num_vars = len(categories)
angles = np.linspace(0, 2 * np.pi, num_vars, endpoint=False).tolist()

# 使雷达图闭合
values += values[:1]
angles += angles[:1]

fig, ax = plt.subplots(figsize=(6, 6), subplot_kw=dict(polar=True))  #使用极坐标

# 绘制雷达图
ax.fill(angles, values, color='blue', alpha=0.25)  #填充雷达图
ax.plot(angles, values, color='blue', linewidth=2)

# 设置雷达图的标签
ax.set_xticks(angles[:-1])
ax.set_yticks([1, 2, 3, 4, 5])
ax.set_yticklabels(['1', '2', '3', '4', '5'],fontsize=15)  #  设置极坐标的刻度标签,注意:这不是直角坐标系,不能用yticks
ax.set_xticklabels(categories,fontsize=13)

# 添加图例
legend_elements = [Line2D([0], [0], color='blue', lw=2, label='第一名同学')]  #如果之后有别的也可以添加做堆叠雷达图
ax.legend(handles=legend_elements, loc='upper right', bbox_to_anchor=(1.1, 1.1))

# 添加标题
ax.set_title('论五边形战士的自我修养', size=20, color='blue', y=1.03)

# 显示图形
plt.show()

这里最主要的是用到了极坐标,其本质是极坐标下的折线图。

fig, ax = plt.subplots(figsize=(6, 6), subplot_kw=dict(polar=True))

利用polar=True开启极坐标后,可以观察到

ax.fill(angles, values, color=‘blue’, alpha=0.25)
ax.plot(angles, values, color=‘blue’, linewidth=2)

传入参数变成了极角和极径

例子2:堆叠雷达图

在这里插入图片描述
代码如下:

import matplotlib.pyplot as plt
import pandas as pd
from math import pi

# 设置数据
df = pd.DataFrame({
    'group': ['Bejing', 'Shanghai', 'Shenzhen'],
    'Transportation': [35, 30, 30],  #这里输入的是,固定x轴上的某个点,不同分组的值
    'Medicine': [29, 25, 30,],
    'Trade': [8, 39, 23],
    'Free':[5, 25, 34],
    'landscape':[4, 8, 9]
})

# 目标数量
categories = list(df)[1:]
N = len(categories)

# 角度
angles = [n / float(N) * 2 * pi for n in range(N)]
angles += angles[:1]


fig,ax = plt.subplots(subplot_kw=dict(polar=True))

# 设置起始轴
ax.set_theta_offset(pi / 2)

# 添加背景信息
plt.xticks(angles[:-1], categories)
ax.set_rlabel_position(0)
plt.yticks([10, 20, 30], ["10", "20", "30"], color="grey", size=7)

# 添加数据图

# 一
values = df.loc[0].drop('group').values.flatten().tolist()
values += values[:1]
ax.plot(angles, values, linewidth=1, linestyle='solid', label="Beijing",color='green')
ax.fill(angles, values, 'green', alpha=0.1)  #alpha是用于调节透明度的

# 二
values = df.loc[1].drop('group').values.flatten().tolist()
values += values[:1]
ax.plot(angles, values, linewidth=1, linestyle='solid', label="Shanghai",color='blue')
ax.fill(angles, values, 'blue', alpha=0.1)
# 三
values = df.loc[2].drop('group').values.flatten().tolist()
values += values[:1]
ax.plot(angles, values, linewidth=1, linestyle='solid', label="Shanghai",color='orange')
ax.fill(angles, values, 'orange', alpha=0.1)
# 添加图例
plt.legend()

# 显示
plt.show()

(2)玉玦图

这个图在市场分析中相当常见,在使用和分析玉玦图的时候,我们要注意,在数值相等,即玦块角度相同的状况下,外侧的环块会显得比内侧的更长。在这种情况下,我们很容易误认为外侧的数值会大于内侧。
玉玦图长这样:
玉玦图(网图,侵删)
Python中绘制玉玦图还是相当困难的,echarts库应该可以绘制的(不过作者没有安装echarts库,就先这样吧)
推荐一个可视化的网站:AntV绘制玉玦图

(3)南丁格尔玫瑰图

南丁格尔玫瑰图以面积形象的展示数值的大小,传闻其发明者的初衷是为了记录战争期间士兵的伤亡人数,后来逐渐演变成为一个常用的统计图表。
南丁格尔玫瑰图)
代码如下:

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.cm as cm
plt.rcParams['font.sans-serif']=['SimHei']
# 数据生成
num_bins = 8  # 分段数量
theta = np.linspace(0.0, 2 * np.pi, num_bins, endpoint=False)  # 角度
r = np.array([8,10,16,11,6,9,12,8]) # 随机生成数据
r = np.concatenate((r, [r[0]]))  # 闭合环
theta = np.concatenate((theta, [theta[0]]))  # 闭合环

# 绘制图表
fig, ax = plt.subplots(figsize=(8, 8), subplot_kw=dict(polar=True))
# 使用渐变色
cmap = cm.get_cmap('plasma')  # 可以选择其他渐变色,如 'plasma', 'inferno', 'magma'
colors = cmap(np.linspace(0, 1, num_bins))
# 注意:这里宽度的计算需要确保每个柱状图之间没有重叠
width = 2 * np.pi / num_bins  # 每个扇区的宽度
bars = ax.bar(theta[:-1], r[:-1], width=width, color=colors, alpha=0.6, edgecolor='black')

# 标签设置
ax.set_yticks([2,4,6,8,10])
ax.set_yticklabels(['2','4','6','8','10'])
# 添加文本标签
labels = ['北京', '河北', '江苏', '福建', '江西', '湖北', '澳门', '河南']  # 每个分段的标注内容
for i in range(num_bins):
    angle = theta[i]    # 每个柱状图的中间角度
    distance = r[i] * 0.7  # 距离圆心的距离,适当调整以确保标签不重叠
    ax.text(angle, distance, labels[i], ha='center', va='center', fontsize=20, color='black')

# 标签设置
plt.title('不同省份游泳热爱度(单位:cm)',fontsize=20)
plt.show()

其本质是极坐标下的柱状图,仍然利用的是bar函数。

(4)词云

使用词云时需要导入wordcloud库。通常用于对搜索数据,小说,长文章等进行数据分析。
词云
首先在Terminal导入wordcloud库

pip install wordcloud

代码如下:

from wordcloud import WordCloud
import matplotlib.pyplot as plt

# 添加更多词语
text = ("Python Python Python java java java java Cplus Cplus Csharp "
        "JavaScript JavaScript JavaScript JavaScript Ruby Ruby Ruby Ruby "
        "PHP PHP PHP PHP Swift Swift Swift Swift Kotlin Kotlin Kotlin Kotlin "
        "Go Go Go Go R R R R TypeScript TypeScript TypeScript TypeScript")

# 创建词云对象
wordcloud = WordCloud(
    width=800,                 # 图像宽度
    height=800,                # 图像高度
    background_color='white',  # 背景颜色
    colormap='viridis',        # 词云颜色映射
    contour_color='black',     # 轮廓颜色
    contour_width=1,           # 轮廓宽度
    max_font_size=80,          # 最大字体大小,减小以紧凑排列
    min_font_size=8,           # 最小字体大小,减小以紧凑排列
    margin=2,                  # 边距
    prefer_horizontal=0.9,     # 词云中文字的水平显示比例
    collocations=False         # 不包括词组
).generate(text)

# 显示词云图
plt.figure(figsize=(10, 10))  # 调整图形尺寸
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis("off")  # 关闭坐标轴
plt.show()

02 趋势图

2-1 折线图

折线图的优点是可以直观地展现数据变化的趋势,特别是对于一些时间序列来说,例如一个季度。

(1)基础折线图

可以说是从小学就见过的图表类型,非常经典了。
基础折线图
代码如下:

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
plt.rcParams['font.sans-serif']=['SimHei']
x=[1,2,3,4,5,6,7,8,9,10]
y1=[5,7,2,6,8,5,7,3,6,5]
y2=[5,9,2,6,4,7,2,4,6,12]
y3=[6,8,9,1,5,2,3,16,2,4]

# 绘制显示
plt.plot(x, y1, linestyle='-', marker='o',label='广州')
plt.plot(x, y2, linestyle='-', marker='o',label='中山')
plt.plot(x, y3, linestyle='-', marker='o',label='佛山')
plt.title('各个城市连续十天降水量')
plt.xlabel('天数/天')
plt.ylabel('降水量/cm')
plt.legend()
plt.show()

(2)回归曲线图

利用最小二乘法进行曲线拟合。
在这里插入图片描述
代码如下:

import numpy as np
import matplotlib.pyplot as plt
from scipy import stats
plt.rcParams['font.sans-serif']=['SimHei']
# 生成随机数据
x = np.linspace(1, 10, 100)  # 生成从1到10的100个等间距数据点
y = 2 * x+ 1 + np.random.normal(0, 0.5, size=x.shape)  # 线性关系并添加噪声


# 计算线性回归参数
slope, intercept, r_value, p_value, std_err = stats.linregress(x, y)  # 分别是斜率和偏置

# 生成回归线数据
x_fit = np.linspace(min(x), max(x), 100)
y_fit = slope * x_fit + intercept

# 创建散点图和回归线图
plt.scatter(x, y, color='blue', label='数据点',alpha=0.5,s=50)
plt.plot(x_fit, y_fit, color='red', label='回归线',linewidth=2,alpha=0.7)

# 添加标题和标签
plt.title('回归曲线拟合图')
plt.xlabel('X轴')
plt.ylabel('Y轴')

# 添加图例
plt.legend()

# 显示图形
plt.show()

其中最重要的API是:

slope, intercept, r_value, p_value, std_err = stats.linregress(x, y)
传入参数解释
slope斜率
intercept偏置(截距),即最小二乘法拟合出来的常数项
r_value皮尔逊相关系数,也就是 R 2 R^2 R2
p_value显著性水平检验值
std_err斜率的标准误差

2-2 面积图

面积图主要在于填充堆叠,其他类别的数据会在前一类别的数据上进行堆叠,使得数据的大小不能直接通过肉眼观察而得。
面积图
代码如下:

import matplotlib.pyplot as plt
import numpy as np
# 创建数据
x = np.arange(1, 11, 1)
y1 = [1, 4, 6, 8, 9, 8, 11, 12, 10, 15]
y2 = [2, 2, 7, 10, 12, 11,12,13,14,15]
y3 = [2, 8, 5, 10, 6,4,2,5,3,7]

# 生成图表
plt.stackplot(x, y1, y2, y3, labels=['A', 'B', 'C'],colors=['lightgreen','skyblue','orange'])
plt.legend(loc='upper left')
plt.xlabel('year')
plt.ylabel('population')
plt.title('population in the three countries by years')
plt.show()

其中API为:

plt.stackplot(x, [y1, y2, y3], labels,colors)

03 分布图

3-1 直方图和正态曲线

以样本组作为 x x x,以频数 n n n作为 y y y,绘制直方图并进行正态曲线拟合。
直方图和正态曲线
代码如下:

import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import norm

# 生成随机数据
np.random.seed(42)
data = np.random.randn(1000)  # 生成1000个服从标准正态分布的随机数

# 绘制直方图
count, bins, ignored = plt.hist(data, bins=30, density=True, color='lightgreen', edgecolor='black', alpha=0.7)

# 拟合正态分布曲线
mu, std = norm.fit(data)  # 计算数据的均值和标准差
xmin, xmax = plt.xlim()   # 获取x轴的范围
x = np.linspace(xmin, xmax, 100)
p = norm.pdf(x, mu, std)  # 计算正态分布的概率密度函数值

# 绘制正态分布曲线
plt.plot(x, p, 'k', linewidth=2, label='nomalization curve'f'  \n$\mu$:{mu:.2f},$\sigma^2$={std:.2f}')

# 添加标题和标签
plt.title('Histogram')
plt.xlabel('number')
plt.ylabel('n')

# 添加图例
plt.legend()

# 显示图形
plt.show()

重要API:

count, bins, ignored = plt.hist(data, bins, density=True, color, edgecolor, alpha=0.7)
参数解释
bins将数据分成多少组
density如果设置为 True,直方图将显示数据的概率密度而不是频数。这意味着直方图的总面积将等于1,适合与概率密度函数(如正态分布曲线)一起使用
alpha直方图的颜色透明度
count这是一个数组,包含每个柱子(bin)的高度,即每个区间内的数据点数(或密度值)。当 density=True 时,count 表示每个区间的概率密度值
bins这是一个数组,包含直方图的区间边界(bin edges),bins 数组的长度比 count 多1,因为它表示每个柱子的左右边界
ignored这是一个数组,通常在绘制直方图时未使用的其他信息

3-2 散点图

利用scatter函数即可绘制散点图
散点图
代码如下:

import matplotlib.pyplot as plt

# 示例数据
x = [1, 2, 3, 4, 5]
y1 = [2.2, 2.8, 2.5, 4.5, 6.7]
y2 = [5.7,5.9,7.8,6.3,4.9]
# 绘制散点图
# 绘制第一个散点图
plt.scatter(x, y1, color='blue', label='Group1', alpha=0.7, s=100)

# 绘制第二个散点图
plt.scatter(x, y2, color='green', label='Group2', alpha=0.7, s=100)
# 添加标题和标签
plt.title('dot')
plt.xlabel('X')
plt.ylabel('Y')

# 添加图例
plt.legend()

# 显示图形
plt.show()

3-3 气泡图

可以用来表示三维甚至四维的数据,其中可以表示数据维度的方式有 x x x y y y轴,颜色和气泡的大小。
气泡图
代码如下:

import numpy as np
import matplotlib.pyplot as plt

# 示例数据
x = np.array([1, 2, 3, 4, 5,6])
y = np.array([12, 10, 5, 15, 7, 9])
sizes = x * y * 10  # 意思是气泡大小是x,y的函数,可以替换成z
# 绘制气泡图
plt.scatter(x, y, s=sizes, c=sizes,cmap='viridis', alpha=0.7, edgecolor='black')

# 添加标题和标签
plt.title('bubble')
plt.xlabel('X')
plt.ylabel('Y')

# 添加颜色条
plt.colorbar(label='sizes')

# 显示图形
plt.show()

3-4 热力图

(1)矩阵热力图

矩阵热力图一般用来表示皮尔逊相关系数,所以应该放到第四章《联系图》里面的,但是其他热力图还是表示分布多一点,不想拆开热力图板块就放这里吧。
矩形热力图
作者在pycharm画这个热力图的时候还遇到了个小问题,单元格只显示第一行的数据,如果各位也出现过这个问题,可以试试更新seaborn到最新版本。terminal输入下面语句使得seaborn和matplotlib得以兼容:

pip install --upgrade seaborn

代码如下:

import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
import numpy as np

# 创建一个数据集,指定列标签和行标签
df = pd.DataFrame(np.random.random((5, 5)),
                  columns=["a", "b", "c", "d", "e"],
                  index=["a", "b", "c", "d", "e"])

# 绘制热力图
sns.heatmap(df, cmap='YlGnBu', annot=True, vmin=0, vmax=1)

# 添加标题和标签
plt.title("Heatmap Example")
plt.xlabel("X-axis Label")
plt.ylabel("Y-axis Label")

# 显示图形
plt.show()

对于重要API:

sns.heatmap(df, cmap=‘YlGnBu’, annot=True, vmin=0, vmax=1)
输入参数解释
df这是你要绘制热力图的数据框(DataFrame),它是一个二维的数组或数据表,其中包含要在热力图中显示的数据(一般来说是皮尔逊相关系数矩阵)
cmap=‘YlGnBu’‘YlGnBu’ :从黄色(Yl)到绿色(Gn)再到蓝色(Bu)。其他颜色映射还有 ‘viridis’、‘plasma’、‘coolwarm’ 等
annotannot 参数设置为 True,表示在每个单元格中显示数据值。
vmin=0vmin 参数设置颜色映射的最小值。热力图的颜色将从这个值开始,低于这个值的数据将使用最小颜色。这里设置为 0,表示颜色映射的起始值是 0
  • 14
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值