【数据分析之道-Matplotlib(一)】Matplotlib Pyplot

news2024/11/22 19:50:12

在这里插入图片描述

系列文章目录

作者:i阿极

作者简介:Python领域新星作者、多项比赛获奖者:博主个人首页

😊😊😊如果觉得文章不错或能帮助到你学习,可以点赞👍收藏📁评论📒+关注哦!👍👍👍

📜📜📜如果有小伙伴需要数据集和学习交流,文章下方有交流学习区!一起学习进步!💪


文章目录

  • 系列文章目录
  • 1、Matplotlib介绍
  • 2、实验环境
  • 3、Matplotlib Pyplot操作
    • 3.1导入模块
    • 3.2绘制图
    • 3.3添加标题和标签并解决乱码问题
    • 3.4绘制多个子图
    • 3.5保存图表


1、Matplotlib介绍

Matplotlib是一个用于绘制数据可视化图形的Python库,支持绘制各种静态,动态,交互式的图表。它是数据科学和机器学习领域最流行的可视化库之一,因其简单易用和高度可定制性而备受欢迎。
在这里插入图片描述

Matplotlib可以绘制的图表类型包括折线图,散点图,直方图,饼图,等高线图,3D图等等。它还提供了丰富的绘图功能,可以添加注释、图例、文本、网格线等元素,支持自定义颜色、字体、样式等属性,同时也可以与其他Python库和工具,如NumPy、Pandas、Seaborn等进行结合使用。

Matplotlib最初由John D. Hunter在2003年创建,是一个开源项目,目前由社区共同维护和开发。它已被广泛应用于科学研究、数据分析、工程设计、教育教学等领域。

2、实验环境

Python 3.9

Anaconda

Jupyter Notebook

3、Matplotlib Pyplot操作

Matplotlib是Python中最流行的绘图库之一,可以用于创建各种类型的静态和动态图表。Matplotlib库由多个子库组成,其中pyplot子库是最常用的子库之一,它提供了类似于MATLAB的绘图界面,使得使用Matplotlib进行数据可视化变得更加简单。

3.1导入模块

在使用Pyplot之前,我们需要导入matplotlib库和pyplot模块:

import matplotlib.pyplot as plt

通常习惯将pyplot模块重命名为plt,以便更简洁地调用。

3.2绘制图

绘制图是Pyplot的一个常见功能。以下是绘制图常见函数:

  • plot():用于绘制线图和散点图
  • scatter():用于绘制散点图
  • bar():用于绘制垂直条形图和水平条形图
  • hist():用于绘制直方图
  • pie():用于绘制饼图
  • imshow():用于绘制图像
  • subplots():用于创建子图

绘制折线图,可以通过传递两个参数——x轴和y轴数据来绘制一个简单的折线图:

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

plt.plot(x, y)
plt.show()

在这里插入图片描述

3.3添加标题和标签并解决乱码问题

Pyplot还支持在图表中添加标题和标签,以提高可读性和易用性。

例如:

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

在这里插入图片描述

发现添加标题和标签的时候,图表出现了乱码。对于这种情况,可以使用以下两种方式解决:
1、更改Matplotlib默认字体
可以使用matplotlib.rcParams来更改Matplotlib的默认字体。

plt.plot(x, y)
matplotlib.rcParams['font.family'] = 'SimHei'  # 将字体设置为中文黑体
plt.title('折线图示例')
plt.xlabel('X轴')
plt.ylabel('Y轴')
plt.show()

在这里插入图片描述

2、指定字体
另一种方法是在绘图时直接指定字体。

import matplotlib.pyplot as plt
import matplotlib.font_manager as fm

my_font = fm.FontProperties(fname='C:/Windows/Fonts/SimHei.ttf')  # 加载中文字体
plt.plot([1, 2, 3, 4])
plt.title('示例', fontproperties=my_font)
plt.show()

3.4绘制多个子图

使用Pyplot,我们可以将多个子图组合在一起,形成一个复杂的图表。
我们可以通过plt.subplots()函数来创建一个包含多个子图的图表:

fig, axs = plt.subplots(2, 2)

axs[0, 0].plot(x, y)
axs[0, 0].set_title('子图1')
axs[0, 1].scatter(x, y)
axs[0, 1].set_title('子图2')
axs[1, 0].bar(x, y)
axs[1, 0].set_title('子图3')
axs[1, 1].pie(y)
axs[1, 1].set_title('子图4')

plt.show()

在这里插入图片描述

我们使用plt.subplots()函数创建了一个2x2的子图网格,然后在每个子图上绘制了不同类型的图表,如折线图、散点图、柱状图和饼图。我们可以使用axs变量来引用每个子图,并使用set_title()函数来添加标题。

3.5保存图表

使用Matplotlib Pyplot绘制完图表后,我们可以使用plt.savefig()函数来保存图表为文件。该函数的参数可以指定保存的文件名和格式。

plt.plot(x, y)
plt.title('折线图示例')
plt.xlabel('X轴')
plt.ylabel('Y轴')
plt.savefig('C:\\Users\\XWJ\\Desktop\\daima\\line_chart.png')

在这里插入图片描述

我们将折线图保存为名为line_chart.png的PNG文件。在调用plt.savefig()函数时,必须在调用plt.show()函数之前调用,否则图表将不会被保存。

默认情况下,plt.savefig()函数将保存整个图表,包括边框和标签。如果想要仅保存绘制的图表内容,可以在调用plt.savefig()函数之前调用plt.tight_layout()函数,它将自动调整子图间的间距和位置,使其最大化图表的可视面积。

plt.plot(x, y)
plt.title('折线图示例')
plt.xlabel('X轴')
plt.ylabel('Y轴')
plt.tight_layout()
plt.savefig('C:\\Users\\XWJ\\Desktop\\daima\\line_chart.png')

📢文章下方有交流学习区!一起学习进步!💪💪💪
📢首发CSDN博客,创作不易,如果觉得文章不错,可以点赞👍收藏📁评论📒
📢你的支持和鼓励是我创作的动力❗❗❗

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

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

相关文章

Jetson nano之ROS入门- -ROS集成开发搭建与ROS通信学习笔记

文章目录 一、ROS集成开发环境搭建二、ROS通信机制和命令1. 话题通信2. 服务通信3. 参数服务4. ROS常用命令 三、Python实现ROS通信- - 控制和读取小乌龟状态1. 配置package.xml文件2. 配置CMakeLists.txt文件3. 编写Python代码4. 配置launch文件 总结 一、ROS集成开发环境搭建…

反射、枚举

反射的定义:Java的反射机制是在运行状态中,都能对任意的类拿到这个类的所有属性,从而对其进行相应的修改;用途:在日常第三方应用开发中,可以通过反射机制来获取某个类的私有成员变量或是方法;主…

研究生,但是一直摆烂——想办法解决

原因剖析 孤独因为没有朋友, 之前自己思维误区,总觉得好好学习好好锻炼变得优秀就会有朋友,其实不是这个样子的,即使自己一直内卷,但还是很孤独。 现在重新反思自己。 没有朋友因为: 1 外貌 2 聊天的情商…

Which programming language do you choose

NO.1:JavaScript JavaScript,简称JS语言,是一种具有函数优先的轻量级,解释型或即时编译型的高级编程语言。虽然它是作为开发Web页面的脚本语言而出名的,但是它也被用到了很多非浏览器环境中,JavaScript 基…

老王的自动驾驶决策和规划第一章

文章目录 自动驾驶决策规划算法序章第一章(1) 细说五次多项式(2) 凸优化与非凸优化(3) 直角坐标与自然坐标转换(上, 下) 自动驾驶决策规划算法 序章 课程链接:序章 第一章 (1) 细说五次多项…

关于SpringBoot整合Websocket实现简易对话聊天窗

前言 官网链接:Websocket Websocket 是什么?它可以将两个独立的浏览器窗口作为通信的两端。 这种形式的通信与传统的 HTTP、TCP 所不同。传统的 HTTP 请求—响应协议是无法实现实时通信的,也就是说,只能由客户端向服务端发送请求…

前端Web开发,HTML,css,JavaScript

web浏览器响应流程,及技术不同的浏览器,内核不同,对于相同的前端代码解析的效果会存在差异web标准,三个组成部分 HTML:负责网页的结构(页面元素和内容)CSS:负责页面的表现&#xff0…

VC调试方法大全

欢迎关注博主 Mindtechnist 或加入【Linux C/C/Python社区】一起学习和分享Linux、C、C、Python、Matlab,机器人运动控制、多机器人协作,智能优化算法,滤波估计、多传感器信息融合,机器学习,人工智能等相关领域的知识和…

代码随想录算法训练营第四十八天| 198.打家劫舍、213.打家劫舍II、337.打家劫舍III

文章目录 198.打家劫舍213.打家劫舍II337.打家劫舍III 198.打家劫舍 题目链接:代码随想录 解题思路: 1.dp[i]:考虑下标i(包括i)以内的房屋,最多可以偷窃的金额为dp[i] 只是考虑,不一定偷 2.递推…

【STM32CubeMX】F103外部中断

前言 本文记录下我学习STM32CubeMX时的流程,方便以后回忆。系统板是基于STM32F103C6T6。本章记录外部中断。 步骤 该实验步骤以,配置PA1为外部中断下降沿触发事件,在触发事件后点亮板载PC13LED灯 时钟配置和生成文件配置之类的,其…

3.6 cache存储器

学习步骤: 我会采取以下几个步骤来学习Cache存储器: 确定学习目标:Cache存储器作为一种高速缓存存储器,通常用于提高计算机系统的运行效率。因此,我需要明确学习Cache存储器的目的,包括了解其原理、结构和…

No.054<软考>《(高项)备考大全》【冲刺8】《软考之 119个工具 (6)》

《软考之 119个工具 (6)》 99.应急应对策略:100.风险在评估:101.风险审计:102.偏差和趋势分析:103.技术绩效测量:104.自制或外购分析:105.市场调研:106.投标人会议:107.建议书评价技术:108.独立核算:109.广告:110.采购谈判:111.合同变更控制系统:112.采购…

定位图像坐标系和角度误区

坐标系和角度的常见误区 在学习halcon的时候.常常看文档的时候,会有一些地方比较疑感有些常用的地方有细微的差距,一不留意。就会导致计算的数据出错 常见的误区就在坐标系和角度 halcon的帮助情况 存在Px,Py 大家不要被搞混乱 Px -> Row Py-> Column 很多人定位项…

C语言——字符串及字符函数的介绍

C语言——字符串及字符函数的介绍 一、字符函数1.strlen1.1strlen的使用1.2strlen的三种模拟实现1.2.1计数器实现strlen函数1.2.2递归方法实现strlen函数1.2.3指针方法实现strlen函数 1.3 注意事项 2.strcpy2.1strcpy使用2.2strcpy的模拟实现2.3strcpy的注意事项 3.strcat3.1st…

【小样本分割 2022 ECCV】SSP

文章目录 【小样本分割 2022 ECCV】SSP摘要1. 介绍2. 相关工作3. 自支持小样本语义分割3.1 动机3.2 自支持原型-SSM3.3 自适应自支持背景原型-ASBP3.4 自支持匹配-SSL 3. 代码 【小样本分割 2022 ECCV】SSP 论文题目:Self-Support Few-Shot Semantic Segmentation 中…

SpringCloud 微服务系列——【Gateway、Config组件使用】

✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…

第二十三章 材质

3D模型主要是通过材质(Material)和贴图(Texture)来表现其精美的外表,说白了就是一张“画皮”而已。我们之前的DirectX课程中介绍过材质,它实际就是对光的反射率,这样简单的设置并不能展现3D模型…

Linux线程 概念、特点、线程间资源共享情况

1. 线程概念 线程是轻量级的进程;Linux中,线程本质上仍是进程。 进程是OS分配资源的最小单位,线程是OS调度的最小单位。 NPTL 当前Linux线程库为redHat开发的NPTL,查看本地线程库版本: getconf GNU_LIBPTHREAD_VE…

【C++】三元操作符、创建并初始化C++对象、C++new关键字

C的三元操作符 if的语法糖 例1 #include <iostream> #include <string>static int s_Level 1; static int s_Speed 2;int main() {if (s_Level > 5){s_Speed 10;}else{s_Speed 5;}std::cin.get(); }用三元操作符&#xff1a; s_Speed s_Level > 5 ?…

基础篇-并发篇

**63.线程状态 添加主线程和子线程 ** 65.线程状态 核心线程和任务队列都是有上限的&#xff0c;所以都满了话就开始使用救急线程; 救急线程也是有上限的&#xff0c;如果再来新的线程的话就需要拒绝策越; 注意&#xff1a;这里不需要等待5000ms&#xff0c;几乎是同时打印 注…