day04-matplotlib入门

matplotlib

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

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

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

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

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

import numpy as np
import matplotlib.pyplot as pltx = np.arange(-50,51)
y = x ** 2plt.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.mzph.cn/bicheng/41272.shtml

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

相关文章

Django学习第五天

启动项目命令 python manage.py runserver 图像验证码生成随机字母或者数字 import random from PIL import Image, ImageDraw, ImageFont, ImageFilterdef check_code(width120, height40, char_length5, font_fileZixunHappyBold.ttf, font_size28):code []img Image.new…

Spring框架Mvc(2)

1.传递数组 代码示例 结果 2.集合参数存储并进行存储类似集合类 代码示例 postman进行测试 ,测试结果 3.用Json来对其进行数据的传递 (1)Json是一个经常使用的用来表示对象的字符串 (2)Json字符串在字符串和对象…

图文识别0难度上手~基于飞浆对pdf简易ocr并转txt

前言 本篇pdf适用windows对视觉识别0基础的的纯小白用户。大佬请绕道~~ 注意: 本项目pdf的ocr对于表格、画图文字,水印等干扰没做任何处理,因此希望各位使用该功能的pdf尽量不要含有这些干扰项,以免影响翻译效果。 流程 1.构建…

【c语言】轻松拿捏自定义类型

🌟🌟作者主页:ephemerals__ 🌟🌟所属专栏:C语言 目录 前言 一、结构体 1.结构体类型的定义和使用 1.1 结构体类型声明 1.2 结构体变量的创建和初始化 1.3 结构体变量成员的访问 1.4 结构体的特殊声…

三万字带你一遍跑通uer

三万字带你一遍跑通uer 参考文档 今天给大家介绍个非常强大的项目uer,集成了许多可以做自然语言的东西,效果的话也非常好,很适合企业级的应用! 1. 先将项目uer从github拉取下来(zip或git都ok) 2. 用pycha…

HTTP代理服务器:深度解析与应用

“随着互联网的飞速发展,HTTP代理服务器在网络通信中扮演着越来越重要的角色。它们作为客户端和服务器之间的中介,不仅优化了网络性能,还提供了强大的安全性和隐私保护功能。” 一、HTTP代理服务器的概念与作用 HTTP代理服务器是一种能够接…

价值499的从Emlog主题模板PandaPRO移植到wordpress的主题

Panda PRO 主题,一款精致wordpress博客主题,令人惊叹的昼夜双版设计,精心打磨的一处处细节,一切从心出发,从零开始,只为让您的站点拥有速度与优雅兼具的极致体验。 从Emlog主题模板PandaPRO移植到wordpres…

兴业小课堂|什么是法拍房助拍机构?如何挑选靠谱的助拍机构?

随着法拍房市场的不断发展和扩大 使法拍房数量的增加 其交易的复杂性和专业性需求也日益凸显 这促使了专门机构的出现来满足市场需求 法拍房助拍机构存在的原因主要有以下几点: 1.专业知识和经验: 法拍房的交易流程相对复杂,涉及到法律法…

【全网最全ABC三题完整版】2024年APMCM第十四届亚太地区大学生数学建模竞赛(中文赛项)完整思路解析+代码+论文

我是Tina表姐,毕业于中国人民大学,对数学建模的热爱让我在这一领域深耕多年。我的建模思路已经帮助了百余位学习者和参赛者在数学建模的道路上取得了显著的进步和成就。现在,我将这份宝贵的经验和知识凝练成一份全面的解题思路与代码论文集合…

第六节:如何解决@ComponentScan只能扫描当前包及子包(自学Spring boot 3.x的第一天)

大家好,我是网创有方,继上节咱们使用了Component和ComponentScan的方法实现了获取IOC容器中的Bean,但是存在一个问题,就是必须把AppConfig和要扫描的bean类放在同一个目录下,这样就导致了AppConfig类和bean类在同一个目…

6.8应用进程跨网络通信

《计算机网络》第7版,谢希仁 理解socket通信

成都仅需浏览器即可快速查看的数据采集监控平台!

LP-SCADA数据采集监控平台无需额外客户端,只需要一个标准的Web浏览器,用户可以迅速访问系统并开始使用,同时支持跨平台访问。一个用户可监控多个过程,多个用户可以监控同一过程,真正实现了数据的开放性及过程信号的透明…

CVPR2024自动驾驶轨迹预测方向的论文整理

2024年自动驾驶轨迹预测方向的论文汇总 1、Producing and Leveraging Online Map Uncertainty in Trajectory Prediction 论文地址:https://arxiv.org/pdf/2403.16439 提出针对在线地图不确定性带给轨迹预测的影响对应的解决方案。 在轨迹预测中,利用在…

【产品与技术双视角】初创团队利用小程序云基础设施“低成本试错”

文章目录 前言一、产品视角之三大困难二、技术视角之难以抉择三、利用小程序云基础设施“低成本试错” 前言 学生团队和初创团队在没有得到风投之前,想要做出一款产品太难了,难在哪呢?难在没有资源。用最狭隘的视角看这个资源:人…

SSM中小学生信息管理系统-计算机毕业设计源码02677

摘要 随着社会的发展和教育的进步,中小学生信息管理系统成为学校管理的重要工具。本论文旨在基于SSM框架,采用Java编程语言和MySQL数据库,设计和开发一套高效、可靠的中小学生信息管理系统。中小学生信息管理系统以学生为中心,通过…

hitcontraining_uaf

BUUCTF[PWN][堆] 题目:BUUCTF在线评测 (buuoj.cn) 程序del是没有将申请的指针清零,导致可以再次调用输出print。 查看add_note函数:根据当前 notelist 是否为空,来申请了一个8字节的空间将地址(指针)放在notelist[i]中&#xff…

野指针的概念 如果规避野指针

目录 野指针的概念 有关野指针的代码 如何规避野指针 野指针的概念 野指针就是指针指向的位置是不可知的&#xff08;随机的&#xff0c;不正确的&#xff0c;没有明确限制的&#xff09; 有关野指针的代码 指针未初始化&#xff1a; #include<stdio.h> int main…

使用 mongo2neo4j 和 SemSpect 通过各种方式进行图探索

用于可视化和探索每个 MEAN 堆栈背后的数据图的 ETL 您是否正在努力回答有关 MEANS Web 服务数据的紧急问题&#xff1f;哪里有 BI 可以快速回答“上个季度哪些亚洲的artisan.plus 用户触发了订单&#xff1f;”这个问题&#xff0c;而无需编写查询&#xff1f;使用 mongo2neo4…

深度学习每周学习总结N3(文本分类实战:基本分类(熟悉流程)、textCNN分类(通用模型)、Bert分类(模型进阶))

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 | 接辅导、项目定制 目录 0. 总结&#xff1a;1. 前期准备环境安装 2. 文本分类基本流程a. 加载数据b.构建词典c.生成数据批次和迭代器d.定义模型及实例e. 定义…

Linux搭建hive手册

一、将hive安装包上传到NameNode节点并解压 1、删除安装MySQL时的.rpm文件 cd /opt/install_packages/ rm -rf *.rpm 2、将安装包拖进/install_packages目录 3、解压安装包 tar -zxvf apache-hive-3.1.2-bin.tar.gz -C /opt/softs/ 4、修改包名 cd /opt/softs mv apache-…