绘图1(折线图,柱状图,直方图,散点图,气泡图)

折线图

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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
"""
绘制折线图的代码。
常用于绘制数据走势。用途广泛。
1.显示趋势和变化:折线图特别适合展示数据随时间或其他连续变量的趋势和变化。通过将数据点连接起来,折线图能够直观地显示出数据的走势和趋势,
帮助人们更好地理解数据的演变过程。
2.强调数据关系:折线图可以同时展示多条折线,比较多组数据的变化情况。这样,我们可以很容易地发现数据之间的关联和差异。
3.易于比较:通过将多个数据系列放在同一张图中,折线图提供了一个很好的比较方式。这样,我们可以很快地看出不同数据之间的差异,而不需要进行复杂的数据分析。
4.可视化异常和变动:折线图对于数据的异常值和波动有很好的反应,让人们快速识别出数据的特殊点。
5.显示周期性:如果数据具有明显的周期性变化,例如季节性或周期性,折线图能够清晰地表现这种特征。
6.突出重点:折线图可以突出数据的特定部分或重点,帮助观众关注关键的数据变化。
7.直观易懂:折线图简单直观,不需要高级的数据解读技巧。即使对于非专业人员,也可以很容易地理解数据的变化趋势。
"""
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei'] # 为了支持中文字体
plt.rcParams['axes.unicode_minus'] = False # 上述字库没负号,因此负号不进行字体变换
# 数据示例,假设有五条折线,每条折线有5个数据点
y1 = [2, 4, 1, 5, 2]
y2 = [1, 3, 2, 3, 4]
y3 = [3, 1, 3, 2, 5]
y4 = [4, 2, 3, 1, 3]
y5 = [2, 3, 4, 2, 1]
x = [i for i in range(len(y1))]

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

# 设置折线的线条样式、颜色和标签
line_styles = ['-', '--', ':', '-.', 'dashdot']
# 线条样式有'-', '--', '-.', ':', 'None', ' ', '', 'solid', 'dashed', 'dashdot', 'dotted'
line_colors = ['b', 'g', 'r', 'y', 'black'] # 这是线条颜色,也可以用'#123456'来表示
line_labels = ['Line 1', 'Line 2', 'Line 3', 'Line 4', 'Line 5'] # 这是图例名称
line_widths = [1.5, 2.0, 2.5, 1.0, 1.5] # 调整线条粗细的参数
for i in range(5):
ax.plot(x, globals()[f'y{i+1}'], linestyle=line_styles[i], color=line_colors[i], label=line_labels[i], linewidth=line_widths[i])

# 添加具体数值
for i in range(len(x)):
ax.annotate(f'{y1[i]}', (x[i], y1[i]), textcoords="offset points", xytext=(0, 10), ha='center')

# 添加图例
ax.legend()

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

# 设置图表标题
ax.set_title('折线图', fontsize=16, 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.show()

'''
# 绘制置信区间
import matplotlib.pyplot as plt
import numpy as np

# 示例数据
x = np.linspace(0, 10, 100)
y = np.sin(x)
confidence_interval = 0.2 # Example confidence interval value
upper_bound = y + confidence_interval
lower_bound = y - confidence_interval

# 创建一个Figure对象和一个子图
plt.figure(figsize=(10, 6))
plt.xlabel('X')
plt.ylabel('Y')
plt.title('Confidence Intervals')

# 绘制线条
plt.plot(x, y, label='Data', color='blue')

# 置信区间填颜色
plt.fill_between(x, lower_bound, upper_bound, color='lightblue', alpha=0.5, label='Confidence Interval')

# 添加图例
plt.legend()

# 显示图形
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
"""
绘制柱状图的代码。
1.易于理解:柱状图是一种直观的图表类型,可以清晰地展示数据之间的差异和相对大小。每个柱子的高度表示数据的数量或值,使观众能够快速理解数据的特征。
2.比较数据:柱状图特别适用于比较多组数据之间的差异。通过将不同类别的数据放置在同一张图表上,柱状图可以直观地呈现它们之间的关系,帮助观众发现数据的模式和趋势。
3.可视化分布:柱状图可以用于展示数据的分布情况。例如,可以使用柱状图来显示数据的频率分布或类别分布。
4.强调异常值:柱状图能够很容易地识别出数据的异常值。高于或低于其他柱子的柱状图很可能是异常值,使我们能够快速定位数据中的异常情况。
5.可用于大数据集:柱状图适用于大量数据的可视化,特别是类别较多的情况。不同类别的柱状图可以并排显示,不会造成混乱。
6.易于与其他图表结合:柱状图可以很容易地与其他图表结合使用,如折线图、堆积柱状图等。这样,可以更全面地展示数据的不同方面。
"""
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei'] # 为了支持中文字体
plt.rcParams['axes.unicode_minus'] = False # 上述字库没负号,因此负号不进行字体变换

# 数据示例,假设有五个数据的高度
heights = [5, 7, 3, 4, 6]
x = [i for i in range(len(heights))]

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

# 不同柱子的填充样式和颜色
# patterns = ['/', 'x', '+', '-', 'o']
patterns = ['', '', '', '', '']
colors = ['blue', 'green', 'red', 'purple', 'orange']
# 绘制柱状图
width = 0.5 # 柱状图宽度

for i in range(len(heights)):
bar = ax.bar(x[i], heights[i], width, color=colors[i], hatch=patterns[i], label=f'Bar {i+1}') # 绘制
height = bar[0].get_height()
ax.annotate(f'{height}', xy=(bar[0].get_x() + bar[0].get_width() / 2, height), xytext=(0, 3),
textcoords="offset points", ha='center', va='bottom') # 在柱状图上添加对应数据

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

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

# 设置xy范围
plt.ylim([0, 10])

# 设置图表标题
ax.set_title('柱状图', fontsize=16, fontweight='bold')

# 设置刻度标签
ax.set_xticks(x)
ax.set_xticklabels([f'Bar {i+1}' for i in range(len(heights))], fontsize=12, fontweight='bold')

# 设置网格线
ax.grid(axis='y', linestyle='--', alpha=0.7)

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

# 去除图表边框
for spine in ax.spines.values():
spine.set_visible(False)

# 显示图形
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
"""
绘制柱状图(多组)代码。
在柱状图的基础上对每一组的若干指标进行整体绘制。
1.利于反映整体信息
2.兼具有柱状图的优势
"""
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif'] = ['SimHei'] # 为了支持中文字体
plt.rcParams['axes.unicode_minus'] = False # 上述字库没负号,因此负号不进行字体变换

# 生成示例数据
groups = ['Group 1', 'Group 2', 'Group 3', 'Group 4', 'Group 5']
indicators = ['Indicator 1', 'Indicator 2', 'Indicator 3']
data = np.random.randint(1, 10, size=(5, 3))
print(data)

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

# 设置每个柱子的宽度
width = 0.2

# 设置颜色列表
colors = ['b', 'g', 'r']

# 绘制柱状图
for i in range(len(groups)):
x = (np.arange(len(indicators)) - len(indicators)//2) * width + i
for j in range(len(indicators)):
ax.bar(x[j], data[i][j], width, color=colors[j], label=indicators[j] if i == 0 else '')


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

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

# 设置图表标题
ax.set_title('柱状图(多组)', fontsize=14)

# 设置刻度标签
ax.set_xticks(np.arange(len(groups)))
ax.set_xticklabels(groups)

# 显示图形
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
"""
绘制直方图的代码。
1.简单直观:直方图是一种简单直观的图表类型,不需要复杂的数学知识就能理解数据的分布情况。
2.大数据适用:直方图适用于大量数据的可视化。对于大数据集,直方图可以帮助我们更好地理解数据的总体分布和趋势。
3.强调整体特征:直方图可以清楚地展示数据的整体特征,帮助我们发现数据中的规律和趋势。
4.无偏性:直方图不受数据的排序和个数的影响,对数据的表现是无偏的。
5.直观比较:直方图可以用来比较不同数据集或不同组别之间的差异,通过颜色或图案样式的设置,直观地显示数据之间的比较结果。
6.数据离散化:直方图将连续数据分组成离散区间,有助于对数据进行简化和归纳,更容易理解数据的结构。
7.显示数据分布:直方图能够直观地展示数据在不同区间的分布情况,帮助我们了解数据的集中程度、分散程度和峰值等特征。
"""
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)

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

# 设置直方图的边界和颜色
bins = 20
colors = ['g']

# 绘制直方图
ax.hist(data1, bins=bins, color=colors[0], hatch='/', alpha=0.7, label='Group', edgecolor='black')

# 添加图例
ax.legend()

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

# 设置图表标题
ax.set_title('直方图', fontsize=14)

# 设置刻度标签字体大小
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
"""
绘制散点图代码。
经常用于对聚类结果的可视化。
1.显示数据分布:散点图能够清晰地展示数据点在二维坐标系中的分布情况,帮助我们了解数据的密度和分布规律。
2.可视化关系:散点图可以直观地显示两个变量之间的关系。通过观察散点图的分布模式,我们可以判断两个变量之间是否存在线性或非线性关系。
3.发现异常值:散点图可以帮助我们快速识别数据中的异常值。异常值通常是与其他数据点明显偏离的点,容易在散点图中显现出来。
4.可用于大数据集:散点图适用于大量数据的可视化。虽然对于大数据集,点可能会重叠,但散点图仍然能够展示数据点的总体分布和趋势。
5.可用于多变量比较:散点图可以同时显示多个变量之间的关系。通过使用不同颜色或标记样式,可以将多个数据集或组别在同一张散点图上比较,帮助发现模式和差异。
5.易于解读:散点图是一种简单而直观的图表类型,不需要复杂的数学知识就可以理解数据之间的关系和趋势。
6.用于数据预处理:在数据分析的早期阶段,散点图常常用于对数据进行初步探索和预处理,帮助我们了解数据的特点和潜在问题。
"""
import numpy as np
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei'] # 为了支持中文字体
plt.rcParams['axes.unicode_minus'] = False # 上述字库没负号,因此负号不进行字体变换

# 生成示例数据
np.random.seed(0)
data = np.random.rand(100, 2) * 5 # 100个随机数据点,取值范围在[0, 5)

# 使用K-Means算法进行聚类
num_clusters = 3
kmeans = KMeans(n_clusters=num_clusters, random_state=0)
labels = kmeans.fit_predict(data)

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

# 设置颜色列表和标记样式列表
colors = ['tab:blue', 'tab:orange', 'tab:green']
markers = ['o', 's', 'D']

# 绘制散点图,并根据聚类结果使用不同的颜色和标记样式
for i in range(num_clusters):
cluster_data = data[labels == i]
ax.scatter(cluster_data[:, 0], cluster_data[:, 1], marker=markers[i], color=colors[i], label=f'Cluster {i+1}')

# 添加图例
ax.legend()

# 添加横纵坐标label
ax.set_xlabel('X轴', fontsize=12, fontweight='bold')
ax.set_ylabel('Y轴', 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()

'''
# 单纯进行散点图绘制:
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif'] = ['SimHei'] # 为了支持中文字体

# 生成示例数据
x = np.random.rand(50)
y1 = np.random.rand(50)
y2 = np.random.rand(50)
y3 = np.random.rand(50)
y4 = np.random.rand(50)
y5 = np.random.rand(50)

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

# 绘制散点图
ax.scatter(x, y1, marker='o', color='b', label='Group 1')
ax.scatter(x, y2, marker='x', color='g', label='Group 2')
ax.scatter(x, y3, marker='+', color='r', label='Group 3')
ax.scatter(x, y4, marker='*', color='c', label='Group 4')
ax.scatter(x, y5, marker='s', color='m', label='Group 5')

# 添加图例
ax.legend()

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

# 设置图表标题
ax.set_title('五组数据的散点图', fontsize=14)

# 显示图形
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
"""
绘制气泡图的代码
甚至可以做有范围、权重的作图。如经典的信号覆盖问题。
1.强调气泡大小:气泡的大小代表第三个变量的数值,通过气泡的大小变化,突出数据的差异和趋势。
2.多变量对比:气泡图可以同时展示多个数据组,每个数据组的气泡大小和颜色可以代表不同的变量,有助于数据的对比和分析。
3.突出数据差异:气泡图通过气泡大小的变化,可以清晰地展示数据之间的差异和分布情况。
4.聚焦关键数据:气泡图的大小突出了数据的重要特征,有助于识别关键数据和异常值
"""
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif'] = ['SimHei'] # 为了支持中文字体
plt.rcParams['axes.unicode_minus'] = False # 上述字库没负号,因此负号不进行字体变换

# 生成示例数据
x = np.random.rand(50) # 随机生成50个x坐标
y = np.random.rand(50) # 随机生成50个y坐标
size = np.random.randint(100, 500, 50) # 随机生成50个气泡的大小
color = np.random.rand(50) # 随机生成50个气泡的颜色

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

# 绘制气泡图
scatter = ax.scatter(x, y, s=size, c=color, cmap='coolwarm', alpha=0.7, edgecolors='k')

# 添加颜色条
cbar = plt.colorbar(scatter)

# 添加图例
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()
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
Runtime Display
  • Copyrights © 2023-2024 Lucas
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信