Python---Matplotlib

news2024/11/15 13:29:25

文章目录

  • 1.什么是matplotlib?
  • 2.实现一个简单的matplotlib绘图
  • 3.matplotlib图像结构
  • 4.matplotlib基础绘图
      • 多个坐标系显示— plt.subplots(面向对象的画图方法)
  • 5.常见图形种类

1.什么是matplotlib?

Matplotlib是一个用于绘制数据可视化图形的Python库。它是一个广泛使用的数据可视化工具,可用于创建各种类型的静态、动态和交互式图形,从简单的折线图到复杂的3D图形都可以轻松实现。
在这里插入图片描述
可视化是在整个数据挖掘的关键辅助工具,可以清晰的理解数据,从而调整我们的分析方法。能将数据进行可视化,更直观的呈现,使数据更加客观、更具说服力。

matplotlib可以使用pip命令进行安装

pip install matplotlib

2.实现一个简单的matplotlib绘图

import matplotlib.pyplot as plt
# x,y轴
x=[1,2,3,4,5,6,7]
y=[10,9,8,11,12,9,8]
# 创建画布
plt.figure(figsize=(20,6),dpi=100)

# 绘制折线图
plt.plot(x,y)

# 显示绘图
plt.show()

在这里插入图片描述

3.matplotlib图像结构

在这里插入图片描述

4.matplotlib基础绘图

使用matplotlib完成基础绘图,以折线图为例
需求:画出某城市11点到12点1小时内每分钟的温度变化折线图,温度范围在15度~18度

import matplotlib.pyplot as plt
import random
from pylab import mpl

# 设置显示中文字体
mpl.rcParams["font.sans-serif"] = ["SimHei"]

# x轴的数据为0到59,此处使用了range方法来生成一个整数序列 
x=range(60) 
# y轴的数据
y=[random.uniform(15,18) for i in x]
y2=[random.uniform(7,9) for i in x]

# 添加自定义x,y刻度
x_ticks = ["11点{}分".format(i) for i in x]
y_ticks = [0,5,10,15,20,25,30]


# 创建画布
plt.figure(figsize=(20,10),dpi=100)

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

# 添加描述信息
plt.xlabel("时间")
plt.ylabel("温度")
plt.title("中午11点到12点之间的温度变化如图所示",fontsize=20)

# 绘制折线图
plt.plot(x,y,label="上海")
plt.plot(x,y2,label="北京")

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

# 保存图片
plt.savefig("./test.png")

# 显示图例
plt.legend(loc="best")
# 显示
plt.show()

在这里插入图片描述

注意:
1.当random.uniform(a, b)与for循环结合使用时,它表示在给定的范围内生成多个随机浮点数,并通过循环遍历这些生成的随机数。
2.plt.show()会释放figure资源,如果在显示图像之后保存图片将只能保存空图片。

多个坐标系显示— plt.subplots(面向对象的画图方法)

需求:将北京和上海的天气图显示在同一个图的不同坐标系当中,效果如下:
在这里插入图片描述
在Matplotlib中,subplots()函数用于创建一个图形和一个包含多个子图(axes)的网格。它提供了一种方便的方式在一个图形中创建多个图表。该函数返回图形和一个axes数组,你可以使用这些axes对象来绘制你的数据。

fig, ax = plt.subplots(nrows, ncols, **kwargs)
以下是各个参数的说明:
nrows:表示你要创建的子图的行数。
ncols:表示你要创建的子图的列数。
**kwargs:附加的关键字参数,用于自定义图形和axes的属性。
fig:图形对象,表示整个图形,可用于设置整个图形的属性,比如图形大小、背景颜色等。
ax:一个axes对象的数组,表示子图。你可以使用这些axes对象来绘制数据和设置各个子图的属性。

代码:

# 0.准备数据
x = range(60)
y_shanghai = [random.uniform(15, 18) for i in x]
y_beijing = [random.uniform(1, 5) for i in x]
# 1.创建画布
fig, axes = plt.subplots(nrows=1, ncols=2, figsize=(20, 8), dpi=100)
# 2.绘制图像
# plt.plot(x, y_shanghai, label="上海")
# plt.plot(x, y_beijing, color="r", linestyle="--", label="北京")
axes[0].plot(x, y_shanghai, label="上海")
axes[1].plot(x, y_beijing, color="r", linestyle="--", label="北京")
# 2.1 添加x,y轴刻度
# 构造x,y轴刻度标签
x_ticks_label = ["11点{}分".format(i) for i in x]
y_ticks = range(40)
# 刻度显示
# plt.xticks(x[::5], x_ticks_label[::5])
# plt.yticks(y_ticks[::5])
axes[0].set_xticks(x[::5])
axes[0].set_yticks(y_ticks[::5])
axes[0].set_xticklabels(x_ticks_label[::5])
axes[1].set_xticks(x[::5])
axes[1].set_yticks(y_ticks[::5])
axes[1].set_xticklabels(x_ticks_label[::5])
# 2.2 添加网格显示
# plt.grid(True, linestyle="--", alpha=0.5)
axes[0].grid(True, linestyle="--", alpha=0.5)
axes[1].grid(True, linestyle="--", alpha=0.5)
# 2.3 添加描述信息
# plt.xlabel("时间")
# plt.ylabel("温度")
# plt.title("中午11点--12点某城市温度变化图", fontsize=20)
axes[0].set_xlabel("时间")
axes[0].set_ylabel("温度")
axes[0].set_title("中午11点--12点某城市温度变化图", fontsize=20)
axes[1].set_xlabel("时间")
axes[1].set_ylabel("温度")
axes[1].set_title("中午11点--12点某城市温度变化图", fontsize=20)
# # 2.4 图像保存
plt.savefig("./test.png")
# # 2.5 添加图例
# plt.legend(loc=0)
axes[0].legend(loc=0)
axes[1].legend(loc=0)
# 3.图像显示
plt.show()

5.常见图形种类

1.折线图:plt.plot(x,y)
2.散点图:plt.scatter(x,y)
3.柱状图:plt.bar(x, width, align=‘center’, **kwargs)

Parameters: x : 需要传递的数据
width : 柱状图的宽度
align : 每个柱状图的位置对齐方式 {‘center’,‘edge’}, optional, default: ‘center’
**kwargs : color:选择柱状图的颜色

4.直方图:plt.hist(x, bins=None)

Parameters: x : 需要传递的数据 bins : 组距

5.饼图:plt.pie(x, labels=,autopct=,colors)

Parameters: x:数量,自动算百分比
labels:每部分名称
autopct:占比显示指定%1.2f%%
colors:每部分颜色

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

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

相关文章

SystemVerilog scheduler

文章目录 简介调度器simulation regionPreponed regionActive regionInactive regionNBA(Non-blocking Assignment Events region)Observed regionReactive regionRe-Inactive Events regionRe-NBA RegionPostponed Region PLI region:Pre-active regionPre-NBA regionPost-NBA…

锁相环是锁住正弦电压波形的0度位置还是90度位置,欢迎大家参与讨论?

文章目录 最近做三相PFC控制电源开发,里面使用到锁相环,跟大家一起讨论一下,锁相环锁的是A,B,C哪一相,是0度位置还是90度位置?讨论区:大家的观点是什么,请投票选择,后续会一起讨论正…

2023年华数杯赛题浅析

2023年华数杯作为与国赛同频的比赛(周四6点发题,周日晚8点交卷),也是暑期唯一一个正式比赛。今年的报名队伍已经高达​6000多对。基于这么多的人数进行国赛前队伍的练习,以及​其他用途。为了方便大家跟更好的选题&…

SQL 语句中 left join 后用 on 还是 where,区别大了!

目录 情况 小结 举例 情况 前天写SQL时本想通过 A left B join on and 后面的条件来使查出的两条记录变成一条,奈何发现还是有两条。 后来发现 join on and 不会过滤结果记录条数,只会根据and后的条件是否显示 B表的记录,A表的记录一定会显…

响应号召!加强基础研究 | GBASE南大通用坚决打好基础软件国产化攻坚战

数据库上托应用,下连基础设施,是IT系统中承上启下最关键的一环,被誉为“基础软件皇冠上的明珠”。加强数据库基础研究,从源头和底层把握关键技术,打造自主可信的大国重器,是打好基础软件国产化攻坚战的必然…

免费!功能强大的PS在线网页版推荐!

PS功能强大,但是对于设计师尤其是 UI 设计师来说获取稍许庞大,其版本更新频繁且不稳定,运行对电脑配置要求高,对于初学者来说是一种“负担”,更轻型却强大的设计工具出现,也就是本文为大家带来的 PS 在线网…

Restful开发规范以及开发流程

目录 一、RestFul开发规范 二、开发流程 一、RestFul开发规范 RESTful(Representational State Transfer)是一种用于设计和开发网络应用程序的架构风格,它强调使用标准HTTP方法和状态码来进行资源的管理和交互。以下是一些常见的RESTful开发…

NGZORRO:动态表单/模型驱动 的相关问题

官网的demo的[nzFor]"control.controlInstance"&#xff0c;似乎是靠[formControlName]"control.controlInstance"来关联的。 <form nz-form [formGroup]"validateForm" (ngSubmit)"submitForm()"><nz-form-item *ngFor&quo…

利用ChatGPT制作行业应用:哪些行业最受益

引言 随着人工智能技术的快速发展&#xff0c;ChatGPT&#xff08;Chat Generative Pre-trained Transformer&#xff09;成为了一种引人注目的工具&#xff0c;它能够生成自然流畅的对话内容。这种技术不仅在娱乐领域有着广泛的应用&#xff0c;还可以在各个行业中发挥重要作…

为了应付枯燥的工作需求,我造了一个“轮子”

项目代码已上传至Github&#xff0c;已开源&#xff0c;欢迎Star。 项目地址&#xff1a;JSON_EXTRACT_SQL 正如大家标题所见的&#xff0c;我造了一个“轮子”!!! 至于是什么需求呢&#xff1f;下面我贴出一段json&#xff1a; {"type": "test","pro…

小程序商品如何开启秒杀?

在小程序中&#xff0c;开启秒杀活动可以有效地吸引用户的注意力&#xff0c;提升销售额。下面就让我们来看看小程序商品怎么开启秒杀功能吧。 首先&#xff0c;确定秒杀活动的商品。一般来说&#xff0c;我们可以选择一些库存较多的商品或者是需要清理库存的商品作为秒杀商品…

第四次作业 运维高级 安装tomcat8和部署jpress应用

1. 简述静态网页和动态网页的区别。 静态网页 静态网页是指存放在服务器文件系统中实实在在的HTML文件。当用户在浏览器中输入页面的URL&#xff0c;然后回车&#xff0c;浏览器就会将对应的html文件下载、渲染并呈现在窗口中。早期的网站通常都是由静态页面制作的。 静态网页…

Vue2 第十八节 插槽

1.默认插槽 2.具名插槽 3.作用域插槽 插槽 ① 作用&#xff1a;让父组件可以向子组件指定位置插入html结构&#xff0c;也是一种组件间通信的方式&#xff0c;适用于父组件和子组件间通信 ② 分类&#xff1a;默认插槽&#xff0c;具名插槽&#xff0c;作用域插槽 一.默认…

面试必问,敲重点!讲一下 Android Application 启动流程及其源码?

一、写在前面 在开始之前&#xff0c;你需要知道下面几点&#xff1a; 有一份编译好的 Android 源码&#xff0c;现在的 AS 基本能满足&#xff0c;动手跟着步骤走&#xff0c;理解更深刻对 Binder 机制有一定的了解本文基于 API 26&#xff0c;用什么版本的源码并不重要&#…

【蓝图】p46角色上下车功能

这里写目录标题 p46角色上下车功能上车&#xff08;控制权切换&#xff09;让角色和汽车一起移动GetWorldTransform&#xff08;获取场景变换&#xff09;break&#xff08;拆分变换&#xff09;AttachActorToComponent&#xff08;附加Actor到组件&#xff09; 下车 p46角色上…

基于LNMP架构搭建Discuz论坛

LNMP: L---->linux系统&#xff0c;操作系统。 N----->nginx网站服务&#xff08;前端),提供前端的静态页面服务。同时具有代理、转发的作用。&#xff08;转发就是转发后端请求&#xff0c;转发PHP&#xff09;&#xff0c;nginx没有处理动态资源的功能&#xff0c;他有…

SnippetsLab for Mac(代码片段管理工具)

SnippetsLab for Mac特别版使用嵌套文件夹&#xff0c;标签和智能组支持在一个地方管理所有的代码片段&#xff0c;使工作变得简单。您可以按日期&#xff0c;标题等对代码段进行排序。 SnippetsLab for Mac可以帮助您收集和组织有价值的代码片段&#xff0c;并确保您可以随时…

20230803激活手机realme GT Neo3

20230803激活手机realme GT Neo3 缘起&#xff1a; 新买的手机&#xff1a;realme GT Neo3 需要确认&#xff1a; 1、4K录像&#xff0c;时间不限制。 【以前的很多手机都是限制8/10/12/16分钟】 2、通话自动录音 3、定时开关机。 4、GPS记录轨迹不要拉直线&#xff1a;户外助…

什么是高级持续威胁(APT)攻击

目录 前言什么是高级持续威胁高级持续威胁攻击有哪些独特特征APT攻击的五个阶段APT检测及防护措施总结 前言 APT攻击是利用多个阶段和不同攻击技术的复合网络攻击。APT不是一时兴起2构思或实施的攻击。相反&#xff0c;攻击者故意针对特定目标定制攻击策略。并在较长时间内进行…

openCV C++环境配置

文章目录 一、openCV 安装二、新建项目三、配置环境变量四、测试使用 编译器:vs2017 OpenCV:4.5.4 一、openCV 安装 将openCV安装到一个路径下&#xff0c;我安装到了D盘根目录下 二、新建项目 在vs2017新建控制台空项目&#xff0c;打开项目属性 在VC目录 -> 包含目录下…