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…

liunx离线安装Firefox

在Linux系统中离线安装Firefox浏览器,您需要先从Mozilla的官方网站下载Firefox的安装包,然后通过终端进行安装。以下是详细的步骤: 准备工作 下载Firefox安装包: 首先,在一台可以上网的电脑上访问Firefox官方下载页面…

Spring框架Mvc(2)

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

实证Stata代码命令汇总

实证Stata代码命令汇总 更新时间:2024.4 实证Stata代码命令汇总 (一) 数据导入和管理 1. 数据导入 2. 数据导出

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

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

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

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

MobPush iOS端 扩展业务功能设置

1、扩展业务说明 MobPush提供的扩展业务功能为: (1)按照地域提供更为精准的推送; (2)实现网络链路的选择与优化、检测并实现与特定区域相关的服务; (3)生成用户画像&…

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

全面探索C语言内存模型:从底层原理到高效实践

引言 在计算机科学领域,C语言以其贴近硬件的特性著称,程序员可以直接操作内存地址和管理内存空间。内存模型是理解程序运行机制的关键,它决定了变量存储的位置、生命周期以及数据访问效率。本文将深入剖析C语言中的内存布局、内存分配策略以…

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

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

FANG:利用社交网络图进行虚假新闻检测

1.概述 社交媒体已逐渐演变成为公众获取信息的主要途径。然而,值得警惕的是,并非所有流通的信息都具备真实性。特别是在政治选举、疫情爆发等关键节点,带有恶意企图的虚假信息(即“假新闻”)可能会对社会秩序、公平性和理性思考造成严重的干扰。作为全球抗击COVID-19的一部…

webpack 之 splitChunks分包策略

webpack 之 splitChunks分包策略 一、为什么需要拆包二、拆包方式三、splitChunks介绍四、splitChunks 拆包策略五、总结 一、为什么需要拆包 随着应用程序规模的增长,JavaScript 文件的大小也越来越大。一个大的 JavaScript 文件会导致页面加载时间过长&#xff0…

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 提出针对在线地图不确定性带给轨迹预测的影响对应的解决方案。 在轨迹预测中,利用在…