【Matplotlib】散点图

文章目录

绘制散点图

代码

import matplotlib.pyplot as plt
import numpy as np

# 产生50对服从正态分布的样本点
nbPointers = 50
x = np.random.standard_normal(nbPointers)
y = np.random.standard_normal(nbPointers)

# 固定种子,以便实验结果具有可重复性
np.random.seed(19680801)
colors = np.random.rand(nbPointers)

area = (30 * np.random.rand(nbPointers)) ** 2
plt.scatter(x, y, s=area, c=colors, alpha=0.5)
plt.show()

运行结果

【Matplotlib】散点图

代码分析

  • plt.scatter()不支持将点与点连成线
  • 在第【14】行代码中,scatter()函数的参数:
    • 参数s就是plot()函数中的markersize。本例中它的值是一个随机大小的圆,这些随机大小的圆由第【11】行代码产生。
    • 参数c表示点的颜色
    • 参数alpha表示透明度,其大小不超过1,数值越大越不透明。

鸢尾花数据集中的散点图

代码

import matplotlib.pyplot as plt
import numpy as np
# 读取文本数据
data = []
with open('iris.csv', 'r') as file:
    lines = file.readlines()  # 逐行读取数据
    for line in lines:  # 对每行数据进行分析
        temp = line.split(',')
        data.append(temp)



# 将列表转换为NumPy数组,方便后续处理
data_np = np.array(data)
# 不读取最后一列,并将部分数值转换为浮点数
data_np = np.array(data_np[:, :-1]).astype(float)
print(data_np)
# 设置特征名称
feature_name = ['sepal length', 'sepal width', 'petal length', 'petal width']
# 创建画布,包含3*2个子图,画布大小为(20,10)
fig, axes = plt.subplots(3, 2, figsize=(20, 10))
# 为在Matplotlib中显示中文,设置特殊字体
plt.rcParams['font.sans-serif'] = ['SimHei']
# 设置总标题
fig.suptitle('鸢尾花散点图', fontsize=25)

# 获取不同的特征组合,两两组合绘制散点图
i = 0
for x in range(data_np.shape[1]):
    for y in range(x + 1, data_np.shape[1]):
        X = data_np[:, x]
        Y = data_np[:, y]
        axes[i % 3][i % 2].scatter(X[:40], Y[:40],
                                   marker='x', c='b', label='setosa')
        axes[i % 3][i % 2].scatter(X[40:80], Y[40:80],
                                   marker='o', c='r', label='versicolor')
        axes[i % 3][i % 2].scatter(X[80:], Y[80:],
                                   marker='*', c='g', label='virginica')
        axes[i % 3][i % 2].set_xlabel(feature_name[x], fontsize=10)
        axes[i % 3][i % 2].set_ylabel(feature_name[y], fontsize=10)
        axes[i % 3][i % 2].legend(loc='best')
        i += 1

    plt.show()

运行结果

【Matplotlib】散点图

上一篇:第一次打卡


下一篇:Python可视化——matplotlib.pyplot绘图的基本参数详解