day04-matplotlib入门

news2025/2/23 10:30:22

matplotlib

在这里插入图片描述
在这里插入图片描述

Matplotlib 提供了一个套面向绘图对象编程的 API接口

是一款用于数据可视化的 Python 软件包,支持跨平台运行

它能够根据 NumPyndarray 数组来绘制 2D(3D) 图像,它使用简单、代码清晰易懂,深受广大技术爱好 者喜爱。

实列:绘制x轴为-50-50,y轴为x轴的平方的直方图

import numpy as np
import matplotlib.pyplot as plt

x = np.arange(-50,51)
y = x ** 2

plt.plot(x,y)

在这里插入图片描述

一、matplotlib的基本方法

方法名说明
title()设置图表的名称
xlabel()设置x轴名称
ylabel()设置y轴名称
xticks(ticks,label,rotation)设置x轴的刻度,rotation旋转角度
yticks()设置y轴的刻度
show()显示图表
legend()显示图例
text(x,y,text)显示每条数据的值 x,y值的位置
1. 图表名称 plt.title()
plt.title("y= x^2的图表")
plt.plot(x,y)
  • 参数fontsize:设置标题的字体大小

在这里插入图片描述

默认不支持中文:missing from current font 字体丢失

需要设置字体:

plt.rcParams["font.sans-serif"] = ["下列中文字体名称"]
#如
plt.rcParams['font.sans-serif'] = ["FangSong"]
plt.rcParams['font.sans-serif'] = ["SimHei"]
中文字体说明
‘SimHei’中文黑体
‘Kaiti’中文楷体
‘LiSu’中文隶书
‘FangSong’中文仿宋
‘YouYuan’中文幼圆
STSong华文宋体

但出现了新的问题,负号识别不了,因此还需要设置

不适用unicode的负号 axis的复数-axes,表示所有坐标轴

plt.rcParams['axes.unicode_minus'] = False

完整的运行一遍

import matplotlib.pyplot as plt
# 引入numpy包
import numpy as np


# 获得-50到50之间的ndarray对象
x = np.arange(-50,51)
plt.title("y等于x的平方")
plt.rcParams['font.sans-serif'] = ["FangSong"]
# 用来设置字体样式以正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False
# 默认是使用Unicode负号,设置正常显示字符,如正
plt.plot(x,y)

在这里插入图片描述

2.x轴和y轴名称

注意,只对下一次绘画有作用

xlable("x轴名称")
ylable("y轴名称")
# 设置x轴名称
plt.xlabel("x 轴",fontsize = 18)
# 设置y轴名称
plt.ylabel("y 轴",fontsize = 20)

plt.plot(x,y)

参数:

  • fontsize:设置字体大小

在这里插入图片描述

3.设置线条粗细

plt.plot(x,y,linewidth = 5)

在这里插入图片描述

绘制两条线段

# 创建x为-10到10的整数
x = np.arange(-10,10)
# y是x的平方
y1 = x ** 2
y2 = x ** 1
# 设置标题
plt.title('坐标系',fontsize=16)
# 设置x轴名称 ,值不能写"12px"
plt.xlabel("x 轴",fontsize=12)
# 设置y轴名称
plt.ylabel("y 轴")
plt.plot(x, y1,linewidth=5)
plt.plot(x, y2,linewidth=1)

在这里插入图片描述

4. 设置x轴和y轴的刻度

matplotlib.pyplot.xticks(ticks=None, labels=None, **kwargs)
matplotlib.pyplot.yticks(ticks=None, labels=None, **kwargs)
  • ticks: 此参数是xtick位置的列表。和一个可选参数。如果将一个空列表作为参数传递,则它将删除所有xticks
  • label: 此参数包含放置在给定刻度线位置的标签。它是一个可选参数。,
  • **kwargs:此参数是文本属性,用于控制标签的外观
    • rotation:旋转角度 如:rotation=45
    • color:颜色 如:color=“red”

xticks到底有什么用,其实就是想把坐标轴变成自己想要的样子

对于数值型的x轴或y轴,可以给ticks传一个数值列表,

对于字符型的x轴或y轴数据,可以给ticks传一个序号列表

times = ['2015/6/26', '2015/8/1', '2015/9/6', '2015/10/12', '2015/11/17','2015/12/23','2016/1/28','2016/3/4','2016/4/9',
'2016/5/15','2016/6/20','2016/7/26','2016/8/31','2016/10/6','2016/11/11','2016/12/17']

# 随机出销量
sales =np.random.randint(500,2000,size=len(times))

# 绘制图形
plt.plot(times,sales)

作图后,其x轴会全部显示,显得杂乱,就需要ticks剔除部分

在这里插入图片描述

# 如果想只显示部分时间,或者按照某个规则展示,如何处理,这个时候就用到xticks
plt.xticks(range(0,len(times),3))#每隔3个显示x轴信息。
plt.plot(times,sales)

在这里插入图片描述

plt.xticks(range(0,len(times),3),rotation = 45,color = 'red')#每隔3个显示x轴信息。且将x轴信息旋转45度角,显示为红色
plt.plot(times,sales)

在这里插入图片描述

想要将x轴的信息自定义,则使用labels参数

plt.xticks(range(0,len(times),2),labels= range(1,9))
#labels元素不够时,将为空,不显示
plt.plot(times,sales)

在这里插入图片描述

还可以单独使用并按照想要的格式

x_titcks  =range(0,15,2)
x_labels = ['%s月'%i for i in x_titcks]
plt.xticks(x_titcks,x_labels)
plt.plot(times,sales)

在这里插入图片描述

  • 注意,当x轴数据不是str_类型,它可以自动无遮挡显示
times = range(10,50)
sales =np.random.randint(500,2000,size=len(times))

plt.plot(times,sales)

在这里插入图片描述

times = range(10,100)
sales =np.random.randint(500,2000,size=len(times))


plt.plot(times,sales)

在这里插入图片描述

当x轴时str_类型时,则会全部显示

times = np.arange(10,50).astype(np.str_)
sales =np.random.randint(500,2000,size=len(times))

plt.plot(times,sales)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

一般使用下列语句减少显示数量

plt.xticks(range(0,len(times),2))

在这里插入图片描述

4.显示图表show()

  • 显示所有打开的图形。

jupyter notebooks会自动显示图形

而一般的python交互模式需要

# 如果在jupyter中也想出现图形操作菜单,可以使用matplotlib中的魔术方法
%matplotlib notebook

# 如果有想回去原先的展示,使用另一个 %matplotlib inline
%matplotlib inline

5.图例 legend()

图例是集中于地图一角或一侧的地图上各种符号和颜色所代表内容与指标的说明,有助于更好的认识地图。

在这里插入图片描述

# 每个时间点的销量绘图
times = ['2015/6/26', '2015/8/1', '2015/9/6', '2015/10/12']

# 随机出收入
income =np.random.randint(500,2000,size=len(times))
# 支出
expenses =np.random.randint(300,1500,size=len(times))

# 绘制图形
# 注意,在使用图例前为每个图形设置label参数
plt.plot(times,income,label="收入")
plt.plot(times,expenses,label="支出")
# 默认会使用每个图形的label值作为图例中的说明
plt.legend()

在这里插入图片描述

5.1图例的图例位置设置

  • loc代表了图例在整个坐标轴平面中的位置(一般选取’best’这个参数值)
    • 第一种:默认是"best",图例自动‘安家’在一个坐标面内的数据图表最少的位置
    • 第二种: loc = ‘XXX’ 分别有0: ‘best’ (自动寻找最好的位置)
位置字符串位置值备注
“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正中心

在这里插入图片描述

plt.legend(loc = 'center')

6.显示每条数据的值 x,y值的位置

plt.text(x,y,  string,  fontsize=15,  verticalalignment="top",  horizontalalignment="right")
  • x,y:表示坐标值上的值
  • string:表示说明文字
  • fontsize:表示字体大小
  • verticalalignment:(va)垂直对齐方式 ,参数:[ ‘center’ | ‘top’ | ‘bottom’ | ‘baseline’ ]
  • horizontalalignment:(ha)水平对齐方式 ,参数:[ ‘center’ | ‘right’ | ‘left’ ]

plt.text()一次只能描绘一个点的信息

因此需要使用循环

for x,y in zip(times,income):
    plt.text(x,y,'%s万'%y)
    
for a,b in zip(times,expenses):
    plt.text(a,b,b)

在这里插入图片描述

总结:

  • x轴是数值型,会按照数值型本身作为x轴的坐标
  • x轴为字符串类型,会按照索引作为x轴的坐标

labels的注意点:

time=np.arange(2000,2020).astype(np.str_)
sales = [109, 150, 172, 260, 273, 333, 347, 393, 402, 446, 466, 481, 499,504, 513, 563, 815, 900, 930, 961]
plt.xticks(range(0,len(time),2),labels=['year%s'%i for i in time],rotation=45,color="red")
#plt.xticks(range(0,len(time),2),labels=['year%s'%time[i] for i in range(0,len(time),2)],rotation=45,color="red")
plt.yticks(color="blue")
plt.plot(time,sales)

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

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

相关文章

Chapter11让画面动起来——Shader入门精要学习笔记

Chapter11让画面动起来 一、Unity Shader中的内置变量(时间篇)二、纹理动画1.序列帧动画2.滚动背景 三、顶点动画1.流动的河流2.广告牌3.注意事项①批处理问题②阴影投射问题 一、Unity Shader中的内置变量(时间篇) Unity Shader…

【JavaWeb程序设计】JSP内置对象

目录 一、通过测试以下代码,了解各种隐含对象与作用域变量的使用 1. request隐含对象的使用(request.jsp) 2. out隐含对象的使用(out.jsp) 3. application隐含对象的使用(application.jsp) …

【网工】学习笔记1

windows:ipconfig ens40:和别人通信的网卡 lo本地回环和自己通信的网卡 ifconfig down/up 进程:运行起来的程序 使用浏览器访问网站:http:电脑上的程序和网站上的程序之间的通信。 主要用于服务器和客户端之间上传和…

18、matlab信号生成与预处理--剔除异常值:hampel()函数

1、信号生成与预处理--剔除异常值简介 在信号生成和预处理过程中,有时候需要剔除异常值(outliers)以确保信号数据的准确性和可靠性。MATLAB提供了一些方法来识别和去除异常值,以下是一些常用的方法: 箱线图检测异常值…

多语言版在线出租车预订完整源码+用户应用程序+管理员 Laravel 面板+ 司机应用程序最新版源码

源码带PHP后台客户端源码 Flutter 是 Google 开发的一款开源移动应用开发 SDK。它用于开发 Android 和 iOS 应用,也是为 Google Fuchsia 创建应用的主要方法。Flutter 小部件整合了所有关键的平台差异,例如滚动、导航、图标和字体,可在 iOS 和…

返回值处理器器【Spring源码学习】

定义返回值类型处理器的组合; public static HandlerMethodReturnValueHandlerComposite getReturnValueHandler(){HandlerMethodReturnValueHandlerComposite composite new HandlerMethodReturnValueHandlerComposite();// 处理ModelAndViewcomposite.addHandle…

秋招突击——7/5——设计模式知识点补充——适配器模式、代理模式和装饰器模式

文章目录 引言正文适配器模式学习篮球翻译适配器 面试题 代理模式学习面试题 装饰器模式学习装饰模式总结 面试题 总结 引言 为了一雪前耻,之前腾讯面试的极其差,设计模式一点都不会,这里找了一点设计模式的面试题,就针对几个常考…

加密(3)非对称加密

一、介绍 1、概念 非对称加密,又称现代加密算法,非对称加密是计算机通信安全的基石,保证了加密数据不会被破解。加密和解密使用的是两个不同的密钥,这种算法叫作非对称加密算法。 2、示例 首先生成密钥对, 公钥为(5,14)&#…

docker中实现多机redis主从集群

redis主从集群是每个使用redis的小伙伴都必需知道的,那如何在docker中快速配置呢?这篇来教你快速上手,跟着复制完全就能用!! 1. 前置准备 1.1 docker安装 以防有小伙伴没预先安装docker,这里提供安装步骤…

小白学python(第五天)if语句的拓展

上次因为个人原因才匆忙讲解完python的顺序条件,导致if语句中有部分知识点没讲完,那么本篇文章将带大家继续学习python的if语句。 前情回顾 上集说到 if语句的模板,并且让大家注意了if后面直接跟条件无需加括号以及条件后冒号也不能忘&…

Android Camera2 集成人脸识别算法

这可能是全网唯一一篇介绍Android Camera2接口集成人脸算法的文章了~ 写在前面: 说起人脸识别,相信大家都不会感到陌生,在我们平时的工作生活中,人脸打卡、刷脸支付等等已经是应用的非常广泛了,人脸识别也给我们的生活…

如何给gitlab其他访问者创建账号并增加权限

嗨,今天创建了项目之后,我想把项目链接发送给其他人,让他下载这个项目,结果发现对方打开显示登录的界面,没错,他要想使用这个git下载项目,首先他的有一个git账号 接下来我找有权限的相关人员给他…

Pseudo-Label : The Simple and Efficient Semi-Supervised Learning Method--论文笔记

论文笔记 资料 1.代码地址 https://github.com/iBelieveCJM/pseudo_label-pytorch 2.论文地址 3.数据集地址 论文摘要的翻译 本文提出了一种简单有效的深度神经网络半监督学习方法。基本上,所提出的网络是以有监督的方式同时使用标记数据和未标记数据来训练的…

机器学习——决策树及其可视化

1、决策树概念 顾名思义,决策树是利用数据结构中树结构来进行判断,每一个结点相当于一个判断条件,叶子结点即是最终的类别。以鸢尾花为例,可以得到如下的决策树: 2、决策树分类的依据是什么? 根据前面分…

MySQL---事务管理

1.关于事务 理解和学习事务,不能只站在程序猿的角度来理解事务,而是要站在使用者(用户)的角度来理解事务。 比如支付宝转账,A转了B100块前,在程序猿的角度来看,是两条update操作,A …

电源设计技巧:DDR内存电源

CMOS逻辑系统的功耗主要与时钟频率、系统内各栅极的输入电容以及电源电压有关。器件形体尺寸减小后,电源电压也随之降低,从而在栅极层大大降低功耗。这种低电压器件拥有更低的功耗和更高的运行速度,允许系统时钟频率升高至千兆赫兹级别。在这…

非参数检测1——概述

在绝大多数的检测理论研究中,都着重于设计最优的检测器,最优检测器拥有最优的性能,但需要知道对输入信号和噪声的完整的统计学描述,这在实际应用中很可能无法实现。 实际情况: 设计检测系统时,无法得知完…

Kafka的简介、架构、安装使用、生产者、消费者、高吞吐、持久化及与Flume整合

Apache Kafka是一个分布式流处理平台,最初由LinkedIn公司开发,后来成为Apache软件基金会的一个顶级项目。Kafka主要用于构建实时数据管道和流处理应用程序。Kafka广泛应用于日志聚合、实时分析、事件源、流处理等场景。它与各种数据处理框架和数据库集成…

纯javascript实现图片批量压缩打包zip下载后端ThinkPHP多国语言切换国际站

最近在做一个多国语言的工具站,需要实现多国语言切换,说到多国语言站,肯定是有2种方式,第一是子域名,第二就是子目录。根据自己的需要来确定。 后台配置如下: 前台显示: 前端纯javascript实现…

VS code修改底部的行号的状态栏颜色

VSCode截图 相信很多小伙伴被底部的蓝色状态栏困扰很久了 处理的方式有两种: 1、隐藏状态栏 2、修改其背景颜色 第一种方法大伙都会,今天就使用第二种方法。 1、点击齿轮进入setting 2、我现在用的新版本,设置不是以前那种json格式展示&…