文章目录
第一部分:基础概念与简单绘图1.1 `matplotlib` 简介1.2 创建第一个折线图1.3 图表的基本组成元素 第二部分:图表样式与修饰2.1 修改图表样式2.2 添加图例2.3 调整坐标轴与刻度 第三部分:绘制不同类型的图表3.1 散点图 (Scatter Plot)3.2 柱状图 (Bar Chart)3.3 饼图 (Pie Chart) 第四部分:数据处理与可视化4.1 `pandas` 与 `matplotlib` 的结合示例:从 CSV 读取数据并绘制折线图解释:注意: 4.2 绘制多个数据系列示例:绘制多条折线解释: 4.3 创建子图布局示例:创建 2x1 的子图布局解释: 第五部分:图表定制与高级功能5.1 自定义颜色和样式示例:使用自定义颜色和样式绘制图表解释: 5.2 标注与注释示例:为特定数据点添加注释解释:
第一部分:基础概念与简单绘图
1.1 matplotlib
简介
matplotlib
是 Python 中最常用的绘图库之一。它提供了类似于 Matlab 的 API,方便用户创建各种类型的图表。我们主要使用其中的 pyplot
模块,它是绘制图表的核心工具。
# 在开始之前,请确保你安装了 matplotlib 库pip install matplotlib
1.2 创建第一个折线图
从最简单的折线图开始,先理解 matplotlib
的基本概念。通过 pyplot
模块,我们可以很容易地创建图表并展示数据。
# 导入 matplotlib 库import matplotlib.pyplot as plt# 定义数据x = [1, 2, 3, 4, 5]y = [1, 4, 9, 16, 25]# 创建折线图plt.plot(x, y)# 显示图表plt.show()
1.3 图表的基本组成元素
每个 matplotlib
图表主要由以下几个元素组成:
# 示例:为图表添加标题和坐标轴标签plt.plot(x, y)# 添加标题plt.title("简单的折线图")# 添加坐标轴标签plt.xlabel("X轴")plt.ylabel("Y轴")# 显示图表plt.show()
这里的方块是因为没有安装字体的缘故,在下一篇第六部分会讲到的 第二部分:图表样式与修饰
2.1 修改图表样式
我们可以通过设置不同的参数来修改图表的样式,比如线条的颜色、样式和粗细等。
# 创建折线图,设置线条颜色、线型和宽度plt.plot(x, y, color='red', linestyle='--', linewidth=2)# 显示图表plt.show()
2.2 添加图例
如果图表中有多条数据线或多组数据,我们可以为每条数据添加图例,以便区分各组数据。
# 定义两组数据x1 = [1, 2, 3, 4, 5]y1 = [1, 4, 9, 16, 25]x2 = [1, 2, 3, 4, 5]y2 = [2, 3, 5, 7, 11]# 绘制两条折线,并分别添加图例plt.plot(x1, y1, label='组1', color='blue')plt.plot(x2, y2, label='组2', color='green')# 显示图例plt.legend()# 显示图表plt.show()
2.3 调整坐标轴与刻度
我们可以手动设置坐标轴的范围和刻度,使图表的显示更加清晰。
# 绘制图表plt.plot(x, y)# 设置坐标轴的范围plt.xlim(0, 6) # X 轴的范围plt.ylim(0, 30) # Y 轴的范围# 设置 X 轴和 Y 轴的刻度plt.xticks([1, 2, 3, 4, 5])plt.yticks([0, 5, 10, 15, 20, 25])# 显示图表plt.show()
第三部分:绘制不同类型的图表
3.1 散点图 (Scatter Plot)
散点图用于展示数据的分布情况。
# 定义数据x = [1, 2, 3, 4, 5]y = [5, 4, 3, 2, 1]# 创建散点图plt.scatter(x, y, color='red')# 显示图表plt.show()
3.2 柱状图 (Bar Chart)
柱状图用于展示分类数据的大小。
# 定义数据categories = ['A', 'B', 'C', 'D', 'E']values = [5, 7, 3, 8, 6]# 创建柱状图plt.bar(categories, values)# 显示图表plt.show()
3.3 饼图 (Pie Chart)
饼图展示各分类数据的占比。
# 定义数据labels = ['A', 'B', 'C', 'D']sizes = [20, 30, 25, 25]# 创建饼图plt.pie(sizes, labels=labels, autopct='%1.1f%%')# 显示图表plt.show()
sizes:这是饼图的主要数据,即每个部分的相对大小。在饼图中,sizes 列表中的每个元素决定了饼图中各个部分的大小比例。matplotlib 会根据这些数值的比例自动计算每一部分的角度和面积。
labels:这是用来为饼图中的各个部分添加标签。我们通过 labels=labels 来指定标签列表。每个标签会显示在相应部分的旁边,标识出该部分代表的数据类别。
autopct=‘%1.1f%%’:这是用来设置饼图中每个部分的自动百分比显示的。它定义了显示百分比的格式:
%1.1f%% 表示在图中显示百分比,1.1f 意味着保留一位小数,%% 是百分比符号。这里是让每一部分的百分比在饼图上显示为 1 位小数的格式。
例如,如果某个部分占整个饼图的 25%,则在图中显示 25.0%。
第四部分:数据处理与可视化
4.1 pandas
与 matplotlib
的结合
在实际项目中,我们经常需要处理数据框 (DataFrame
),例如从 Excel、CSV 等文件读取数据。pandas
和 matplotlib
的结合可以帮助我们快速地将数据可视化展示。
示例:从 CSV 读取数据并绘制折线图
首先,我们需要从 pandas
读取数据,然后用 matplotlib
可视化。假设我们有一个包含时间序列数据的 CSV 文件,内容如下:
日期,销售额2023-01-01,2002023-01-02,3002023-01-03,1502023-01-04,4002023-01-05,250
我们将读取这个文件并绘制日期与销售额的折线图。
import pandas as pdimport matplotlib.pyplot as plt# 从 CSV 文件读取数据data = pd.read_csv('sales_data.csv')# 绘制折线图plt.plot(data['日期'], data['销售额'])# 添加标题和坐标轴标签plt.title('每日销售额')plt.xlabel('日期')plt.ylabel('销售额')# 显示图表plt.show()
解释:
pd.read_csv()
:从 CSV 文件读取数据,返回 DataFrame
。data['日期']
和 data['销售额']
:从 DataFrame
中选择特定的列进行绘图。plt.plot()
:基于数据创建折线图。 注意:
在实际项目中,你可能需要对数据进行预处理,例如处理缺失值、数据格式转换等。在进行可视化之前,确保数据是干净的。
4.2 绘制多个数据系列
有时候我们需要在同一个图表中展示多个数据系列,来进行对比或分析。我们可以通过在 matplotlib
中绘制多个数据线来实现这一点。
示例:绘制多条折线
假设我们有两个产品的销售数据,并想在同一个图表中展示。
import pandas as pdimport matplotlib.pyplot as plt# 定义数据日期 = ['2023-01-01', '2023-01-02', '2023-01-03', '2023-01-04', '2023-01-05']产品A = [200, 300, 150, 400, 250]产品B = [180, 260, 170, 380, 230]# 创建折线图plt.plot(日期, 产品A, label='产品A', color='blue')plt.plot(日期, 产品B, label='产品B', color='green')# 添加标题和坐标轴标签plt.title('产品A与产品B的销售额比较')plt.xlabel('日期')plt.ylabel('销售额')# 显示图例plt.legend()# 显示图表plt.show()
解释:
plt.plot(日期, 产品A, label='产品A', color='blue')
:创建产品A的折线图,蓝色表示该系列。plt.legend()
:显示图例,以便区分不同的产品线。 通过这个例子,我们学会了如何在同一个图表中绘制多个数据系列,这在多维数据的分析中非常有用。
4.3 创建子图布局
当我们有多组数据想要展示在同一个窗口时,可以使用子图布局。在 matplotlib
中,子图功能允许我们将同一个图表窗口划分为多个区域,每个区域展示不同的数据。
示例:创建 2x1 的子图布局
假设我们要展示两组销售数据,但希望它们在上下两个子图中显示。
import matplotlib.pyplot as plt# 定义数据日期 = ['2023-01-01', '2023-01-02', '2023-01-03', '2023-01-04', '2023-01-05']产品A = [200, 300, 150, 400, 250]产品B = [180, 260, 170, 380, 230]# 创建子图fig, ax = plt.subplots(2, 1) # 2行1列的子图布局# 绘制第一个子图ax[0].plot(日期, 产品A, color='blue')ax[0].set_title('产品A的销售额')# 绘制第二个子图ax[1].plot(日期, 产品B, color='green')ax[1].set_title('产品B的销售额')# 显示图表plt.tight_layout() # 自动调整子图布局,避免重叠plt.show()
解释:
plt.subplots(2, 1)
:创建两行一列的子图布局。ax[0]
和 ax[1]
:分别表示第一个和第二个子图区域。plt.tight_layout()
:自动调整子图之间的间距,防止标题、标签等内容重叠。 通过子图的布局,我们可以在同一个窗口内展示不同的数据集,这有助于比较不同的趋势。
第五部分:图表定制与高级功能
5.1 自定义颜色和样式
在很多情况下,我们希望图表能够符合品牌或特定设计要求。这时,可以自定义颜色、样式和字体,以生成美观的图表。
示例:使用自定义颜色和样式绘制图表
import matplotlib.pyplot as plt# 定义数据x = [1, 2, 3, 4, 5]y1 = [1, 4, 9, 16, 25]y2 = [2, 3, 5, 7, 11]# 创建图表,设置线条颜色、样式和标记plt.plot(x, y1, color='red', linestyle='-', marker='o', label='红色线')plt.plot(x, y2, color='blue', linestyle='--', marker='s', label='蓝色虚线')# 添加标题和图例plt.title('自定义样式示例')plt.legend()# 显示图表plt.show()
解释:
color
:指定线条颜色。linestyle
:定义线型(实线、虚线等)。marker
:设置数据点的标记(如圆圈 o
,方块 s
等)。 通过这种方式,我们可以为不同的数据系列使用自定义颜色和样式,以确保图表符合特定的视觉需求。
5.2 标注与注释
有时候我们需要对图表中的某些点进行标注或注释,突出显示特定数据点。matplotlib
提供了 annotate()
函数,用于在图表上添加文本。
示例:为特定数据点添加注释
import matplotlib.pyplot as plt# 定义数据x = [1, 2, 3, 4, 5]y = [1, 4, 9, 16, 25]# 创建图表plt.plot(x, y)# 为 (2, 4) 点添加注释plt.annotate('这个点很重要', xy=(2, 4), xytext=(3, 10), arrowprops=dict(facecolor='black', shrink=0.05))# 显示图表plt.show()
解释:
plt.annotate()
:为图表中的特定点添加注释。xy
:指定要标注的点的坐标。xytext
:指定注释文本的位置。arrowprops
:设置箭头的样式。shrink=0.05
表示箭头长度缩短 5%,这样箭头看起来不会完全覆盖注释的起点和终点,而是稍微缩短。shrink
的值可以是 0 到 1 之间的小数,值越大箭头缩短得越多。 以上就是关于【Python篇】matplotlib超详细教程-由入门到精通(上篇)的内容啦,各位大佬有什么问题欢迎在评论区指正,或者私信我也是可以的啦,您的支持是我创作的最大动力!❤️