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

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 pltx = [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 pltx = [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 pltx = [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 pltmax_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 npx = 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 npx = 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 npnp.random.seed(0)
x = np.random.rand(100)
y = np.random.rand(100)
colors = np.random.rand(100)
size = np.random.rand(100) * 1000plt.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.rhkb.cn/news/405707.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python自准直仪双筒望远镜光学ABCD矩阵行为算法

🎯要点 🎯平面;曲面;圆柱面;非球面光,双凸透镜;90 度棱镜;分束立方体,双透镜棱;镜分光镜光线;横置隔膜;全内反射;多个分束…

作业08.21

服务器&#xff1a; #include <myhead.h>#define SER_PORT 6666 #define SER_IP "127.0.0.1"int find_client(int *client_arr, int len, int client) {for(int i0; i<len; i){if(client_arr[i] client){return i;}}return -1; }void remove_client(int *…

python爬虫--pyquery解析库整理

前言 欢迎来到我的博客 个人主页:北岭敲键盘的荒漠猫-CSDN博客 本文整理python的爬虫解析库pyquery的语法 简洁快速的整理&#xff0c;建议有前端基础的人看 pyquery解析原理 pyquery的原理就是拿到网站的前端源码后&#xff0c;我们根据我们需求信息所在的标签进行筛选。 选…

漏洞挖掘 | 记一次edusrc--轻松拿下中危信息泄露

1.前言 也是一次漏洞挖掘的思路分享 上次我们讲过了关于小程序方面的一些小思路&#xff0c;即关于抓包更改id号造成的一个信息泄露&#xff0c;但是在小程序上的信息泄露很难涉及到公民三要素这是一个痛点&#xff0c;今天就来分享一下一次edu挖掘时挖到的一个涉及公民三要素…

【云备份】项目总结

文章目录 项目总结项目总结项目扩展:常见问题: 项目总结 项目总结 搭建云备份服务器与客户端&#xff0c;客户端程序运行在客户机上自动将指定目录下的文件备份到服务器&#xff0c;并且能够支持浏览器查看与下载&#xff0c;其中下载支持断点续传功能&#xff0c;并且服务器端…

kubernetes的pod基础

kubernetes的pod基础 pod概念 pod&#xff08;豆荚&#xff09;&#xff0c;是k8s的最小管理单元。是一个或多个容器的组合&#xff0c;这些容器共享存储&#xff0c;网络和命名空间&#xff0c;以及运行规范&#xff0c;pod内的容器统一的进行安排和调度。pod是一组具有共享命…

【TCP/IP】自定义应用层协议,常见端口号

互联网中&#xff0c;主流的是 TCP/IP 五层协议 5G/4G 上网&#xff0c;是有自己的协议栈&#xff0c;要比 TCP/IP 更复杂&#xff08;能够把 TCP/IP 的一部分内容给包含进去了&#xff09; 应用层 可以代表我们所编写的应用程序&#xff0c;只要应用程序里面用到了网络通信…

进程间的通信3——IPC对象通信->共享内存、网络通信

一、共享内存 1、原理 直接对实际物理内存进行操作&#xff0c;不用先拷贝到用户空间再到内核空间&#xff08;物理内存&#xff09;。 2、特点 &#xff08;1&#xff09;共享内存是一块内核预留的空间&#xff1b; &#xff08;2&#xff09;最高效的通信方式。 3、操作 产…

springboot+Quartz通过数据库控制定时任务执行与时间

前言 在我们的springboot项目中&#xff0c;有很多种实现定时任务的方式 有用最简单的 Scheduled 实现定时任务,即&#xff1a; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component;Component EnableScheduling p…

【RTT-Studio】详细使用教程十三:UART的DMA 接收及轮询发送

文章目录 一、简介二、RTT配置三、使用信号量接收四、使用消息队列接收五、测试验证 一、简介 串口是指数据一位一位地顺序传送&#xff0c;其特点是通讯线路简单&#xff0c;只要一对传输线就可以实现双向通信&#xff08;可以直接利用电话线作为传输线&#xff09;&#xff0…

我的创作纪念日【2048】

机缘 2048&#xff0c;是计算机二进制世界里很奇妙的数字&#xff0c;在CSDN上创作的第六年&#xff0c;记录从事本行业的知识学习与总结&#xff0c;好记性不如烂笔头&#xff0c;或许写的东西不如大佬的文章&#xff0c;那么有深度&#xff0c;但自己也是在坚持&#xff0c;…

自动微分autograd实践要点

目录 定义Value手动定义每个 operator 的 _backward() 函数构建反向传播计算链 本文主要参考 反向传播和神经网络训练 大神Andrej Karpathy 的“神经网络从Zero到Hero 系列”之一&#xff0c;提炼一些精要&#xff0c;将反向传播的细节和要点展现出来 定义Value 第一步首先要…

传知代码-自动化细胞核分割与特征分析(论文复现)

代码以及视频讲解 本文所涉及所有资源均在传知代码平台可获取 引言 细胞核分割和分类在医学研究和临床诊断中具有重要意义。精准的细胞核分割能够帮助医生更好地识别和分析细胞核的形态学特征&#xff0c;从而辅助疾病诊断、癌症检测以及药物研发。HoverNet是一种基于深度学…

【GitLab】使用 Docker engine安装 GitLab 2: gitlab-ce:17.3.0-ce.0 拉取

ce版本必须配置代理。 极狐版本可以直接pull 社区版GitLab不支持Alibaba Cloud Linux 3,本操作以Ubuntu/Debian系统为例进行说明,其他操作系统安装说明,请参见安装社区版GitLab。 docker 环境重启 sudo systemctl daemon-reload sudo systemctl restart docker脚本安装 安裝…

苹果手机微信聊天记录删除了怎么恢复?

在日常使用手机的过程中&#xff0c;我们经常会遇到误删微信聊天记录的情况&#xff0c;尤其是对于那些重要的对话记录&#xff0c;一旦丢失可能会带来不小的困扰。今天&#xff0c;我们就来探讨一下如何在苹果手机上恢复被删除的微信聊天记录。 一、利用第三方数据恢复工具 对…

拓客工具,助你多维度筛选客源!

随着大数据与人工智能技术的飞速发展&#xff0c;企业拓客的方式也迎来了前所未有的变革。在这里将分享如何利用拓客工具&#xff0c;在任意行业中精实现高效拓客。 一、高级搜索&#xff1a;最新企业&#xff01; 传统的客户开发方式往往依赖于广撒网式的营销手段&#xff0c;…

Qt实现tcp协议

void Widget::readyRead_slot() {//读取服务器发来的数据QByteArray msg socket->readAll();QString str QString::fromLocal8Bit(msg);QStringList list str.split(:);if(list.at(0) userName){QString str2;for (int i 1; i < list.count(); i) {str2 list.at(i);…

作业8/21

client cpp #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget), socket(new QTcpSocket(this)) {ui->setupUi(this); // 设置 UI 界面// 控件初始状态设置为禁用&#xff0c;防止未连接…

Linux timedatectl 命令

timedatectl 是 Linux 系统中用于查询和更改系统日期、时间和时区的工具&#xff0c;它特别适用于那些使用 systemd 作为系统和服务管理器的系统。语法格式为“timedatectl [参数]”。 发现电脑时间跟实际时间不符&#xff1f;如果只差几分钟的话&#xff0c;我们可以直接调整。…

tekton通过ceph挂载node_modules的时候报错failed to execute command: copying dir: symlink

分析&#xff1a; 如果ceph的mountPath和workingDir路径一致的话&#xff0c;就会报错。 解决&#xff1a;node_modules挂载到/workspace下&#xff0c;workingDir的代码mv到/workspace下进行构建。