Matplotlib入门与进阶:数据可视化的强大工具

news2024/11/14 14:14:05

Matplotlib入门与进阶:数据可视化的强大工具

在当今数据驱动的世界中,数据可视化成为了数据分析的重要一环。数据可视化不仅能够帮助开发者理解和分析数据,还能使数据展示更具说服力。本文将详细介绍Python中的2D绘图库——Matplotlib。通过Matplotlib,你可以用极少的代码实现多种图形的绘制,如折线图、散点图、柱状图等,为你的数据分析增色不少。

一、Matplotlib简介

Matplotlib是Python中最受欢迎的2D绘图库之一。它以简单的API和强大的功能,允许开发者绘制各种类型的图表,如折线图、散点图、柱状图等。Matplotlib的官方文档提供了丰富的参考资料,是学习和使用该库的最佳途径。你可以访问Matplotlib的官方网站了解更多信息:Matplotlib官网。
安装Matplotlib:

pip install matplotlib

二、Matplotlib的基本使用

Matplotlib主要通过pyplot模块来进行绘图。以下是一些常用的绘图方法及其功能介绍:

方法名功能说明
title()设置图表的标题
xlabel()设置x轴名称
ylabel()设置y轴名称
xticks()设置x轴的刻度,支持旋转角度
yticks()设置y轴的刻度
plot()绘制线性图表
show()显示图表
legend()显示图例
text(x, y, text)在图表中指定位置显示文本
figure()创建一个新的图形对象,可以设置大小和分辨率

1.绘制简单直线图

绘制直线图是Matplotlib最基本的功能之一。下面的示例展示了如何绘制一条简单的直线。

import matplotlib.pyplot as plt

# 绘制从点(0,1)到点(2,4)的直线
plt.plot([0, 2], [1, 4])
plt.title("Simple Line Plot")
plt.xlabel("X-Axis")
plt.ylabel("Y-Axis")
plt.show()

在这里插入图片描述运行以上代码,您将看到一条从点(0,1)到点(2,4)的直线。这是使用Matplotlib绘制图形的最基本方式。

2.绘制折线图

折线图是用于展示数据随时间或其它变量变化趋势的常用图形。下面的例子展示了如何使用Matplotlib绘制简单的折线图。

import matplotlib.pyplot as plt

x = [1, 2, 3, 4, 5]
y = [1, 4, 9, 16, 25]

plt.plot(x, y)
plt.title("Square Numbers")
plt.xlabel("Value")
plt.ylabel("Square of Value")
plt.show()

在这里插入图片描述

该示例展示了数字的平方随数字的增加而变化的趋势,生成的图表直观地展示了这一规律。

3.设置标签与线条样式

在实际应用中,我们通常需要对图形进行更详细的设置,比如调整线条宽度、设置图表标题和坐标轴标签等。下面的代码演示了如何进行这些设置。

import matplotlib.pyplot as plt

x = [1, 2, 3, 4, 5]
y = [1, 4, 9, 16, 25]

plt.plot(x, y, linewidth=2)  # 设置线条宽度
plt.title('Square Numbers', fontsize=20)  # 设置图表标题
plt.xlabel('Value', fontsize=14)  # 设置x轴标签
plt.ylabel('Square of Value', fontsize=14)  # 设置y轴标签
plt.show()

在这里插入图片描述

4.中文标题与风格设置

Matplotlib默认不支持中文,为了在图表中显示中文标题,我们需要进行一些配置。以下代码展示了如何解决中文显示问题,并设置图表的风格。

import matplotlib.pyplot as plt

x = [1, 2, 3, 4, 5]
y = [1, 4, 9, 16, 25]

plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
plt.plot(x, y, linewidth=2)
plt.title('数字的平方', fontsize=20)
plt.xlabel('值', fontsize=14)
plt.ylabel('平方', fontsize=14)
plt.show()

在这里插入图片描述

此外,Matplotlib还支持多种风格设置。你可以使用以下代码查看并应用不同的风格:

import matplotlib.pyplot as plt
import numpy as np

# 查看可用风格
print(plt.style.available)

# 设置风格为'ggplot'
plt.style.use('ggplot')

x = np.linspace(-10, 10, 100)
plt.plot(x, np.sin(x))
plt.show()

在这里插入图片描述

5.组合图表:最高温度与最低温度的变化

我们可以将多条折线绘制在同一张图表上,以展示多个数据集的变化情况。以下示例展示了一周内最高温度和最低温度的变化。

import matplotlib.pyplot as plt

max_temperature = [26, 30, 31, 32, 33]
min_temperature = [12, 16, 16, 17, 18]
x = range(5)
x_ticks = ['星期{}'.format(i) for i in range(1, 6)]

plt.rcParams['font.sans-serif'] = ['SimHei']
plt.title('一周内的温度变化')
plt.xlabel('星期')
plt.ylabel('温度 (℃)')

# 绘制最高温度和最低温度的折线图
plt.plot(x, max_temperature, label='最高温度', marker='o')
plt.plot(x, min_temperature, label='最低温度', marker='o')

# 设置x轴标签
plt.xticks(x, x_ticks)

# 显示图例
plt.legend(loc='upper left')
plt.show()

在这里插入图片描述

6.绘制曲线

Matplotlib支持绘制各种类型的曲线图,例如下方代码展示了如何绘制一元二次方程y=x²的曲线。

import matplotlib.pyplot as plt

# 生成x坐标点
x = range(-100, 100)
# 计算对应的y坐标点
y = [i**2 for i in x]
plt.rcParams["axes.unicode_minus"]=False  #正常显示负号
# 绘制曲线
plt.plot(x, y)
plt.title("y = x^2")
plt.xlabel("x")
plt.ylabel("y")
plt.show()

#在这里插入图片描述

7.正弦曲线与余弦曲线

正弦曲线和余弦曲线是周期函数中最常见的曲线,下面的示例展示了如何使用Matplotlib绘制这些曲线。

import matplotlib.pyplot as plt
import numpy as np

# 生成x坐标(0-10的100个等差数列)
x = np.linspace(0, 10, 100)
sin_y = np.sin(x)
cos_y = np.cos(x)

# 绘制正弦曲线和余弦曲线
plt.plot(x, sin_y, label='sin(x)')
plt.plot(x, cos_y, label='cos(x)')

plt.title("Sine and Cosine Waves")
plt.xlabel("x")
plt.ylabel("y")
plt.legend()
plt.show()

在这里插入图片描述

8.画区分布

有时我们需要在同一个画布上绘制多个图表,Matplotlib提供了subplot和subplots函数来实现这一功能。以下示例展示了如何将画布分为多个区域,并在每个区域内绘制不同的图表。

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(1, 10, 100)

# 将画布分为2行2列
plt.subplot(2, 2, 1)
plt.plot(x, np.sin(x))
plt.title("Sine")

plt.subplot(2, 2, 2)
plt.plot(x, np.cos(x))
plt.title("Cosine")

plt.subplot(2, 2, 3)
plt.plot(x, np.tan(x))
plt.title("Tangent")

plt.subplot(2, 2, 4)
plt.plot(x, np.log(x))
plt.title("Logarithm")

plt.tight_layout()
plt.show()

在这里插入图片描述

9.散点图

散点图用于研究两个变量之间的关系。以下代码演示了如何使用Matplotlib绘制一个简单的散点图。

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 10, 100)
y = np.sin(x)

# 绘制散点图
plt.scatter(x, y, color='red')
plt.title("Scatter Plot of Sine Function")
plt.xlabel("x")
plt.ylabel("sin(x)")
plt.show()

在这里插入图片描述
我们还可以绘制不同大小、不同颜色的散点图:

import matplotlib.pyplot as plt
import numpy as np

np.random.seed(0)
x = np.random.rand(100)
y = np.random.rand(100)
colors = np.random.rand(100)
size = np.random.rand(100) * 1000

plt.scatter(x, y, c=colors, s=size, alpha=0.7)
plt.title("Random Scatter Plot")
plt.show()

在这里插入图片描述

10. 绘制不同种类不同颜色的线(拓展)

在数据可视化中,我们经常需要区分不同数据系列,这时可以通过使用不同样式和颜色的线来实现。Matplotlib中的plot()函数支持通过格式字符串来控制线条样式、颜色和标记样式。以下是常用的格式化字符:

线条样式说明标记样式说明颜色缩写说明
‘-’实线‘.’‘b’蓝色
‘–’短横线‘,’像素‘g’绿色
'-. ’点划线‘o’圆标记‘r’红色
‘:’虚线‘^’正三角‘c’青色
‘s’正方形‘m’品红色
‘*’星形‘y’黄色
‘+’加号‘k’黑色
‘x’叉号‘w’白色

示例:绘制不同种类不同颜色的线

import matplotlib.pyplot as plt
import numpy as np

# 生成x的坐标(0到10的100个等差数列)
x = np.linspace(0, 10, 100)

# 绘制不同种类和颜色的线
plt.plot(x, x + 0, '-g', label='实线 绿色')  # 实线 绿色
plt.plot(x, x + 1, '--c', label='虚线 浅蓝色')  # 虚线 浅蓝色
plt.plot(x, x + 2, '-.k', label='点划线 黑色')  # 点划线 黑色
plt.plot(x, x + 3, '-r', label='实线 红色')  # 实线 红色
plt.plot(x, x + 4, 'o', label='圆点 默认蓝色')  # 圆点 默认是蓝色
plt.plot(x, x + 5, 'x', label='叉号 默认蓝色')  # 叉号 默认是蓝色
plt.plot(x, x + 6, 'd', label='砖石 红色')  # 砖石 红色

# 添加图例,设置位置为右下角
plt.legend(loc='lower right', fancybox=True, framealpha=1, shadow=True, borderpad=1)

# 显示图表
plt.title("不同种类和颜色的线示例")
plt.xlabel("X 轴")
plt.ylabel("Y 轴")
plt.show()

在这里插入图片描述

三、总结

通过本篇文章的介绍,我们了解了Matplotlib的基本使用方法及其在数据可视化中的应用。无论是简单的线性图、散点图,还是复杂的组合图表,Matplotlib都能轻松胜任。随着Python在数据科学领域的广泛应用,掌握Matplotlib将帮助你更好地分析和展示数据。
如果你想深入了解更多内容,请您后续关注我,持续更新ing~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2044387.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

通过共享目录上传后门

本文来自无问社区,更多实战内容可前往查看http://www.wwlib.cn/index.php/artread/artid/13337.html 操作步骤 枚举目标主机开启的共享服务信息:10.0.0.6 smbclient -L //10.0.0.6 -U spotWARNING: The "syslog" option is deprecated Ente…

flink车联网项目前篇:数据开发(第66天)

系列文章目录 03_数据仓库开发 开发规范 1.1 数据库划分规范 1.2 表命名规范 1.3 表字段类型规范开发前准备 3.1 业务系统表 3.2 数据导入 04_维度主题相关表结构 1.1 dim_area - 城市字典表 1.2 dim_car_info - 车辆信息表 1.3 dim_car_vendor - 车队信息表 1.4 dim_date_wo…

虹科技术|优化始于数据:Baby-LIN设备如何高效存储总线数据?

记录汽车总线数据对于监控汽车电子控制单元(ECU)间的通信和诊断网络故障具有重要意义。通过记录测试时的总线数据,不仅可以监控产品是否按照预期运行,还能追踪特定错误或故障背后的原因,这对确保汽车产品质量和性能至关…

MySQL查询居然不区分大小写

MySQL查询居然不区分大小写 事故现场真实原因BINARY 关键字总结MySQL 为什么要这样设计呢?解决方案修改排序规则binary !!!!!懵逼了, MySQL 查询居然不区分大小写,第一次听到这么陌…

实验9 根据材料编程《汇编语言》- 王爽

1. 需求 编程:在屏幕中间分别显示绿色、绿底红色、白底蓝色的字符串 welcome to masm! 2. 分析 (1)材料中提到,一个在屏幕上显示的字符,具有前景(字符色)和背景(底色)…

[000-01-030].第7节:Zookeeper工作原理

1.Zookeeper工作原理: 1.1.Zookeeper的工作机制 1.Zookeeper从设计模式角度来理解:是一个基于观察者模式设计的分布式服务管理框架;2.Zookeeper负责存储和管理大家都关心的数据,然后接受观察者的注册,一旦这些数据的…

来了,秋天的第一个POC

立秋就这么水灵灵地过了 又到了“秋天的第一杯奶茶”刷屏的时刻 而我们要追求的是“秋天的第一个POC” 做好变强的准备了吗 Yak POC编写,这一篇就够了 文章中指代的POC仅指使用 Yaklang 编程语言编写的POC 在此篇文章中就详细描述 Yaklang 语法的学习了&#x…

【昱合昇天窗】消防排烟天窗设计使用需注意问题

消防排烟天窗在设计和使用过程中,需要避免出现以下三个问题,以免影响其排烟效果和安全性。1、只关注价格 很多人在选择消防排烟天窗时,只关心天窗的价格,不重视天窗型号、配置选择是否满足厂房需求。这样做的坏处在于安装的天窗可…

还在画恐怖片?局部重绘,艺术再创造 —— Stable diffusion inPainting功能详解与实战指南

前言 在AI绘画的世界里,我们常常面临这样的困境:一幅作品,除了手部姿势、面部表情其他都很完美;这时候,如果要重新生成整幅画,不仅效率低下,而且可能会破坏原本满意的部分。幸好,St…

JAVA毕业设计|(免费)ssm视康眼镜网店销售系统的包含文档代码讲解

收藏点赞不迷路 关注作者有好处 编号:ssm538 ssm视康眼镜网店销售系统的 开发语言:Java 数据库:MySQL 技术:SpringSpringMVCMyBatisVue 工具:IDEA/Ecilpse、Navicat、Maven 文末获取源码 1.系统展示 2.万字文档展示 …

为什么MySql使用B+树

mysql索引为什么选择B树? 在回答这个问题之前,得先了解一个概念,页的概念。页是InnoDB中数据管理的最小单位。当我们查询数据时,其是以页为单位,将磁盘中的数据加载到缓冲池中的。同理,更新数据也是以页为…

数据库实验一 创建数据库

一.实验目的 1.学会数据表的创建; 2.加深对表间关系的理解; 3.理解数据库中数据的简单查询方法和应用。 二. 实验内容 1.题目要求 给定一个实际问题,实际应用问题的模式设计中至少要包括3个基本表。应用问题是供应商给工程供…

被嫌弃的35岁程序员,竟找到了职业的新出路:PMP项目管理

35岁,本应是事业发展的高峰期。更多听到的却是35岁职场天花板,特别是IT从业者,35岁就好像是一道迈不过的坎:多年的工作经验,在35岁的生理年龄面前,一文不值。 IT从业者若想安然度过“35岁危机”&#xff0…

【RISC-V设计-14】- RISC-V处理器设计K0A之打印输出

【RISC-V设计-14】- RISC-V处理器设计K0A之打印输出 文章目录 【RISC-V设计-14】- RISC-V处理器设计K0A之打印输出1.简介2.验证用例3.软件代码4.链接脚本5.编译脚本6.仿真结果6.1 复位结束6.2 运行成功6.3 终端打印 7.总结 1.简介 本文将详细阐述如何利用 printf 来打印字符串…

做自媒体博主如何使用外网视频素材!

想成为视频博主却不知道外网视频怎么下载?看这里! 在这个信息爆炸的时代,做一名视频博主无疑是展现自我、分享创意的绝佳方式。但当我们想要获取更多灵感,从外网的精彩视频中学习时,却常常被下载的问题难住。 其实&…

【启明智显技术分享】工业级HMI芯片Model3A开发过程中问题记录笔记

一、Model3A芯片介绍 Model3A是启明智显针对工业、行业以及车载产品市场推出的一款高性能、低成本的工业级HMI(Human-Machine Interface,人机界面)芯片。该芯片主要应用于工业自动化、智能终端HMI、车载仪表盘、两轮车彩屏仪表、串口屏、智能…

无人机航拍与ArcGIS融合实战:从地表观测到空间数据可视化的全方位指南!无人机图像拼接数据处理与分析、可视化与制图

目录 第一章 无人机航拍基本流程、航线规划与飞行实践 第二章 无人机图像拼接软件的学习与操作实践 第三章 无人机图像拼接典型案例详解 第四章 无人机图像拼接数据在GIS中的处理与分析 第五章 无人机图像拼接数据在GIS中的可视化与制图 第六章 综合案例:无人机航拍植被动…

Docker 部署 XXL-JOB

Docker 部署 XXL-JOB 目录 引言环境准备创建 MySQL 用户并授予权限使用 Docker 部署 XXL-JOB配置 XXL-JOB验证部署总结 1. 引言 XXL-JOB 是一个开源的分布式任务调度平台,旨在简化定时任务的管理和调度操作。其强大的功能和灵活性,使其在互联网公司和…

SSH 隧道方式连接 MySQL 服务器

SSH 隧道方式连接 MySQL 服务器 1 安装 MySQL 客户端工具1.1 Navicat1.2 MySQL Workbench1.2.1 查看本机系统类型1.2.2 安装 Visual C 20191.2.3 安装 MySQL Workbench 2 SSH 隧道方式连接数据库2.1 Navicat2.1.1 SSH 连服务器2.1.2 本地连数据库 2.2 MySQL Workbench 本文介绍…

云动态摘要 2024-08-12

给您带来云厂商的最新动态,最新产品资讯和最新优惠更新。 全球加速 GA - 新增“巴西(圣保罗)”、“沙特(利雅得)”接入点 华为云 2024-08-12 全球加速服务新增开通“巴西(圣保罗)”、“沙特&a…