使用matplotlib中scatter方法画散点图
### 使用matplotlib中scatter方法画散点图 #### 一、简介与基本概念 散点图是一种用于展示两个变量之间关系的图表类型。在数据分析、统计学以及机器学习领域有着广泛的应用。通过散点图,我们可以直观地看到数据点之间的分布趋势、关联程度以及异常值的存在等。 Python 的 matplotlib 库提供了强大的绘图功能,其中包括 `scatter` 方法,用于创建散点图。本文将详细介绍如何使用 `scatter` 方法,并给出实际示例。 #### 二、基本使用 ##### 1. 最简单的绘制方式 我们来看一个非常简单的例子。假设我们有一组数据如下: ``` 0 746403 1 1263043 2 982360 3 1202602 ``` 这里,第一列代表 X 坐标,第二列代表 Y 坐标。接下来,我们将使用 Python 代码绘制这些数据点。 ```python import matplotlib.pyplot as plt def plot_simple_scatter(): x = [0, 1, 2, 3] y = [746403, 1263043, 982360, 1202602] plt.scatter(x, y) plt.xlabel('X') plt.ylabel('Y') plt.title('Simple Scatter Plot') plt.show() plot_simple_scatter() ``` 这段代码定义了一个名为 `plot_simple_scatter` 的函数,它创建了一个简单的散点图并显示出来。 #### 三、更高级的绘图方式 接下来,我们将通过一个更复杂的数据集来绘制更加美观且信息丰富的散点图。假设我们有一个包含以下信息的数据集: - 第一列:每年获得的飞行常客里程数(Distance) - 第二列:玩视频游戏所耗时间百分比(Video Game Rate) - 第三列:每周消费的冰淇淋公升数(Ice Cream Liters) - 第四列:Label(不喜欢的人=1、魅力一般的人=2、极具魅力的人=3) 数据格式如下: ``` 409208.3269760.9539523 144887.1534691.6739042 260521.4418710.8051241 7513613.1473940.4289641 ``` 我们将使用这些数据来绘制散点图,并为不同的 Label 分配不同的颜色和大小。 ```python import matplotlib.pyplot as plt def plot_advanced_scatter(): file_path = "/path/to/your/dataset.txt" label1X, label1Y, label2X, label2Y, label3X, label3Y = [], [], [], [], [], [] with open(file_path, "r") as f: for line in f: lines = line.strip().split() if len(lines) != 4: continue distance, rate, _, label = lines if label == '1': label1X.append(float(distance)) label1Y.append(float(rate)) elif label == '2': label2X.append(float(distance)) label2Y.append(float(rate)) elif label == '3': label3X.append(float(distance)) label3Y.append(float(rate)) plt.figure(figsize=(8, 5), dpi=80) axes = plt.subplot(111) label1 = axes.scatter(label1X, label1Y, s=20, c="red", label="Don't Like") label2 = axes.scatter(label2X, label2Y, s=40, c="green", label="Attraction Common") label3 = axes.scatter(label3X, label3Y, s=50, c="blue", label="Attraction Perfect") plt.xlabel("Every Year Fly Distance") plt.ylabel("Play Video Game Rate") plt.legend(loc=2) plt.title('Advanced Scatter Plot') plt.show() plot_advanced_scatter() ``` 此段代码展示了如何根据不同的标签对数据进行分类,并为每一类分配特定的颜色和大小,使得图表更加易于理解。 #### 四、scatter函数详解 `scatter` 函数提供了一系列参数来定制散点图的样式。让我们来看看 `scatter` 函数的基本签名: ```python def scatter(self, x, y, s=None, c=None, marker=None, cmap=None, norm=None, vmin=None, vmax=None, alpha=None, linewidths=None, **kwargs): ``` - **x, y**: 数据点的 X 和 Y 坐标。 - **s**: 点的大小,可以是标量或数组。 - **c**: 点的颜色,可以是单个颜色或每个点不同的颜色。 - **marker**: 点的形状,默认为圆点。 - **cmap**: 颜色映射,当 `c` 是数值时使用。 - **norm**: 归一化对象,用于将颜色映射到数值范围。 - **vmin, vmax**: 用于设置颜色映射的最小值和最大值。 - **alpha**: 透明度,取值范围为 0(完全透明)到 1(不透明)。 - **linewidths**: 边框宽度。 这些参数可以根据具体需求灵活调整,以实现更加个性化的设计。 #### 五、总结 本文介绍了如何使用 matplotlib 中的 `scatter` 方法来绘制散点图。我们从最简单的散点图开始,逐渐深入到更复杂的案例,并详细解析了 `scatter` 函数的各个参数。掌握这些技巧后,你可以更加自如地利用散点图来探索和展示数据之间的关系。