画出你的数据故事:Python中Matplotlib使用从基础到高级

简介: 画出你的数据故事:Python中Matplotlib使用从基础到高级

摘要: Matplotlib是Python中广泛使用的数据可视化库,它提供了丰富的绘图功能,用于创建各种类型的图表和图形。本文将从入门到精通,详细介绍Matplotlib的使用方法,通过代码示例和中文注释,帮助您掌握如何在不同场景下灵活绘制高质量的图表。

1. 简介

Matplotlib是一个功能强大的Python数据可视化库,它可以用来绘制各种类型的图表,包括折线图、散点图、柱状图、饼图、3D图等。Matplotlib的灵活性和可定制性使得它成为数据科学家和分析师的首选工具。本文将带您从入门到精通,深入探索Matplotlib的各种绘图技巧。

2. 安装Matplotlib

在开始之前,您需要安装Matplotlib库。如果您使用的是Anaconda发行版,通常已经预装了Matplotlib。否则,可以使用以下命令安装:


pip install matplotlib

3. 基本绘图

在Matplotlib中显示中文字体需要特殊的设置,因为默认情况下Matplotlib可能无法正确显示中文字符。以下是一些步骤,让您可以在Matplotlib绘图中正确显示中文字体:

  1. 安装字体库: 首先,确保您的系统上安装了适合的中文字体库,比如微软雅黑、宋体、黑体等。您可以从一些开源字体库中选择,如思源字体、文泉驿字体等。
  2. 配置Matplotlib: 在绘图之前,需要在Matplotlib中设置中文字体。可以使用rcParams来设置字体,这样在整个Matplotlib会话中都会生效。以下是一个设置中文字体的示例代码:
import matplotlib.pyplot as plt

# 设置中文字体,修改为您系统上已经安装的中文字体
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False  # 解决负号显示为方块的问题

折线图

折线图是显示数据随时间或某种顺序变化的理想选择。以下是一个简单的折线图示例:


import matplotlib.pyplot as plt

x = [1, 2, 3, 4, 5]
y = [10, 8, 6, 4, 2]

plt.plot(x, y, marker='o')
plt.title('折线图示例')
plt.xlabel('X轴')
plt.ylabel('Y轴')
plt.show()

image-20230817140658121

散点图

散点图用于显示两个变量之间的关系。以下是一个简单的散点图示例:


import matplotlib.pyplot as plt

x = [160, 170, 180, 165, 175]
y = [60, 70, 80, 65, 75]

plt.scatter(x, y)
plt.title('散点图示例')
plt.xlabel('身高(cm)')
plt.ylabel('体重(kg)')
plt.show()

image-20230817140815517

柱状图

柱状图适用于比较不同类别的数据。以下是一个简单的柱状图示例:


import matplotlib.pyplot as plt

categories = ['A', 'B', 'C', 'D', 'E']
values = [25, 40, 60, 30, 50]

plt.bar(categories, values)
plt.title('柱状图示例')
plt.xlabel('类别')
plt.ylabel('值')
plt.show()

image-20230817140843452

饼图

饼图用于显示数据的相对部分。以下是一个简单的饼图示例:


import matplotlib.pyplot as plt

labels = ['A', 'B', 'C', 'D', 'E']
sizes = [15, 30, 25, 10, 20]

plt.pie(sizes, labels=labels, autopct='%1.1f%%')
plt.title('饼图示例')
plt.show()

image-20230817140905062

4. 高级绘图

子图

Matplotlib允许将多个图表组织在一个大的图中,称为子图。以下是一个子图示例:


import matplotlib.pyplot as plt

# 创建一个2x2的子图布局
plt.subplot(2, 2, 1)
plt.plot(x, y)

plt.subplot(2, 2, 2)
plt.scatter(x, y)

plt.subplot(2, 2, 3)
plt.bar(categories, values)

plt.subplot(2, 2, 4)
plt.pie(sizes, labels=labels, autopct='%1.1f%%')

plt.tight_layout()  # 调整子图布局
plt.show()

image-20230817140929297

自定义样式

您可以自定义图表的样式,包括颜色、线型、标记等。以下是一个自定义样式示例:


import matplotlib.pyplot as plt

plt.plot(x, y, color='red', linestyle='--', marker='o', label='数据')
plt.title('自定义样式示例')
plt.xlabel('X轴')
plt.ylabel('Y轴')
plt.legend()
plt.show()

image-20230817140949113

注解和标签

您可以在图表中添加注解和标签,以增强可读性。以下是一个带注解和标签的示例:


import matplotlib.pyplot as plt

plt.scatter(x, y)
plt.title('注解和标签示例')
plt.xlabel('X轴')
plt.ylabel('Y轴')

for i, txt in enumerate(labels):
    plt.annotate(txt, (x[i], y[i]))

plt.show()

image-20230817141014948

3D绘图

Matplotlib还支持绘制3D图表,如3D散点图、3D曲面图等。以下是一个3D散点图的示例:


import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

x = [160, 170, 180, 165, 175]
y = [60, 70, 80, 65, 75]
z = [2, 3, 4, 2.5, 3.5]

ax.scatter(x, y, z)
ax.set_title('3D散点图示例')
ax.set_xlabel('身高(cm)')
ax.set_ylabel('体重(kg)')
ax.set_zlabel('分数')
plt.show()

image-20230817141047435

5. 数据可视化实例

折线图:温度变化趋势


import matplotlib.pyplot as plt

days = [1, 2, 3, 4, 5, 6, 7]
temperatures = [25, 26, 27, 24, 23, 22, 21]

plt.plot(days, temperatures, marker='o')
plt.title('温度变化趋势')
plt.xlabel('日期')
plt.ylabel('温度(摄氏度)')
plt.show()

image-20230817141111051

散点图:身高体重关系


import matplotlib.pyplot as plt

heights = [160, 170, 180, 165, 175]
weights = [60, 70, 80, 65, 75]

plt.scatter(heights, weights)
plt.title('身高体重关系')
plt.xlabel('身高(cm)')
plt.ylabel('体重(kg)')
plt.show()

image-20230817141129218

柱状图:销售数据分析


import matplotlib.pyplot as plt

products = ['A', 'B', 'C', 'D', 'E']
sales = [100, 150, 80, 200, 120]

plt.bar(products, sales)
plt.title('销售数据分析')
plt.xlabel('产品')
plt.ylabel('销售量')
plt.show()

image-20230817141154559

6. Matplotlib扩展

Seaborn库

Seaborn是基于Matplotlib的高级数据可视化库,提供了更美观、更简洁的绘图风格。您可以使用Seaborn来创建统计图表、热图、分布图等。


import seaborn as sns

sns.set(style="whitegrid")
sns.scatterplot(x=heights, y=weights)
plt.title('Seaborn散点图')
plt.xlabel('身高(cm)')
plt.ylabel('体重(kg)')
plt.show()

image-20230817141455669

Plotly库

Plotly是一个交互式数据可视化库,可以生成高度可交互的图表和图形。它支持在线分享和嵌入,适用于创建动态、可交互的数据可视化。


import plotly.express as px

fig = px.scatter(x=heights, y=weights)
fig.update_layout(title='Plotly散点图', xaxis_title='身高(cm)', yaxis_title='体重(kg)')
fig.show()

7. 总结

Matplotlib是Python中强大的数据可视化工具,可以创建各种类型的图表和图形。本文从基础绘图开始,逐步介绍了折线图、散点图、柱状图、饼图等基本图表类型,以及子图、自定义样式、注解和标签、3D绘图等高级技巧。此外,我们还展示了数据可视化实例,展示了如何将Matplotlib应用于实际数据分析中。最后,我们介绍了Matplotlib的扩展库Seaborn和Plotly,让您了解更多可选的数据可视化工具。通过深入学习Matplotlib,您可以更好地展示和传达数据,为决策和分析提供有力的支持。

目录
相关文章
|
4月前
|
数据采集 Web App开发 数据可视化
Python零基础爬取东方财富网股票行情数据指南
东方财富网数据稳定、反爬宽松,适合爬虫入门。本文详解使用Python抓取股票行情数据,涵盖请求发送、HTML解析、动态加载处理、代理IP切换及数据可视化,助你快速掌握金融数据爬取技能。
2760 1
|
4月前
|
Java 数据挖掘 数据处理
(Pandas)Python做数据处理必选框架之一!(一):介绍Pandas中的两个数据结构;刨析Series:如何访问数据;数据去重、取众数、总和、标准差、方差、平均值等;判断缺失值、获取索引...
Pandas 是一个开源的数据分析和数据处理库,它是基于 Python 编程语言的。 Pandas 提供了易于使用的数据结构和数据分析工具,特别适用于处理结构化数据,如表格型数据(类似于Excel表格)。 Pandas 是数据科学和分析领域中常用的工具之一,它使得用户能够轻松地从各种数据源中导入数据,并对数据进行高效的操作和分析。 Pandas 主要引入了两种新的数据结构:Series 和 DataFrame。
589 0
|
4月前
|
JSON 算法 API
Python采集淘宝商品评论API接口及JSON数据返回全程指南
Python采集淘宝商品评论API接口及JSON数据返回全程指南
|
4月前
|
JSON API 数据安全/隐私保护
Python采集淘宝拍立淘按图搜索API接口及JSON数据返回全流程指南
通过以上流程,可实现淘宝拍立淘按图搜索的完整调用链路,并获取结构化的JSON商品数据,支撑电商比价、智能推荐等业务场景。
|
5月前
|
数据采集 关系型数据库 MySQL
python爬取数据存入数据库
Python爬虫结合Scrapy与SQLAlchemy,实现高效数据采集并存入MySQL/PostgreSQL/SQLite。通过ORM映射、连接池优化与批量提交,支持百万级数据高速写入,具备良好的可扩展性与稳定性。
|
5月前
|
JSON API 数据安全/隐私保护
Python采集淘宝评论API接口及JSON数据返回全流程指南
Python采集淘宝评论API接口及JSON数据返回全流程指南
|
5月前
|
数据采集 数据可视化 关系型数据库
基于python大数据的电影数据可视化分析系统
电影分析与可视化平台顺应电影产业数字化趋势,整合大数据处理、人工智能与Web技术,实现电影数据的采集、分析与可视化展示。平台支持票房、评分、观众行为等多维度分析,助力行业洞察与决策,同时提供互动界面,增强观众对电影文化的理解。技术上依托Python、MySQL、Flask、HTML等构建,融合数据采集与AI分析,提升电影行业的数据应用能力。
|
数据可视化 Python
【100天精通Python】Day62:Python可视化_Matplotlib绘图基础,绘制折线图、散点图、柱状图、直方图和饼图,以及自定义图标外观和功能,示例+代码
【100天精通Python】Day62:Python可视化_Matplotlib绘图基础,绘制折线图、散点图、柱状图、直方图和饼图,以及自定义图标外观和功能,示例+代码
977 0
【python】使用matplotlib绘图使刻度线向内
成功使用代码实现matplotlib绘制的图刻度线朝内
【python】使用matplotlib绘图使刻度线向内
|
数据可视化 Python
【100天精通Python】Day65:Python可视化_Matplotlib3D绘图mplot3d,绘制3D散点图、3D线图和3D条形图,示例+代码
【100天精通Python】Day65:Python可视化_Matplotlib3D绘图mplot3d,绘制3D散点图、3D线图和3D条形图,示例+代码
1255 0

推荐镜像

更多