绘图2(热力图,箱线图,等高线图,雷达图,网络图)

热力图

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
"""
绘制热力图代码。
常用于显示相关系数矩阵。
1.突出关键信息:热力图通过颜色的变化来突出数据的特征和差异,帮助我们快速发现数据中的规律和趋势。
2.可视化大规模数据:热力图适用于展示大规模数据矩阵,特别是在数据包含大量值时,热力图可以更好地展示数据的结构。
3.探索数据关联性:热力图可以帮助我们发现数据之间的关联性和相关性,尤其在探索多变量数据时特别有用。
4.色彩丰富:热力图的颜色映射可以选择多样,可以根据数据类型和需要选择合适的颜色映射,使得图像更美观和易读。
5.一目了然:热力图通过色彩的变化和色块的大小,可以在一张图中展示大量数据,让人一目了然。
6.强调差异:热力图的颜色变化可以有效地突出数据之间的差异和异常值,有助于快速定位问题。
"""
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif'] = ['SimHei'] # 为了支持中文字体
plt.rcParams['axes.unicode_minus'] = False # 上述字库没负号,因此负号不进行字体变换

# 生成示例数据(10x10的二维矩阵)
data = np.random.randint(1, 10, size=(10, 10))

# 创建一个Figure对象和一个子图
fig, ax = plt.subplots()

# 绘制热力图,并设置样式
heatmap = ax.imshow(data, cmap='hot', interpolation='nearest', aspect='auto')
'''
cmap参数设置:
'viridis':从蓝色到黄色渐变,用于连续数据,特别适用于数据的渐变效果。
'plasma':从紫色到橙色渐变,用于连续数据,较viridis颜色更丰富。
'inferno':从黑色到黄色渐变,用于连续数据,较viridis颜色更加明亮。
'magma':从黑色到白色渐变,用于连续数据,较viridis颜色更适合打印。
'cividis':从蓝色到黄色渐变,用于连续数据,颜色较温和。
'cool':从青色到蓝色渐变,用于连续数据,适用于冷色调的数据。
'hot':从黑色到红色渐变,用于连续数据,适用于暖色调的数据。
'coolwarm':从蓝色到红色渐变,用于连续数据,冷暖色调交替。
'rainbow':七色彩虹渐变,用于连续数据,颜色多样。
'''
# 添加颜色条
cbar = plt.colorbar(heatmap, fraction=0.046, pad=0.04)

# 添加图例
ax.set_title('热力图', fontsize=16, fontweight='bold')

# 添加横纵坐标label
ax.set_xlabel('X轴', fontsize=14, fontweight='bold')
ax.set_ylabel('Y轴', fontsize=14, fontweight='bold')

# 设置颜色条标签字体大小
cbar.ax.tick_params(labelsize=12)

# 设置横纵坐标标签字体大小
ax.tick_params(axis='both', which='major', labelsize=12)

# 设置背景颜色
ax.set_facecolor('#f0f0f0')

# 设置图表边框颜色
ax.spines['top'].set_color('none')
ax.spines['right'].set_color('none')

# 显示图形
plt.tight_layout()
plt.show()

箱线图

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
"""
绘制箱线图代码
1.易读易懂:箱线图是一种直观且易懂的图表类型,无需复杂的数学知识即可解读数据的分布情况。
2.高效展示信息:箱线图能够在一个图中展示出数据的多个统计特征,包括中位数、四分位数、最大值、最小值和离群值,简洁高效。
3.检测异常值:箱线图可以帮助我们发现数据中的异常值,从而进行数据清洗或者更深入的分析。
4.有效比较:箱线图可以同时展示多组数据的分布情况,有助于进行数据间的比较和对比。
5.无偏性:箱线图对数据的排序和数量不敏感,其表现是无偏的,适用于多种类型的数据。
"""
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif'] = ['SimHei'] # 为了支持中文字体
plt.rcParams['axes.unicode_minus'] = False # 上述字库没负号,因此负号不进行字体变换

# 生成示例数据
np.random.seed(0)
data1 = np.random.normal(0, 1, 100)
data2 = np.random.normal(2, 1.5, 100)
data3 = np.random.normal(-2, 1.5, 100)
data4 = np.random.normal(3, 1, 100)
data5 = np.random.normal(-1, 0.5, 100)

# 创建一个Figure对象和一个子图
fig, ax = plt.subplots()

# 绘制箱线图
boxes = ax.boxplot([data1, data2, data3, data4, data5], labels=['Group 1', 'Group 2', 'Group 3', 'Group 4', 'Group 5'],
sym='o', vert=True, patch_artist=True)

# 设置每组数据的颜色
colors = ['tab:blue', 'yellow', 'tab:green', 'tab:red', 'tab:purple']
for box, color in zip(boxes['boxes'], colors):
box.set(facecolor=color)

# 添加图例
ax.legend(boxes['boxes'], ['Group 1', 'Group 2', 'Group 3', 'Group 4', 'Group 5'], loc='upper right')

# 添加横纵坐标label
ax.set_xlabel('组别', fontsize=12, fontweight='bold')
ax.set_ylabel('数值', fontsize=12, fontweight='bold')

# 设置图表标题
ax.set_title('箱线图', fontsize=14, fontweight='bold')

# 设置刻度标签字体大小
ax.tick_params(axis='both', which='major', labelsize=10)

# 添加网格线
ax.grid(True, linestyle='--', alpha=0.7)

# 设置背景颜色
ax.set_facecolor('#f0f0f0')

# 设置图表边框颜色
ax.spines['top'].set_color('none')
ax.spines['right'].set_color('none')

# 显示图形
plt.tight_layout()
plt.show()


等高线图

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
"""
绘制等高线图的代码
适用于地形、函数、场、势的绘制。
1.表现数据等值线:等高线图通过等值线来展示数据的分布情况,帮助人们快速了解数据的变化趋势和模式。
2.保留二维信息:等高线图是二维图形,能够清晰表达两个自变量之间的关系,适用于分析二维数据。
3.显示数据变化:等高线图通过等值线的间距和形态变化,能够有效显示数据的变化趋势和梯度。
4.强调变化梯度:等高线图通过等值线的密集程度和形态变化,突出数据变化的梯度,有助于识别变化的快慢和方向。
5.检测异常值:等高线图可以帮助我们发现数据中的异常值,因为异常值通常在等值线中表现为不规则的形状。
"""
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif'] = ['SimHei'] # 为了支持中文字体
plt.rcParams['axes.unicode_minus'] = False # 上述字库没负号,因此负号不进行字体变换

# 生成示例数据(二维数组)
x = np.linspace(-10, 10, 100)
y = np.linspace(-10, 10, 100)
X, Y = np.meshgrid(x, y)
Z = X ** 2 - Y ** 2

# 创建一个Figure对象和一个子图
fig, ax = plt.subplots()

# 绘制等高线图,并设置样式
contour = ax.contour(X, Y, Z, levels=50, cmap='coolwarm', linewidths=1.5)

# 添加颜色条
cbar = plt.colorbar(contour, ax=ax)

# 添加图例
ax.set_title('等高线图', fontsize=16, fontweight='bold')

# 添加横纵坐标label
ax.set_xlabel('X轴', fontsize=14, fontweight='bold')
ax.set_ylabel('Y轴', fontsize=14, fontweight='bold')

# 设置颜色条标签字体大小
cbar.ax.tick_params(labelsize=12)

# 设置线条样式为虚线
for line in contour.collections:
line.set_linestyle('dashed')

# 设置刻度标签字体大小
ax.tick_params(axis='both', which='major', labelsize=12)

# 设置背景颜色
ax.set_facecolor('#f0f0f0')

# 设置图表边框颜色
ax.spines['top'].set_color('none')
ax.spines['right'].set_color('none')

# 显示图形
plt.tight_layout()
plt.show()

雷达图

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
"""
绘制雷达图的代码。
可以用来对“属性”进行刻画
1.多变量比较:雷达图在展示多个变量之间的关系和差异方面具有优势,可以直观地展示数据在不同维度上的表现。
2.易于解读:雷达图是一种直观的图表类型,无需深入的数学知识即可理解数据的多维特征,使得数据分析和传达更容易。
3.数据关联性:雷达图将多个变量的信息集中在一个图形中展示,有助于观察不同维度之间的关联性,帮助我们发现隐藏在数据背后的规律。
4.强调相对比较:雷达图更注重相对的大小和差异,而非绝对数值,适用于比较多组数据在各个维度上的表现。
5.高效传递信息:雷达图以图形化的方式呈现多维数据,使得大量信息能够被快速有效地传达给观众。
"""
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif'] = ['SimHei'] # 为了支持中文字体
plt.rcParams['axes.unicode_minus'] = False # 上述字库没负号,因此负号不进行字体变换


# 示例数据:每个维度的数据值(三组数据)
categories = ['A', 'B', 'C', 'D', 'E'] # 维度名称
values1 = [4, 2, 3, 5, 4] # 第一组数据值
values2 = [3, 4, 2, 6, 3] # 第二组数据值
values3 = [2, 3, 5, 4, 5] # 第三组数据值

# 将第一个维度值复制到最后,以形成闭合
values1 += values1[:1]
values2 += values2[:1]
values3 += values3[:1]

# 计算每个维度对应的角度
angles = np.linspace(0, 2*np.pi, len(categories), endpoint=False)

# 将角度与数据值对应起来
angles = np.concatenate((angles, [angles[0]]))

# 创建一个Figure对象和一个子图,使用极坐标
fig, ax = plt.subplots(subplot_kw={'projection': 'polar'})

# 绘制三组雷达图,并设置样式
ax.plot(angles, values1, linewidth=1.5, linestyle='--', color='b', label='数据1')
ax.fill(angles, values1, alpha=0.3, color='b')

ax.plot(angles, values2, linewidth=1.5, linestyle='-.', color='g', label='数据2')
ax.fill(angles, values2, alpha=0.3, color='g')

ax.plot(angles, values3, linewidth=1.5, linestyle='solid', color='r', label='数据3')
ax.fill(angles, values3, alpha=0.3, color='r')

# 添加图例
ax.legend(loc='upper right', fontsize=12)

# 设置雷达图的标题
ax.set_title('雷达图', fontsize=16, fontweight='bold')

# 设置角度刻度,即设置维度的标签
ax.set_xticks(angles[:-1])
ax.set_xticklabels(categories, fontsize=12, fontweight='bold')

# 设置刻度标签字体大小
ax.tick_params(axis='both', labelsize=12)

# 设置背景颜色
ax.set_facecolor('#f0f0f0')

# 设置图表边框颜色
ax.spines['polar'].set_color('#b0b0b0')

# 隐藏雷达图的刻度线
# ax.xaxis.grid(False)

# 显示图形
plt.tight_layout()
plt.show()

网络图

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
"""
绘制网络图的代码。
能够对图结构进行直观刻画,可用于路径规划等问题。
同样树结构也能够用这个代码来画,因为树是特殊的有向无环图
这个网站也可以:https://csacademy.com/app/graph_editor/
1.多对多关系:网络图能够展示多个节点之间的多对多关系,适用于描述复杂的关联和连接。
2.可视化复杂结构:网络图可以清晰地展示节点之间的连接和关系,便于理解和观察复杂结构。
3.节点和边属性:网络图的节点和边可以附带属性信息,使得数据可以更加丰富,节点和边的样式和颜色可以代表不同的属性。
4.异构性:网络图可以描述异构性的数据,即不同类型的节点和边可以同时存在,能够展示多种类型的关系。
5.图算法应用:网络图的特点使得其在图算法(例如路径查找、社区发现等)方面具有广泛的应用。
6.强调连接:网络图强调节点之间的连接关系,使得观察和分析节点的交互和连接变得更加直观。
"""
import matplotlib.pyplot as plt
import networkx as nx
plt.rcParams['font.sans-serif'] = ['SimHei'] # 为了支持中文字体
plt.rcParams['axes.unicode_minus'] = False # 上述字库没负号,因此负号不进行字体变换

# 创建一个简单的网络图
G = nx.Graph()
G.add_nodes_from([1, 2, 3, 4, 5, 6])
G.add_edges_from([(1, 2), (2, 3), (3, 4), (4, 5), (5, 1), (1, 3), (4, 6)])

# 绘制网络图
pos = nx.circular_layout(G) # 设置节点的位置

# 调整节点和边的样式
nx.draw_networkx_nodes(G, pos, node_color='skyblue', node_size=1000, label='节点')
nx.draw_networkx_edges(G, pos, edge_color='gray', width=2)
nx.draw_networkx_labels(G, pos, font_size=12, font_weight='bold')

# 添加图例
plt.legend()

# 添加图的标题
plt.title('网络图', fontsize=16, fontweight='bold')

# 设置背景颜色
plt.gca().set_facecolor('#f0f0f0')

# 隐藏坐标轴
plt.axis('off')

# 调整图例的位置
plt.legend(loc='upper right')

# 显示图形
plt.show()

  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
Runtime Display
  • Copyrights © 2023-2024 Lucas
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信