数据可视化是数据分析和数据科学中不可或缺的一部分。通过图表,我们可以更直观地观察数据的分布和趋势。Matplotlib作为Python最基础、也是最广泛使用的绘图库之一,不仅支持多种常用图表,还可以通过设置样式、添加注释等高级操作,满足各种定制化需求。本文将带你从Matplotlib的基础用法入手,再到一些高级技巧,全面掌握数据可视化的必备技能。
Matplotlib是Python的二维绘图库,专注于生成简单、清晰的图表。它特别适合数据分析工作流,与NumPy和Pandas等库的兼容性极高。首先,安装Matplotlib:
pip install matplotlib 1 导入Matplotlib
安装完成后,我们通常以plt作为别名导入Matplotlib的pyplot模块:
import matplotlib.pyplot as plt import numpy as np 12
# 示例数据 x = np.linspace(0, 10, 100) # 生成0到10的等距数值 y = np.sin(x) # 计算y值 # 绘制折线图 plt.plot(x, y, label='sin(x)', color='blue', linestyle='-', linewidth=2) plt.xlabel('X-axis') # x轴标签 plt.ylabel('Y-axis') # y轴标签 plt.title('Simple Line Plot') # 图表标题 plt.legend() # 显示图例 plt.grid(True) # 显示网格线 plt.show() 123456789101112
在这个简单折线图中,我们定义了标签、标题、线条样式和颜色,并显示了网格线和图例。
2.2 设置样式与颜色Matplotlib提供了丰富的样式与颜色选择,可以轻松定制图表风格。我们可以通过linestyle和color等参数来调整图表风格,还可以用内置的主题快速应用图表风格:
plt.style.use('ggplot') # 使用ggplot样式 1
Matplotlib支持多种图表类型,可以满足多种可视化需求。以下是几种常用的图表及其使用方法。
3.1 柱状图(Bar Chart)柱状图适用于表示分类数据的数量分布。
# 示例数据 categories = ['A', 'B', 'C', 'D'] values = [10, 20, 15, 25] plt.bar(categories, values, color='skyblue') plt.xlabel('Categories') plt.ylabel('Values') plt.title('Bar Chart Example') plt.show() 123456789 3.2 散点图(Scatter Plot)
散点图用于展示两个变量之间的关系,特别适合展示点状数据。
# 示例数据 x = np.random.rand(50) y = np.random.rand(50) sizes = 100 * np.random.rand(50) # 点的大小 colors = np.random.rand(50) # 点的颜色 plt.scatter(x, y, s=sizes, c=colors, alpha=0.6, cmap='viridis') plt.colorbar() # 显示颜色条 plt.xlabel('X-axis') plt.ylabel('Y-axis') plt.title('Scatter Plot Example') plt.show() 123456789101112 3.3 直方图(Histogram)
直方图用于展示数据的分布情况,是观察数值型数据集中趋势和分布的好工具。
data = np.random.randn(1000) # 生成标准正态分布数据 plt.hist(data, bins=30, color='purple', edgecolor='black', alpha=0.7) plt.xlabel('Value') plt.ylabel('Frequency') plt.title('Histogram Example') plt.show() 1234567 3.4 饼图(Pie Chart)
饼图用于展示各个类别占整体的比例。
# 示例数据 labels = ['Category A', 'Category B', 'Category C'] sizes = [15, 35, 50] plt.pie(sizes, labels=labels, autopct='%1.1f%%', startangle=90) plt.title('Pie Chart Example') plt.show() 1234567
在数据分析中,经常需要在一张图中展示多种数据。Matplotlib支持使用subplots函数创建多子图,并通过调整布局使图表更紧凑。
# 创建2行2列的子图布局 fig, axes = plt.subplots(2, 2, figsize=(10, 8)) # 绘制每个子图 axes[0, 0].plot(x, y, 'r') # 折线图 axes[0, 1].bar(categories, values) # 柱状图 axes[1, 0].scatter(x, y) # 散点图 axes[1, 1].hist(data, bins=20) # 直方图 # 调整布局 fig.tight_layout() plt.show() 123456789101112
Matplotlib允许在图表中添加文本注释,以便标注出关键点或数据。
# 绘制简单折线图 plt.plot(x, y, label='sin(x)') # 添加注释 plt.annotate('Max Point', xy=(np.pi/2, 1), xytext=(np.pi/2+1, 1.5), arrowprops=dict(facecolor='black', shrink=0.05)) plt.xlabel('X-axis') plt.ylabel('Y-axis') plt.title('Annotation Example') plt.legend() plt.show() 123456789101112 5.2 自定义坐标轴与网格
可以通过调整坐标轴的刻度、标签和样式来定制图表外观。
plt.plot(x, y) plt.xlabel('X-axis') plt.ylabel('Y-axis') plt.title('Custom Axes and Grid') # 自定义坐标轴 plt.xticks(np.arange(0, 11, 2)) # 设置x轴刻度间隔 plt.yticks([-1, 0, 1]) # 设置y轴刻度 # 自定义网格线 plt.grid(color='gray', linestyle='--', linewidth=0.5) plt.show() 12345678910111213 5.3 双Y轴图表
对于需要展示两个不同变量(且单位不同)的图表,可以使用双Y轴。
# 数据 x = np.arange(0, 10, 0.1) y1 = np.sin(x) y2 = np.cos(x) # 创建双Y轴 fig, ax1 = plt.subplots() ax1.plot(x, y1, 'g-', label='sin(x)') ax1.set_xlabel('X-axis') ax1.set_ylabel('sin(x)', color='g') # 创建第二个Y轴 ax2 = ax1.twinx() ax2.plot(x, y2, 'b--', label='cos(x)') ax2.set_ylabel('cos(x)', color='b') fig.tight_layout() plt.title('Dual Y-Axis Example') plt.show() 1234567891011121314151617181920
Matplotlib支持将生成的图表保存为多种格式(如PNG、PDF、SVG等)。可以使用savefig方法将图表保存到本地:
plt.plot(x, y) plt.title('Save Plot Example') # 保存图表 plt.savefig('plot_example.png', dpi=300, bbox_inches='tight') # dpi设置图像清晰度,bbox_inches调整图表边距 plt.show() 123456
接下来,通过一个案例来整合上述技巧,分析销售数据并生成多个图表。
案例说明假设我们有一组包含月度销售额和利润的数据,目标是分析月度趋势、销售额与利润的关系,并进行可视化展示。
7.1 数据准备# 生成示例数据 months = np.arange(1, 13) sales = np.random.randint(5000, 15000, size=12) profits = sales * np.random.uniform(0.05, 0.15, size=12) 1234 7.2 绘制分析图表 1. 月度销售趋势图
plt.plot(months, sales, marker='o', color='b', label='Sales') plt.xlabel('Month') plt.ylabel('Sales ($)') plt.title('Monthly Sales Trend') plt.legend() plt.grid(True) plt.show() 1234567 2. 销售额与利润的散点图
plt.scatter(sales, profits, color='purple') plt.xlabel('Sales ($)') plt.ylabel('Profit ($)') plt.title('Sales vs. Profit') plt.grid(True) plt.show() 123456 3. 多子图展示
fig, axs = plt.subplots(1, 2, figsize=(14, 6)) # 折线图 axs[0].plot(months, sales, marker='o', label='Sales', color='blue') axs[0].set_title('Monthly Sales Trend') axs[0].set_xlabel('Month') axs[0].set_ylabel('Sales ($)') # 散点图 axs[1].scatter(sales, profits, color='green') axs[1].set_title('Sales vs. Profit') axs[1].set_xlabel('Sales ($)') axs[1].set_ylabel('Profit ($)') fig.tight_layout() plt.show() 123456789101112131415161718
本文带领大家从基础到高级,全面介绍了Matplotlib的各种功能,包括基础图表、子图布局、注释、坐标轴定制、双Y轴图表等。同时,结合实战案例分析销售数据,展示了如何在真实场景中使用Matplotlib进行数据可视化。希望本文能帮助你掌握数据可视化的基本技能,并为日后的数据分析提供支持。
相关知识
Python中的数据可视化:Matplotlib基础与高级技巧
python利用c4.5决策树对鸢尾花卉数据集进行分类(iris)
Python机器学习基础教程
[机器学习基础][笔记] 一、鸢尾花分类
第 1 章 机器学习基础引言
花了1个月时间,把Python库全部整理出来了,覆盖所有,建议收藏
使用pandas绘制两列csv的直方图
Python中的花——详解花的图形绘制
3.4 数据可视化
python 生成玫瑰花代码
网址: Python中的数据可视化:Matplotlib基础与高级技巧 https://m.huajiangbk.com/newsview304482.html
上一篇: WPS图片文字识别:轻松转换图片 |
下一篇: Python海龟编辑器判断水仙花 |