Matplotlib 初使用

news2024/11/17 13:38:16

五一假期时候,我在自己的电脑上安装了 matplotlib
安装步骤请转至:matplotlib 安装介绍

现在,我终于可以在自己电脑上学习 matolotlib 数学绘图库了,
说终于两个字,是完全是在安装过程中确实历经了折磨,根其原因是不懂,没接触过,而且我的学习方式是阅读,所学内容皆从书上来,有时候阅读的方式确实不如

开始学习新内容之前,先分享一下安装时候碰到的坎坷,
两种安装方式:

  1. 命令行安装

就是通过命令进行安装,不需要自己手动到官网去下载.whl文件,而且不用考虑python版本,通过特定命令,直接下载matplotlib,而且版本也是自适应的。
那为什么用这种方式安装失败了?
说是自适应版本,说是自动,不用手动下载,没错!!确实没错,但是这也太自动了,把所有版本都下载下来。。
。。。这,我肯定得终止了吧?!

  1. 手动安装

手动安装确实靠谱,而且最后我也是通过这种方式成功的。(只讨论安装时候遇到的趣事,安装步骤请移步上述链接)手动安装一定一定要注意版本,看自己的python版本,然后下载版本对应的 .whl !这样失败概率很小。

好吧!不啰嗦了。 下面开始学习新内容喽 !

文章目录

        • 绘制简单的折线图
          • 先绘制一个简单的折线图
          • 修改标签文字和线条粗细
          • 校正图形
          • 使用scatter() 绘制散点图并设置样式
          • 使用 scatter() 绘制一系列的点点
          • 自动计算数据
          • 删除数据点的轮廓
          • 自定义颜色
          • 使用颜色映射
          • 自动保存图表

绘制简单的折线图

我学习到的所有内容都是从书里来的!
我写的内容,只不过是一种搬运,把书里讲的,大差不差的弄到文章里,就自认为自己学过了,如果有忘记的,遇到问题了!自己知道把答案存在哪了,可以第一时间找到。

先绘制一个简单的折线图

使用平方数序列 1、4、9、16、25绘制图表。

import matplolib pyplot as plt

squares = [1,4,9,16,25]

plt.pylot(squares)
plt.show()

代码很简单,导入一下 matplolib 下的 pyplot,然后调用 pyplot 中的函数就可以了。
其实这个小需求,说白了就是画个图,然后图中的数用指定的,不能乱填。
.
那就创建一个列表,将需求中的数存放在列表里,然后调用pylot函数将列表中存储的数放到图上,就把图画出来了,最后就是调用显示的方法,把图显示出来。接着我们就可以运行程序了。

我们看一下运行效果:
在这里插入图片描述

哦对了!朋友们,我现在改用 pycharm编辑器了。
在这里插入图片描述
之前用 Geany在这里插入图片描述
是因为写的代码不多,这个刚好够用,没必要换,没必要接触功能更多的更简洁的 pycharm。

修改标签文字和线条粗细

有没有觉得上面示例的效果图标签文字太小,线条太细。
不过没关系,
matplotlib可以实现调整可视话的各个方法:

import matplotlib.pyplot as plt

squares = [1,4,9,16,25]

plt.plot(squares,linewidth =5)

#设置图表标题,并给坐标轴加上标题
#设置图表标题
plt.title("Square Numbers",fontsize = 24)
# 设置横坐标标题
plt.xlabel("Value",fontsize = 14)
#设置纵坐标标题
plt.ylabel("Square of Value",fontsize = 24)

#设置刻度标记的大小
plt.tick_params(axis='both',labelsize = 10) #我眼瞎,所以设置的10..
plt.tick_params()
plt.show()

看一下程序运行效果:
在这里插入图片描述
哇!看着好舒服 ~
在这里插入图片描述

集中注意力,我们继续学习!

校正图形

不知道你有没有发现折线图中的问题 ?4的平方是多少?

没错!你算的没有问题,那你看看咱们图上的是多少?。。先别方!我们来校正一下:

这个问题很简单处理,我们只需要在设置一组序列,然后也将其传递到 pyplot函数中,因为该函数会对输出值的生成方式作出假设,而传递进两组序列,它无法自动假设。也就不会出现问题了。

import matplotlib.pyplot as plt

input_values = [1,2,3,4,5]
squares = [1,4,9,16,25]

plt.plot(input_values,squares,linewidth =5)

#设置图表标题,并给坐标轴加上标题
#设置图表标题
plt.title("Square Numbers",fontsize = 24)
# 设置横坐标标题
plt.xlabel("Value",fontsize = 14)
#设置纵坐标标题
plt.ylabel("Square of Value",fontsize = 24)

#设置刻度标记的大小
plt.tick_params(axis='both',labelsize = 10)
plt.tick_params()
plt.show()

在看一下传递两组序列的输出效果:
在这里插入图片描述

无稽之谈

我也在思考一个问题,为什么传递两组序列,x和y坐标上的数标就会增加或者?难道坐标是我们传递设置的吗?
可是代码中没有写关于这个设置的语句啊~
哦!想明白了。
plot()函数到底可以接收多少个参数我确实无从知道,因为《python 编程从入门到实践》这本书确实真的是从入门到实践了。没有讲细节方面,尺度刚好是在会用,知道怎么用。先不考虑 plot() 能接收什么参数的问题,我们把焦点放在,我们传递了什么!
squares 这组序列将决定图上曲线表示的值。
而 input_values呢?你有没有发现 squares 中存储了几个元素?
.
是的,你也发现了吧。所以我是这么认为的,所以是无稽之谈…

使用scatter() 绘制散点图并设置样式

该函数可用于绘制曲线图上需要突出的值,其效果如图:
在这里插入图片描述
该效果通过调用 scatter() 函数的编码如下:

import matplotlib.pyplot as plt
plt.scatter(2,4)
plt.show()

scatter 其中传递的两个参数,就是需要突出显示的坐标。

接着,我们也给点状图加上标题,标签等:

import matplotlib.pyplot as plt

plt.scatter(2,4,s=200)
plt.title("Square Numbers",fontsize =24)
plt.xlabel("Value",fontsize =14)
plt.ylabel("Square of Value",fontsize =14)

plt.tick_params(axis='both',which='major',labelsize=14)
plt.show()

效果如图:
在这里插入图片描述

使用 scatter() 绘制一系列的点点

如果想绘制更多的点点,我们可以将scatter接收的两个参数组成为序列传递。
在这里插入图片描述

就像这样:

import matplotlib.pyplot as plt

x_values = [1,2,3,4,5]
y_values = [1,4,9,16,25]

plt.scatter(x_values,y_values,s =100)

plt.title("Square Numbers",fontsize =24)
plt.xlabel("Value",fontsize = 14)
plt.ylabel("Square of Value",fontsize = 14)

plt.tick_params(axis='both',which='major',labelsize =14)
plt.show()
自动计算数据

如果自己计算列表要包含的值,效率是非常低下的。如果需求中需要绘制的点非常多怎么办?1000个?

我们可以利用循环来帮助我们完成计算。
编码如下:

import matplotlib.pyplot as plt

x_values = list(range(1,1001))
y_values = [x**2 for x in x_values]

plt.scatter(x_values,y_values,s =10)

plt.title("Square Numbers",fontsize =24)
plt.xlabel("Value",fontsize = 14)
plt.ylabel("Square of Value",fontsize = 14)

plt.tick_params(axis='both',which='major',labelsize =12)
#设置每个坐标轴取值范围
plt.axis([0,1100,0,1100000])
plt.show()

程序执行效果如图:
在这里插入图片描述

删除数据点的轮廓

图上小点点的颜色默认为蓝色,轮廓默认为黑色。
如果数据较小时,我们能看到的数据效果还是很清晰的,可是如果数据量很多时,黑色的轮廓将会黏在一起。

所以我们对其轮廓进行删除:

plt.scatter(x_values,y_values,edgecolor='none',s=40)

来对比一下删除之后的效果:
在这里插入图片描述

自定义颜色

向 scatter 传递参数 c 可以进行点点颜色的设置:

plt.scatter(x_values,y_values,c = 'green',edgecolor='none',s=40)

在这里插入图片描述

或者也可以通过 RGB形式来定义颜色:

#RGB模式指定颜色需要设置元组
plt.scatter(x_values,y_values,c =(0,0,0.8),edgecolor='none',s=40)
使用颜色映射

颜色映射是一系列颜色,它们从起始颜色渐变到结束颜色。
在可视化中,颜色映射用于突出数据的规律。例如用较浅的颜色显示较小的值,用较深的颜色显示较大的值。

import matplotlib.pyplot as plt

x_values = list(range(1,1001))
y_values = [x**2 for x in x_values]

plt.scatter(x_values,y_values,c=y_values,cmap=plt.cm.Blues,edgecolor='none',s=40)

plt.title("Square Numbers",fontsize =24)
plt.xlabel("Value",fontsize = 14)
plt.ylabel("Square of Value",fontsize = 14)

plt.tick_params(axis='both',which='major',labelsize =12)
#设置每个坐标轴取值范围
plt.axis([0,1100,0,1100000])
plt.show()

效果如图:
在这里插入图片描述

自动保存图表

如果想让程序自动将图表保存到文件中,
可以对 plt.show() 的调用替换为 plt.savefig():

plt.savefig('squares_plt.png',bbox_inches='tight')

第一个参数指定以什么样的文件名保存图表。
第二个参数指定图表多余的空白区域裁剪掉。如果想在保存图表时忽略空白区域,可以不指定这个参数。

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

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

相关文章

基于AT89C51单片机的电子钟设计与仿真

点击链接获取Keil源码与Project Backups仿真图: https://download.csdn.net/download/qq_64505944/87759735?spm1001.2014.3001.5503 源码获取 主要内容: 设计一个电子钟,实现对时、分、秒的显示的控制,电路采用24小时计时方式。另一个功能是秒表功能…

mysql : name like “%name“; 索引一定失效吗?

场景如下: MySQL版本如下: 表结构如下:索引结构如下: 查询语句以及执行计划如下: 第一条查询语句: select name from em where name like ‘%b’; 可以发现使用了name 字段创建的索引 第二条查询语句&…

02-Java基础编程

Java基础编程 Java 基础语法Java 标识符变量变量的类型Java 基本数据类型基本数据类型转换 运算符常见运算符运算符的优先级 程序流程控制分支语句循环结构常用的循环结构循环的嵌套break 和 continue 关键字 数组一维数组多维数组的使用Arrays 工具类的使用数组中常见的异常 J…

AcWing——方格迷宫(有点不一样的迷宫问题)

4943. 方格迷宫 - AcWing题库 1、题目 给定一个 n 行 m 列的方格矩阵。 行从上到下依次编号为 1∼n,列从左到右依次编号为 1∼m。 第 i 行第 j 列的方格表示为 (i,j)。 矩阵中的方格要么是空地(用 . 表示),要么是陷阱&#xf…

前后端身份认证:session身份认证,JWT认证

文章目录 前后端身份认证1、概述2、不同开发模式下的身份认证3、关于HTTP协议的无状态性4、Cookie4.1 介绍4.2 cookie特点4.3 cookie分类4.4 Cookie在session身份认证中的作用4.5 Cookie不具有安全性 5、Session认证5.1 Session认证过程5.2 Session认证原理图5.3 Session认证的…

【Linux】多线程 --- 线程概念 控制 封装

从前种种,譬如昨日死。从后种种,往如今日生。 文章目录 一、线程概念1.重新理解用户级页表1.1 进程资源如何进行分配呢?(地址空间页表)1.2 虚拟地址如何转换到物理地址?(页目录页表项&#xff0…

11 KVM虚拟机配置-配置虚拟设备(存储)

11 KVM虚拟机配置-配置虚拟设备(存储) 文章目录 11 KVM虚拟机配置-配置虚拟设备(存储)11.1 存储设备概述11.2 存储设备元素介绍11.3 存储设备配置示例 11.1 存储设备概述 虚拟机XML配置文件使用devices元素配置虚拟设备,包括存储设备、网络设备、总线、鼠标等。 X…

【LeetCode】494. 目标和

494. 目标和 思路 首先,将这道题想成 0-1背包问题,我们最终要输出的结果是最多的方法数,因此 dp 数组需要记录具体的方法数。 状态定义 按照 0-1 背包问题的套路,我们将状态定义为 :dp[i][j] ,表示「前 …

YOLOv5测距+碰撞检测

YOLOv5测距碰撞检测 1. 相关配置2. 测距原理3. 标定和测距4. 碰撞检测4.1 相关代码4.2 主代码 5. 实验效果 相关链接 1. YOLOV5 单目测距(python) 2. YOLOV7 单目测距(python) 3. 具体实现效果已在Bilibili发布,点击…

string的介绍

string是c中表示字符串的字符串类&#xff0c;要使用需要包头文件&#xff1a;#include<string> 先了解一下string的一些信息 string看起来是一个类&#xff0c;但实际上是typedef的模板。 在cplusplus.com网站上&#xff0c;string的相关信息 模板的实例化结果有以下几个…

【unity小创意】相机的正反操作实现场景的二维跳跃

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;uni…

Spring的第十二阶段(01):Spring实现AOP的简单使用

1、使用Spring实现AOP简单切面编程 需要导入工程的jar包 Spring的核心包 spring-beans-4.0.0.RELEASE.jar spring-context-4.0.0.RELEASE.jar spring-core-4.0.0.RELEASE.jar spring-expression-4.0.0.RELEASE.jarSpring的测试包 spring-test-4.0.0.RELEASE.jarSpring日记相…

【网络安全】这套面试题,让你提前预判面试官的预判!

最近这个帖子的点赞和收藏变高起来了&#xff0c;许多小伙伴在问我安全大厂的面试题没有&#xff0c;我准备利用一些时间把这套面试宝典整理一下&#xff01; 今天有同学拿着他准备的面试问题清单给我看&#xff0c;看还有没有遗漏的&#xff0c;我看了下&#xff0c;觉得还是…

Spring-Bean管理-注解

组件注册 Component/Controller/Service/Repostory :注册自定义组件到容器中 加上约定的注解。 在Configuration注解的类中配置包扫描器 ComponentScan(vlaue "cn.shaoxiongdu") Configuration: 标注配置类 Scope &#xff1a; 配置是否为单实例 prototype: 多实…

JVM与GC

Java:跨平台的语言 write once, run anywhere JVM&#xff1a;跨语言的平台 Java虚拟机根本不关心运行在其内部的程序到底是使用何种编程语言编写的&#xff0c;它只关心“字节码”文件。 Java不是最强大的语言&#xff0c;但是JVM是最强大的虚拟机。 JVM的整体结构 这个架构…

Java基础学习(12)

Java基础学习 一、不可变集合二、Stream流2.1 Stream流数据添加2.2 Stream流的中间方法2.3 Stream终结方法 三、 方法引用3.1 方法引用的基本概念3.2 方法引用的分类3.2.1 引用静态方法 3.2.2 引用成员方法3.2.3 引用构造方法3.2.4 使用类名引用成员方法3.2.5 引用数组的构造方…

PyQt5 基础篇(一)-- 安装与环境配置

1 PyQt5 图形界面开发工具 Qt 库是跨平台的 C 库的集合&#xff0c;是最强大的 GUI 库之一&#xff0c;可以实现高级 API 来访问桌面和移动系统的各种服务。PyQt5 是一套 Python 绑定 Digia QT5 应用的框架。PyQt5 实现了一个 Python模块集&#xff0c;有 620 个类&#xff0c;…

MATLAB 点云非均匀体素下采样 (8)

MATLAB 点云非均匀体素下采样的不同参数效果测试 (8) 一、实现效果二、算法介绍三、函数说明3.1 函数3.2 参数四、实现代码(详细注释!)五、与固定步长采样法比较5.1 代码5.2 效果一、实现效果 不同参数调整下的非均匀体素下采样结果如下图所示,后续代码复制黏贴即可: 可…

入职6个月,被裁了...

我跟大多数人不大一样&#xff0c;从来没有说要等公司主动裁员拿补偿&#xff0c;我看自己没有什么价值或者是公司不行了&#xff0c;我都会主动离职。但是这次也太突然了。公司很大已上市&#xff0c;并不是不行了&#xff0c;总结原因就是&#xff0c;一是领导无能&#xff0…

【STM32CubeMX】F103ADC获取

前言 本文记录了我学习STM32CubeMX的过程&#xff0c;方便以后回忆。我们使用的开发板是基于STM32F103C6T6的。本章记录了基本的ADC值的获取流程&#xff0c;只单纯地记录了ADC端口的配置&#xff0c;没有加配像串口之类的调试&#xff0c;以简化流程。下面的流程是使用串口调试…