1.3 基础绘图函数


文档摘要

1.3 基础绘图函数 Matplotlib 基础绘图函数详解:构建数据可视化的基石 1.3 基础绘图函数概览 Matplotlib 的 模块提供了许多用于创建各种类型图表的函数。在基础入门阶段,我们主要关注以下几个核心的绘图函数: 函数: 用于绘制线形图,是 Matplotlib 中最基础也是最常用的函数之一。它可以用于展示数据随时间或其他连续变量变化的趋势。 函数: 用于绘制散点图,适用于展示两个变量之间的关系,特别是在需要强调个体数据点分布时非常有效。 和 函数: 用于绘制柱状图和水平柱状图,常用于比较不同类别的数据大小,清晰地展示离散数据的差异。 函数: 用于绘制直方图,展示数据分布的频率,帮助我们理解数据的集中趋势和离散程度。

1.3 基础绘图函数

Matplotlib 基础绘图函数详解:构建数据可视化的基石

1.3 基础绘图函数概览

Matplotlib 的 pyplot 模块提供了许多用于创建各种类型图表的函数。在基础入门阶段,我们主要关注以下几个核心的绘图函数:

  • plot() 函数: 用于绘制线形图,是 Matplotlib 中最基础也是最常用的函数之一。它可以用于展示数据随时间或其他连续变量变化的趋势。

  • scatter() 函数: 用于绘制散点图,适用于展示两个变量之间的关系,特别是在需要强调个体数据点分布时非常有效。

  • bar()barh() 函数: 用于绘制柱状图和水平柱状图,常用于比较不同类别的数据大小,清晰地展示离散数据的差异。

  • hist() 函数: 用于绘制直方图,展示数据分布的频率,帮助我们理解数据的集中趋势和离散程度。

  • pie() 函数: 用于绘制饼图,以扇形区域展示各部分占总体的比例,直观地表达数据的相对大小。

1.3.1 plot() 函数:绘制线形图

plot() 函数是 Matplotlib 中最核心的函数之一,用于绘制二维线形图。它可以连接一系列数据点,形成线条,从而展示数据随一个连续变量变化的趋势。

基本用法:

plot(x, y, format_string, **kwargs)

  • x: 可选参数,表示 x 轴数据,通常是一个一维数组或列表。如果省略,则默认使用 range(len(y)) 作为 x 轴数据。

  • y: 必选参数,表示 y 轴数据,通常是一个一维数组或列表。

  • format_string: 可选参数,用于指定线条的颜色、标记和线型。它是一个由颜色字符、标记字符和线型字符组成的字符串,例如 'r--' 表示红色虚线。

  • **kwargs: 可选参数,用于设置其他绘图属性,例如标签、线宽、透明度等。

代码实践:

import matplotlib.pyplot as plt import numpy as np # 生成 x 轴数据和 y 轴数据 x = np.linspace(0, 10, 100) # 从 0 到 10 生成 100 个均匀分布的点 y = np.sin(x) # 绘制线形图 plt.plot(x, y) # 添加标题和轴标签 plt.title('Sine Wave') plt.xlabel('X-axis') plt.ylabel('Y-axis') # 显示图形 plt.show()

代码详解:

  1. 导入模块: import matplotlib.pyplot as plt 导入 pyplot 模块并将其别名设置为 plt,这是 Matplotlib 的常用约定。 import numpy as np 导入 numpy 模块,用于生成数值数据。

  2. 生成数据: np.linspace(0, 10, 100) 生成一个包含 100 个元素的 NumPy 数组,这些元素在 0 到 10 之间均匀分布,作为 x 轴数据。 np.sin(x) 计算 x 轴数据的正弦值,作为 y 轴数据。

  3. 绘制图形: plt.plot(x, y) 使用 plot() 函数绘制线形图,将 x 作为 x 轴数据,y 作为 y 轴数据。

  4. 添加标题和标签: plt.title(), plt.xlabel(), plt.ylabel() 分别设置图表的标题和 x 轴、y 轴的标签,提升图表的可读性。

  5. 显示图形: plt.show() 显示绘制好的图形。

格式字符串 (format_string) 详解:

format_string 参数允许用户快速自定义线条的样式。它由三个部分组成(都是可选的):

  • 颜色字符 (Color): 表示线条颜色,常见的颜色字符包括:

    • 'b': 蓝色 (blue)

    • 'g': 绿色 (green)

    • 'r': 红色 (red)

    • 'c': 青色 (cyan)

    • 'm': 品红色 (magenta)

    • 'y': 黄色 (yellow)

    • 'k': 黑色 (black)

    • 'w': 白色 (white)

  • 标记字符 (Marker): 表示数据点上的标记符号,常见的标记字符包括:

    • '.' : 点 (point)

    • ',' : 像素点 (pixel)

    • 'o' : 圆圈 (circle)

    • 'v' : 下三角 (triangle_down)

    • '^' : 上三角 (triangle_up)

    • '<' : 左三角 (triangle_left)

    • '>' : 右三角 (triangle_right)

    • 's' : 正方形 (square)

    • 'p' : 五边形 (pentagon)

    • '*' : 星号 (star)

    • 'h' : 六边形1 (hexagon1)

    • 'H' : 六边形2 (hexagon2)

    • '+' : 加号 (plus)

    • 'x' : 叉号 (x)

    • 'D' : 菱形 (diamond)

    • 'd' : 小菱形 (thin_diamond)

    • '|' : 竖线 (vline)

    • '_' : 横线 (hline)

  • 线型字符 (Line Style): 表示线条的样式,常见的线型字符包括:

    • '-' : 实线 (solid line)

    • '--' : 虚线 (dashed line)

    • '-.' : 点划线 (dash-dot line)

    • ':' : 虚点线 (dotted line)

示例:

plt.plot(x, y, 'ro--') # 红色圆圈标记的虚线 plt.plot(x, y, 'g^-') # 绿色上三角标记的实线

其他常用 kwargs 参数:

  • label: 设置线条的标签,用于图例显示。

  • linewidthlw: 设置线条宽度。

  • colorc: 设置线条颜色 (与格式字符串中的颜色字符功能相同,但更灵活)。

  • linestylels: 设置线型 (与格式字符串中的线型字符功能相同,但更灵活)。

  • marker: 设置标记字符 (与格式字符串中的标记字符功能相同,但更灵活)。

  • markersizems: 设置标记大小。

  • alpha: 设置线条的透明度,取值范围为 0 到 1,0 完全透明,1 完全不透明。

plot() 函数的应用场景:

  • 展示时间序列数据,例如股票价格、温度变化等。

  • 可视化函数曲线,例如数学函数、物理模型等。

  • 比较不同数据集的趋势。

1.3.2 scatter() 函数:绘制散点图

scatter() 函数用于绘制散点图,它将每个数据点表示为一个独立的点,可以有效地展示两个变量之间的关系,特别是当数据量较大或需要强调个体数据点分布时。

基本用法:

scatter(x, y, s=None, c=None, marker=None, cmap=None, alpha=None, **kwargs)

  • x, y: 必选参数,表示 x 轴和 y 轴数据,通常是一维数组或列表。

  • s: 可选参数,表示点的大小,可以是一个数值或与数据点数量相同的数组,用于表示第三个维度的数据。

  • c: 可选参数,表示点的颜色,可以是一个颜色值、颜色序列或与数据点数量相同的数组,用于表示第三个维度的数据。

  • marker: 可选参数,表示标记的形状,与 plot() 函数的标记字符类似。

  • cmap: 可选参数,当 c 参数传入数值数组时,用于指定颜色映射方案,将数值映射到颜色。

  • alpha: 可选参数,表示点的透明度。

  • **kwargs: 可选参数,用于设置其他绘图属性,例如标签、边缘颜色等。

代码实践:

import matplotlib.pyplot as plt import numpy as np # 生成随机数据 np.random.seed(0) # 设置随机种子,保证每次运行结果一致 x = np.random.rand(50) y = np.random.rand(50) colors = np.random.rand(50) sizes = (30 * np.random.rand(50)) ** 2 # 点的大小,平方是为了视觉效果更明显 # 绘制散点图 plt.scatter(x, y, s=sizes, c=colors, alpha=0.5, cmap='viridis') # 添加颜色条 plt.colorbar() # 添加标题和轴标签 plt.title('Scatter Plot with Size and Color Mapping') plt.xlabel('X-axis') plt.ylabel('Y-axis') # 显示图形 plt.show()

代码详解:

  1. 生成随机数据: 使用 np.random.rand(50) 生成 50 个 0 到 1 之间的随机数作为 x 轴和 y 轴数据。 colorssizes 也生成随机数数组,分别用于控制点的颜色和大小。 np.random.seed(0) 设置随机种子,确保每次运行代码生成的随机数序列相同,使得结果可复现。

  2. 绘制散点图: plt.scatter(x, y, s=sizes, c=colors, alpha=0.5, cmap='viridis') 使用 scatter() 函数绘制散点图。

    • s=sizes: 设置点的大小,使用 sizes 数组,使得点的大小各不相同,可以表示第三个维度的数据。

    • c=colors: 设置点的颜色,使用 colors 数组,结合 cmap='viridis' 参数,将数值映射到 viridis 颜色映射方案中的颜色,也用于表示第三个维度的数据。

    • alpha=0.5: 设置点的透明度为 0.5,使点看起来更柔和,并能更好地显示重叠的点。

    • cmap='viridis': 指定颜色映射方案为 viridis,这是一个常用的色彩鲜艳、视觉效果好的颜色映射方案。

  3. 添加颜色条: plt.colorbar() 添加颜色条,用于解释颜色映射的含义,将颜色值与数值范围对应起来。

scatter() 函数的应用场景:

  • 展示两个变量之间的相关性,例如身高和体重、广告投入和销售额等。

  • 识别数据中的聚类和异常值。

  • 可视化高维数据,通过点的大小和颜色等属性编码额外的维度信息。

1.3.3 bar()barh() 函数:绘制柱状图

bar()barh() 函数分别用于绘制垂直柱状图和水平柱状图,它们非常适合比较不同类别的数据大小,清晰地展示离散数据的差异。

基本用法:

  • bar(x, height, width=0.8, bottom=None, align='center', **kwargs) 绘制垂直柱状图。

  • barh(y, width, height=0.8, left=None, align='center', **kwargs) 绘制水平柱状图。

  • x (或 y): 表示柱的 x 轴位置 (或 y 轴位置),通常是一个一维数组或列表,表示每个柱的类别。

  • height (或 width): 表示柱的高度 (或宽度),通常是一个一维数组或列表,表示每个类别的数值。

  • width (或 height): 可选参数,表示柱的宽度 (或高度),默认值为 0.8。

  • bottom (或 left): 可选参数,表示柱的底部基线 (或左侧基线),默认为 0。

  • align: 可选参数,表示柱的对齐方式,可选值为 'center' (居中) 或 'edge' (边缘对齐),默认值为 'center'

  • **kwargs: 可选参数,用于设置其他绘图属性,例如颜色、标签、边缘颜色等。

代码实践 (垂直柱状图):

import matplotlib.pyplot as plt # 类别标签和数据 categories = ['A', 'B', 'C', 'D', 'E'] values = [25, 40, 30, 35, 20] # 绘制垂直柱状图 plt.bar(categories, values, color=['skyblue', 'lightcoral', 'lightgreen', 'gold', 'lightpink']) # 添加标题和轴标签 plt.title('Vertical Bar Chart') plt.xlabel('Categories') plt.ylabel('Values') # 显示图形 plt.show()

代码实践 (水平柱状图):

import matplotlib.pyplot as plt # 类别标签和数据 categories = ['A', 'B', 'C', 'D', 'E'] values = [25, 40, 30, 35, 20] # 绘制水平柱状图 plt.barh(categories, values, color=['skyblue', 'lightcoral', 'lightgreen', 'gold', 'lightpink']) # 添加标题和轴标签 plt.title('Horizontal Bar Chart') plt.ylabel('Categories') # 注意轴标签的对应关系 plt.xlabel('Values') # 显示图形 plt.show()

代码详解:

  • 两个示例代码的结构类似,只是使用了 plt.bar() (垂直) 和 plt.barh() (水平) 函数,并相应地调整了轴标签。

  • categories 列表存储类别标签,values 列表存储每个类别对应的数据值。

  • plt.bar(categories, values, color=['skyblue', ...])plt.barh(categories, values, color=['skyblue', ...]) 绘制柱状图, categories 作为 x 轴 (或 y 轴) 数据, values 作为柱的高度 (或宽度) 数据。 color 参数设置每个柱的颜色,使用颜色列表为每个柱指定不同的颜色。

bar()barh() 函数的应用场景:

  • 比较不同类别的数据大小,例如不同产品的销售额、不同地区的人口数量等。

  • 展示调查问卷结果,例如不同选项的选择比例。

  • 可视化统计数据,例如不同年份的 GDP 增长率。

1.3.4 hist() 函数:绘制直方图

hist() 函数用于绘制直方图,它可以展示数据分布的频率,帮助我们理解数据的集中趋势和离散程度。直方图将数据划分为若干个区间 (bin),并统计每个区间内数据点的数量,用柱状图的形式展示出来。

基本用法:

hist(x, bins=None, range=None, density=False, cumulative=False, histtype='bar', color=None, **kwargs)

  • x: 必选参数,表示输入数据,通常是一个一维数组或列表。

  • bins: 可选参数,表示直方图的区间数量,可以是一个整数或一个区间边界序列。如果为整数,则将数据划分为 bins 个等宽区间;如果为序列,则序列中的值定义了区间的边界。默认值为 10。

  • range: 可选参数,表示区间的范围,是一个包含两个元素的元组 (min, max),超出范围的数据将被忽略。默认值为数据的最小值和最大值。

  • density: 可选参数,布尔值,如果为 True,则将直方图归一化,使得柱的高度表示概率密度而不是频数。默认为 False

  • cumulative: 可选参数,布尔值,如果为 True,则绘制累积直方图,展示数据的累积分布。默认为 False

  • histtype: 可选参数,表示直方图的类型,可选值为 'bar' (标准柱状直方图)、'barstacked' (堆叠柱状直方图)、'step' (阶梯状直方图)、'stepfilled' (填充阶梯状直方图)。默认为 'bar'

  • color: 可选参数,设置直方图的颜色。

  • **kwargs: 可选参数,用于设置其他绘图属性,例如标签、边缘颜色等。

代码实践:

import matplotlib.pyplot as plt import numpy as np # 生成正态分布随机数据 np.random.seed(0) data = np.random.randn(1000) # 生成 1000 个服从标准正态分布的随机数 # 绘制直方图 plt.hist(data, bins=30, color='skyblue', edgecolor='black') # 30 个区间,指定颜色和边缘颜色 # 添加标题和轴标签 plt.title('Histogram of Normal Distribution') plt.xlabel('Value') plt.ylabel('Frequency') # 显示图形 plt.show()

代码详解:

  1. 生成正态分布数据: np.random.randn(1000) 生成 1000 个服从标准正态分布 (均值为 0,标准差为 1) 的随机数,模拟实际应用中常见的连续型数据。

  2. 绘制直方图: plt.hist(data, bins=30, color='skyblue', edgecolor='black') 使用 hist() 函数绘制直方图。

    • bins=30: 将数据划分为 30 个区间。

    • color='skyblue': 设置柱的颜色为天蓝色。

    • edgecolor='black': 设置柱的边缘颜色为黑色,使柱之间的界限更清晰。

hist() 函数的应用场景:

  • 分析数据分布,例如考试成绩分布、收入分布、产品尺寸分布等。

  • 检验数据是否符合某种理论分布,例如正态分布、均匀分布等。

  • 比较不同数据集的分布差异。

1.3.5 pie() 函数:绘制饼图

pie() 函数用于绘制饼图,它以扇形区域展示各部分占总体的比例,直观地表达数据的相对大小。饼图通常用于展示分类数据的占比情况。

基本用法:

pie(x, explode=None, labels=None, colors=None, autopct=None, shadow=False, startangle=0, **kwargs)

  • x: 必选参数,表示扇形区域的大小,通常是一个一维数组或列表,表示每个部分的数值。饼图会自动计算各部分占总体的比例。

  • explode: 可选参数,用于设置扇形区域的突出显示效果,是一个与 x 长度相同的数组或列表,每个元素表示对应扇形区域向外突出的距离,通常设置为 0 到 1 之间的值。

  • labels: 可选参数,用于设置扇形区域的标签,是一个与 x 长度相同的字符串列表,表示每个部分的标签文本。

  • colors: 可选参数,用于设置扇形区域的颜色,是一个颜色列表,为每个扇形区域指定颜色。

  • autopct: 可选参数,用于设置在扇形区域上显示百分比的格式字符串,例如 '%.1f%%' 表示保留一位小数的百分比格式。

  • shadow: 可选参数,布尔值,如果为 True,则为饼图添加阴影效果。默认为 False

  • startangle: 可选参数,表示饼图的起始角度,默认为 0 度,表示从 x 轴正方向开始绘制。

  • **kwargs: 可选参数,用于设置其他绘图属性,例如标题、字体大小等。

代码实践:

import matplotlib.pyplot as plt # 各部分数据和标签 labels = ['Frogs', 'Hogs', 'Dogs', 'Logs'] sizes = [15, 30, 45, 10] explode = (0, 0.1, 0, 0) # 第二部分突出显示 # 绘制饼图 plt.pie(sizes, explode=explode, labels=labels, autopct='%1.1f%%', shadow=True, startangle=90) # 保证饼图是正圆形 plt.axis('equal') # 添加标题 plt.title('Pie Chart Example') # 显示图形 plt.show()

代码详解:

  1. 数据和标签: labels 列表存储各部分的标签, sizes 列表存储各部分的数据值。 explode 元组设置第二个扇形区域 (Hogs) 突出显示 0.1 的距离。

  2. 绘制饼图: plt.pie(sizes, explode=explode, labels=labels, autopct='%1.1f%%', shadow=True, startangle=90) 使用 pie() 函数绘制饼图。

    • explode=explode: 应用突出显示效果。

    • labels=labels: 设置扇形区域标签。

    • autopct='%1.1f%%': 在扇形区域上显示百分比,格式为保留一位小数。

    • shadow=True: 添加阴影效果。

    • startangle=90: 设置起始角度为 90 度,使饼图从 y 轴正方向开始绘制。

  3. 保证圆形: plt.axis('equal') 设置坐标轴比例相等,保证饼图是正圆形,而不是椭圆形。

pie() 函数的应用场景:

  • 展示各部分占总体的比例,例如市场份额、支出构成、人口结构等。

  • 强调数据的相对大小关系,直观地比较不同部分的占比。

  • 在报告、演示文稿等场合中,用简洁明了的方式呈现数据。

1.3.6 基础绘图函数关系图 (Mermaid Graph TD)

下面使用 Mermaid 绘制一个简单的图表,展示上述基础绘图函数与 matplotlib.pyplot 模块之间的关系:

图表解释:

  • matplotlib.pyplot 子图表示 pyplot 模块。

  • plt_plot, plt_scatter, plt_bar, plt_barh, plt_hist, plt_pie 分别代表 pyplot 模块中的 plot(), scatter(), bar(), barh(), hist(), pie() 函数。

  • "数据" 节点表示输入到绘图函数的数据。

  • "图形输出" 节点表示绘图函数生成的图形。

  • 箭头表示数据流向和函数调用关系。

该图表简洁地展示了这些基础绘图函数都属于 matplotlib.pyplot 模块,并且它们都接收数据作为输入,最终生成图形输出。

总结

本文详细介绍了 Matplotlib 基础入门阶段的五个核心绘图函数:plot(), scatter(), bar(), barh(), 和 pie()。通过代码实践和详细解释,我们学习了每个函数的基本用法、常用参数和应用场景。掌握这些基础绘图函数是构建更复杂和更具表现力的数据可视化的关键第一步。在实际应用中,可以根据数据的类型和可视化的目的选择合适的绘图函数,并结合 Matplotlib 提供的丰富自定义选项,创建出清晰、有效、美观的数据图表。


作者与出处
原作者: 灏天文库
来源:灏天文库
整理: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U