Matplotlib用法使用、Matplotlib绘图作图画图

news2024/11/27 2:21:18

一、Matplotlib

Matplotlib:专门用于开发2D或3D图表,以渐进、交互式方式实现数据可视化

可视化是在整个数据挖掘的关键辅助工具,可以清晰的理解数据,从而调整我们的分析方法

  • 能将数据进行可视化,更直观的呈现
  • 使数据更加客观、更具说服力

二、图形绘制函数说明

安装命令
pip:pip install matplotlib
conda:conda install matplotlib
  • 导包:matplotlib.pytplot包含了一系列类似于matlab的画图函数
  • 创建画布:plt.figure(figsize=(),dpi=),返回fig对象
    • figsize:指定图的长宽
    • dpi:图像的清晰度
  • 绘制折线图:plt.plot(x, y)
  • 自定义刻度
    • x轴:plt.xticks(x, **kwargs),x为要显示的刻度值
    • y轴:plt.yticks(y, **kwargs)
  • 添加网格:plt.grid(True, linestyle='--', alpha=0.5),可更清楚观察图像对应值,alpha为网格粗细,范围0-1
  • 描述信息
    • x轴:plt.xlabel("x轴信息")
    • y轴:plt.ylabel("y轴信息")
    • 标题:plt.title("图像标题",fontsize='20'),fontsize为字体大小
  • 显示图例:plt.legend(loc="best"),注:须在plt.plot()中设置一个label,若不设置,没法显示
  • 多个坐标系显示
    • plt.subplots(nrows=, ncols=)
  • 保存:plt.savefig("路径") ,将图像保存到指定路径
  • 显示图像:plt.show(),plt.show()会释放figure资源,如在显示图像之后保存图片将只能保存空图片

简单演示如下

import matplotlib.pyplot as plt
plt.figure(figsize=(5, 3), dpi=100)   # 创建画布
plt.plot([1, 2, 3, 4, 5, 6 ,7], [16,18,17,13,11,11,13])   # 绘制折线图
plt.show()   # 显示图像

三、图像添加辅助功能信息

import matplotlib.pyplot as plt
import random
# 中文显示问题
from pylab import mpl
mpl.rcParams["font.sans-serif"] = ["SimHei"]   # 设置显示中文字体
mpl.rcParams["axes.unicode_minus"] = False   # 设置正常显示符号

# 画出温度变化图
# 数据准备
x = range(0, 60)   # 随机生成[0, 50)范围内步长为1的整数列表
y = [random.uniform(13, 20) for i in x]   # random.uniform():随机生成13-20范围内的浮点数

plt.figure(figsize=(15, 5), dpi=80)   # 创建画布
plt.plot(x, y)   # 绘制折线图

x_ticks_label = ["20时{}分".format(i) for i in x]   # 构建x轴刻度标签
# y_ticks = range(40)   # 构建y轴刻度

# 修改x,y轴坐标的刻度显示
plt.xticks(x[::5], x_ticks_label[::5])
# plt.yticks(y_ticks[::1])

plt.grid(True, linestyle='--', alpha=0.5)   # 添加网格

# 描述信息
plt.xlabel("时间")
plt.ylabel("温度")
plt.title("20:00-21:00间温度变化图", fontsize=20)

plt.savefig("./zhangshu.jpg")  # 保存至指定位置
plt.show()  # 显示图像

输出如下

指定文件夹内新增图像文件

四、一个坐标系绘制多个图像

只需多次使用plot,其中color及linestyle可取值如下

颜色字符风格字符
r 红色- 实线
g 绿色- - 虚线
b 蓝色-. 点划线
w 白色: 点虚线
c 青色' ' 留空、空格
m 洋红
y 黄色
k 黑色

显示图例plt.legend(loc='best')或 plt.legend(loc=0),另需在plot中设置label,loc可取值如下

位置字符位置代码
'best'0
'upper right'1
'upper left'2
'lower left'3
'lower right'4
'right'5
'center left'6
'center right'7
'lower center'8
'upper center'9
'center'10

举例如下

import matplotlib.pyplot as plt
import random

from pylab import mpl
mpl.rcParams["font.sans-serif"] = ["SimHei"]   # 设置显示中文字体
mpl.rcParams["axes.unicode_minus"] = False   # 设置正常显示符号

# 画出温度变化图
# 数据准备
x = range(0, 60)   # 随机生成[0, 50)范围内步长为1的整数列表
y = [random.uniform(13, 20) for i in x]   # random.uniform():随机生成13-20范围内的浮点数
yy = [random.uniform(5, 17) for i in x]   # random.uniform():随机生成13-20范围内的浮点数

plt.figure(figsize=(15, 5), dpi=80)   # 创建画布
plt.plot(x, y, color='y', linestyle='-.',label='赣州')   # 绘制折线图,点划线
plt.plot(x, yy, color='r', linestyle='--', label='樟树')   # 多次plot绘制多个折线图,虚线

x_ticks_label = ["20时{}分".format(i) for i in x]   # 构建x轴刻度标签
# y_ticks = range(40)   # 构建y轴刻度

# 修改x,y轴坐标的刻度显示
plt.xticks(x[::5], x_ticks_label[::5])
# plt.yticks(y_ticks[::1])

plt.grid(True, linestyle='-', alpha=0.9)   # 添加网格
plt.legend(loc=0)   # 显示图例

# 描述信息
plt.xlabel("时间")
plt.ylabel("温度")
plt.title("20:00-21:00间温度变化图", fontsize=18)

plt.savefig("./temperature.jpg")  # 保存至指定位置
plt.show()  # 显示图像

结果如下

五、多个坐标系绘制多个图像

通过subplots函数实现

  • matplotlib.pyplot.subplots(nrows=1, ncols=1, **fig_kw):创建一个带有多个axes(坐标系/绘图区)的图 
    • nrows,ncols:设置有几行几列坐标系
    • 返回图对象fig及相应数量的坐标系axes
    • plt.函数名()相当于面向过程的画图方法,axes.set_方法名()相当于面向对象的画图方法

代码演示如下

# 数据准备
x = range(24)
y_zhshu = [random.uniform(5, 15) for i in x]
y_ganzh = [random.uniform(10, 20) for i in x]
fig, axes = plt.subplots(nrows=1, ncols=2, figsize=(15, 5), dpi=100)   # 创建画布

# 绘制图像
axes[0].plot(x, y_zhshu, color="g", linestyle=":",label="樟树")
axes[1].plot(x, y_ganzh, color="r", linestyle="-.", label="赣州")

# 构造x,y轴刻度标签
x_ticks_label = ["{}:00".format(i) for i in x]
# y_ticks = range(40)

# 刻度显示
axes[0].set_xticks(x[::2])
# axes[0].set_yticks(y_ticks[::5])
axes[0].set_xticklabels(x_ticks_label[::2])
axes[1].set_xticks(x[::2])
# axes[1].set_yticks(y_ticks[::5])
axes[1].set_xticklabels(x_ticks_label[::2])

# 添加网格显示
axes[0].grid(True, linestyle="--", alpha=0.2)
axes[1].grid(True, linestyle="-.", alpha=0.5)

# 添加描述信息
axes[0].set_xlabel("时间")
axes[0].set_ylabel("温度")
axes[0].set_title("24小时内樟树市温度变化图", fontsize=20)
axes[1].set_xlabel("时间")
axes[1].set_ylabel("温度")
axes[1].set_title("24小时内赣州市温度变化图", fontsize=14)

# 添加图例
axes[0].legend(loc=0)
axes[1].legend(loc=0)
plt.savefig("./subplots.jpg")   # 图像保存
plt.show()   # 图像显示

输出结果

六、绘制数学函数图像

import numpy as np
x = np.linspace(-10, 10, 1000)
y = np.sin(x)
plt.figure(figsize=(9, 3), dpi=100)
plt.plot(x, y, color='y', linestyle='-.')
plt.grid(linestyle='--')
plt.show()

 结果如下

matplotlib官网:https://matplotlib.org/stable/ 

学习导航:http://xqnav.top/

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

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

相关文章

希望所有计算机学生能看到这篇c语言教程

大部分程序员走入编程世界第一个学习的语言就是C语言。 作为一门古老的编程语言,c语言拥有48年的发展历程。 为什么要学习 C语言? C语言是学习计算机程序设计语言的入门语言。C语言是一门偏底层的语言,学好它,可以让你更好的了…

E - Fire! (双向bfs)

UVA-11624-Fire! 题意:在n*m的网格内,有一个人和n堆火,人可以往上下左右四个方向走,同时所有的火也会想四周蔓延,问你人可不可以在火包围他之前逃离这个n*m的范围。 思路:问人可不可以逃离这个范围&#xf…

m基于VDLL的矢量型GPS信号跟踪算法matlab仿真

目录 1.算法概述 2.仿真效果预览 3.MATLAB部分代码预览 4.完整MATLAB程序 1.算法概述 载波跟踪环是传统独立式GPS接收机最脆弱的环节,针对弱信号环境下其比伪码跟踪环路更容易失锁的问题,给出一种基于矢量频率锁定环(vector-frequency lo…

集成学习-Boosting

Boosting 采用串行的方式训练,各基分类器之间有依赖。根据当前模型损失函数的负梯度训练新的弱分类器,将训练好的弱分类器以累加的形式结合到现有模型中。 过程中会不断减小损失函数,使模型偏差不断降低,方差不会降低。因为各弱分…

《CTFshow - Web入门》02. Web 11~20

Web 11~20web11知识点题解web12知识点题解web13知识点题解web14知识点题解web15知识点题解web16知识点题解web17知识点题解web18知识点题解web19知识点题解web20知识点题解web11 知识点 dns检查查询:http://dbcha.com/,输入域名,获取flag。…

MySQL数据库期末考试试题及参考答案(07)

版权声明 本文原创作者:谷哥的小弟作者博客地址:http://blog.csdn.net/lfdfhl 一、 填空题 如果不想提交当前事务,可以使用_____语句回滚事务。每个事务都是完整不可分割的最小单元是事务的_____性。MySQL中,显式开启事务的语句…

屏幕视频捕获组件-ByteScout Screen Capturing SDK

使用 ByteScout Screen Capturing SDK,您可以轻松地将屏幕视频捕获功能添加到您的应用程序中。输出带有音频、鼠标移动和点击的高质量桌面屏幕视频录制。 主要优势 只需几行代码即可在您的应用中启用屏幕视频捕获和屏幕录制功能;无需互联网连接即可离线…

Django day1

在windows下可以直接的创建django项目 但是需要把自动生成的templates和setting里面的DIRS里面字段删除(templates自动生成的可以删不删都行,我是看视频那个老师删了,但是setting DIRS里面的字段需要删,至于具体为啥我已经忘了&am…

TiDB数据库概述——PD

PD PD的架构与功能TSO的分配PD的调度原理label的作用 PD的架构 PD的个数一般是奇数个的。 PD的主要功能: 整个集群TiKV的元数据存储分配全局ID和事务ID生成全局时间戳TSO收集群信息进行调度提供label,支持高可用提供TiDB Dashboard 路由功能 用key…

vue3使用富文本编辑器wangEditor-v5(未使用composition api写法)

效果 安装 安装核心库和其vue组件库 yarn add wangeditor/editor yarn add wangeditor/editor-for-vuenext使用v-model封装富文本组件editor.vue <template><div class"editor-box"><Toolbar class"toolbar" :editor"editor" …

Flink是什么?场景?处理流的发展演变?

Flink是什么&#xff1f;Flink是什么&#xff1f;为什么选择Flink&#xff1f;什么场景需要处理流数据?处理流的发展演变Flink是什么&#xff1f; Apache Flink 是一个在无界和有界数据流上进行状态计算的框架和分布式处理引擎。Flink 能在所有常见集群环境中运行&#xff0c…

线性表的链式存储的基本

链表是线性表的链式存储方式&#xff0c;逻辑上相邻的数据在计算机内的存储位置不一定相邻&#xff0c;因此&#xff0c;我们需要为每一个元素设置有一个指针来指向与它逻辑相邻的元素。 为此&#xff0c;我们为每个元素设置一个结点&#xff0c;每个结点由数据域和指针域组成…

【3D目标检测】Monocular 3D Object Detection with Pseudo-LiDAR Point Cloud

目录概述整体流程伪点云vs点云2D-3D边界框的一致性约束概述 本文的输入数据仅仅是单目图像&#xff0c;在方法上是融合了伪点云&#xff08;Pseudo-LiDAR&#xff09;的深度信息表示方法与Frustum PointNets的检测方法。 乍一看文章和伪点云原论文Pseudo-LiDAR from Visual De…

Deep-SVDD 方法

两种情况 1. 数据集有正负样本&#xff0c;但正样本的量远远大于负样本为异常检测&#xff0c;即大量的正样本为正常&#xff0c;少数的负样本是异常的。 2. 数据集只有正样本&#xff0c;称为单分类&#xff0c;即只通过正样本训练模型&#xff0c;区分正样本和非正样本。 情…

蓝桥杯2021年第十二届省赛真题-时间显示(C and C++)

这一篇是个小记&#xff0c;真无语了&#xff0c;看见这个题感觉哇塞好简单的感觉&#xff0c;谁知道栽了&#xff0c;烦死了 话不多说&#xff0c;记录一下 C语言 #include<stdio.h> int main() {int a,b,c;long long time;//题上说了10的18次方的正整数&#xff0c;所…

Spring:AOP的五种通知类型(12)

AOP的五种通知类型前置通知&#xff1a;Before注解后置通知&#xff1a;After注解环绕通知&#xff1a;Around注解&#xff08;掌握&#xff09;返回后通知&#xff1a;AfterReturning&#xff08;了解&#xff09;异常后通知&#xff1a;AfterThrowing&#xff08;了解&#x…

直播回顾 | 【原引擎】解密云原生安全:如何应对新型BOT攻击?

BOT流量是指在互联网上对Web网站、APP应用、API接口通过工具脚本、爬虫程序或模拟器等非人工手动操作访问的自动化程序流量&#xff0c;一般也称为机器人流量。而恶意的BOT流量通过利用代理或秒拨IP、手机群控等手段来爬取信息数据、抢刷接口、薅羊毛、外挂作弊等恶意攻击行为&…

招标 | 近期隐私计算项目招标中标25(大连理工大学、中国电信北京研究院、松山湖材料实验室、北京控制工程研究所、光大永明)

开放隐私计算 开放隐私计算 开放隐私计算OpenMPC是国内第一个且影响力最大的隐私计算开放社区。社区秉承开放共享的精神&#xff0c;专注于隐私计算行业的研究与布道。社区致力于隐私计算技术的传播&#xff0c;愿成为中国 “隐私计算最后一公里的服务区”。 177篇原创内容 …

apache-POI ,easyexcel(3个办公软件)

POI介绍 ApachePOI是用Java编写的免费开源的跨平台的JavaAPI&#xff0c;ApachePOI提供API给Java程序对MicrosoftOffice格式档案读和写的功能&#xff0c;其中使用最多的就是使用POI操作Excel文件。 HSSF&#xff0d;提供读写MicrosoftExcelXLS格式档案的功能XSSF&#xff0d;…

【设计模式】适配器模式

适配器模式属于结构型模式&#xff0c;主要解决两个已存在的功能相近的接口间不能兼容的问题。在准备将一个接口对接到另一个接口中时&#xff0c;发现另一个接口&#xff08;目标&#xff09;与准备对接的接口&#xff08;适配者&#xff09;因不兼容而无法正常运行功能时&…