【北京理工大学-Python 数据分析-2.1Matplotlib库入门】

news2024/12/24 3:57:36

Matplotlib库的使用

  • Matplotlib库由各种可视化类构成,内部结构复杂,受Matlab启发。
  • matplotlib.pyplot是绘制各类可视化图形的命令字库,相当于快捷方式。
import matplotlib.pyplot as plt
plt.plot([3,1,4,5,2])
plt.ylabel("Grade")
plt.savefig('test',dip=600) ##存储成PNG的格式,默认PNG格式,可以通过dip修改输出质量
plt.show()
import matplotlib.pyplot as plt
plt.plot([0,2,4,6,8],[3,1,4,5,2])##plt.plot(x,y)当由2各以上参数时,按照X轴和Y轴顺序绘制数据点。
plt.ylabel("Grade")
plt.axis([-1,10,0,6])##是X和Y轴的范围
plt.show()

pyplot的绘图区域:在全域绘图区域中创建一个分区体系,并定位到一个子绘图区域。

plt.subplot(nrows,ncols,plot_number)
plt.subplot(3,2,4)
plt.subplot(324)

在这里插入图片描述
举个栗子:

import numpy as np
import matplotlib.pyplot as plt 
def f(t):
    return np.exp(-t)*np.cos(2*np.pi*t)  ##定义一个能量衰减函数
a=np.arange(0.0,5.0,0.02)##随机生成一个数组a
plt.subplot(211)##将绘图区域分成2行一列,选择二第一个区域作图
plt.plot(a,f(a))
plt.subplot(2,1,2)
plt.plot(a,np.cos(2*np.pi*a),"r--")
plt.show()

在这里插入图片描述
plt.plot(x,y,format_string,kwargs)

  • x:x轴数据,列表或者数组,可选。
  • y:y轴数据,列表或数组。
  • format_string:控制曲线的格式字符串,可选。
  • kwargs:第二组或更多(x,y,format_string)
import matplotlib.pyplot as plt
import numpy as np
a=np.arange(10)
plt.plot(a,a*1.5,a,a*2.5,a,a*3.5,a,a*4.5) 
plt.show()

format_string:控制曲线的格式字符串,可选有颜色字符串、风格字符和标记字符组成。

颜色字符说明
‘b’蓝色
‘g’绿色
‘r’红色
‘c’青绿色
‘#008000’RGB某颜色
‘m’洋红色
‘y’黄色
‘k’黑色
‘w’白色
‘0.8’灰度值字符串

风格字符

风格字符说明
‘_’实线
‘__’破折线
‘_.’点划线
‘:’虚线
‘’ ’ ’无线条

当绘制多条曲线时,各条曲线的x不能省。

format_string:控制曲线的格式字符串,可选

标记字符说明
‘.’点标记
‘,’像素标记(极小点)
‘o’实心圈标记
‘v’倒三角标记
‘^’上三角标记
’>’右三角标记
‘<’左三角标记
‘1’下花三角标记
‘2’上花三角标记
‘3’左花三角标记
‘4’右花三角标记
‘s’实心方形标记
‘p’实心五角标记
‘*’星形标记
‘h’竖六边形标记
’H’横六边形标记
‘+’十字标记
‘x’x标记
‘D’菱形标记
‘d’瘦菱形标记
‘竖线’垂直线标记

小试牛刀

import matplotlib.pyplot as plt
import numpy as np
a=np.arange(10)
plt.plot(a,a*1.5,'g-o',a,a*2.5,'r-x',a,a*3.5,'-*',a,a*4.5,'b-.') ##第一条绿色的线是实心绿点,第二条线是红色X,第三条是蓝色*,第四条是深蓝._形状
plt.show()

关于plt.plot(x,y,formaat_string,**kwargs)中的参数

  • **kwargs:第二组或更多(x,y,format_string)
  • color:控制颜色,color=‘green’
  • linestyle:线条风格,linestyle=‘dashade’
  • marker:标记风格,marker=‘o’
  • markerfacecolor:标记颜色,markerfacecolor=‘blue’
  • markersize:标记尺寸,markersize=20

pyplot无法直接使用汉语,需要进行修改。
pyplot的中文显示:第一种方法:rcParams修改字体

import matplotlib.pyplot as plt
import matplotlib
matplotlib.rcParams['font.family']='SimHei'##使用rcParams将字体改为细黑
plt.plot([3,1,4,5,2])
plt.ylabbel("纵轴(值)
plt.savefig('test',dip=600)
plt.show()

rcParams函数对于字体和字号大小的修改

属性说明
‘font.family’用于显示字体的名字
‘font.style’字体风格,正常’normal’或斜体’italic’
font.size’字体大小,整数字号或者’large’、‘x-small’

常见的中文字体类型

中文字体说明
‘SimHei’中文黑体
‘Kaiti’中文楷体
‘LiSu’中文隶书
‘FangSong’中文幼圆
‘STSong’华文宋体

例子

import numpy as np
import matplotlib.pyplot as plt
import matplotlib
matplotlib.rcParams['font.family']='STsong'##使用这中修改的话,是全局字体格式的修改
matplotlib.rcParams['font.size']=20
a=np.arange(0.0,5.0,0.02)
plt.xlabel('横轴:时间')
plt.ylabel('纵轴:振幅')
plt.plot(a,np.cos(2*np.pi*a),'r--')
plt.show()

修改局部字体方法:
在有中文输出的地方,使用fonproperties()

import numpy as np
import matplotlib.pyplot as plt
a=np.arange(0.0,5.0,0.02)
plt.xlabel('横轴:时间',fontproperties='SimHei',fontsize=15)
plt.ylabel('纵轴:振幅',fontproperties='SimHei',fontsize=15)
plt.plot(a,np.cos(2*np.pi*a),'r--')
plt.show()

pyplot的文本显示函数

函数说明
plt.xlabel()对X轴增加文本标签
plt.ylabel()对Y轴增加文本信息
plt.title()对图形整体增加文本标签
plt.text()对任意位置增加文本
plt.annotate()在图形中增加带箭头的注释

实例

import numpy as np
import matplotlib.pyplot as plt
import re

a=np.arange(0.0,5.0,0.02)
plt.plot(a,np.cos(2*np.pi*a),'r--')
plt.xlabel('横轴:时间',fontproperties='SimHei',fontsize=15,color='green')
plt.ylabel('纵轴:振幅',fontproperties='SimHei',fontsize=15)

plt.title('正弦波实例 y=cos(2Πx)',fontproperties='SimHei',fontsize=25)###在python中使用常见的数学公式,可以结合LateX语法实现
plt.text(2,1,'μ=100',fontsize=15)
plt.axis([-1,6,-2,2])##在-1和6的地方展示该字符
plt.grid(True)
plt.show()

在这里插入图片描述
plt.annotate()函数的使用:

plt.annotate(S,xy=arrow_crd,xytest=text_crd,arrowprops=dict)
import numpy as np
import matplotlib.pyplot as plt
import re

a=np.arange(0.0,5.0,0.02)
plt.plot(a,np.cos(2*np.pi*a),'r--')
plt.xlabel('横轴:时间',fontproperties='SimHei',fontsize=15,color='green')
plt.ylabel('纵轴:振幅',fontproperties='SimHei',fontsize=15)
plt.title('正弦波实例 y=cos(2Πx)',fontproperties='SimHei',fontsize=25)###在python中使用常见的数学公式,可以结合LateX语法实现
plt.annotate('μ=100',xy=(2,1),xytext=(3,1.5),arrowprops=dict(facecolor='black',shrink=0.1,width=1.5))###使用plt.annotate()函数添加箭头指标
plt.axis([-1,6,-2,2])##在-1和6的地方展示该字符
plt.grid(True)
plt.show()

pyplot子绘图区域的设计
plt.subplot2grid()函数的使用

plt.subplot2grid(GridSpec,CurSpec,colspan=1,rowspan=1)
理念:设定网格,选中网格,确定选中行列区域数量,编号从0开始。

如对a2区域进行设计
在这里插入图片描述

plt.subplot2grid((3,3),(1,0),colspan=2)
##第一个参数是一个元组,表示把作图区域分为几个部分,在本例中表明分为339个部分,第二个参数显示的是选中当前区域第1行,第0列,colspan表示的是列宽的延长,此处表示延长2个单位。

如何用该函数选中每个区域并进行绘图?
plt.subplot2grid((3,3),(0,0),clospan=3)

plt.subplot2grid((3,3),(1,0),clospan=2)

plt.subplot2grid((3,3),(1,2),rawspan=2))
plt.subplotgrid((3,3),(2,0))

在这里插入图片描述
gridSpec类

import matplotlib.gridspec as gridspec
gs=gridspec.GridSpec(3,3)

ax1=plt.subplot(gs[0,:])
ax2=plt.subplot(gs[1,:-1])
ax3=plt.subplot(gs[1:,-1])
ax4=plt.subplot(gs[2,0])
ax5=plt.subplot(gs[2,1])

在这里插入图片描述

本章小结

pyplot()函数的画图基本操作:
1.基本参数、绘图、坐标轴等
2.线条的格式和风格
3.基本文本字符添加
4.subplot()和subplot2grid()对不同作图亚区的设计

在这里插入图片描述

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

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

相关文章

实战四十七:基于机器(逻辑回归随机森林线性回归)学习预测销售门店的商品销量详细教程(代码+数据)

项目概述: 使用时间序列预测来预测来Corporacin Favorita 的数据的商店销售额。 具体来说,构建一个模型来更准确地预测在不同 Favorita 商店销售的数千种商品的单位销售额。您将使用包含日期、商店和商品信息、促销和单位销售的易于理解的训练数据集来练习您的机器学习技能。…

基于java ssm springboot+VUE疫情防疫系统系统前后端分离设计和实现

基于java ssm springbootVUE疫情防疫系统系统前后端分离设计和实现 博主介绍&#xff1a;5年java开发经验&#xff0c;专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 超级帅帅吴 Java毕设项目精品实战案例《500套》 欢迎点赞 收藏 ⭐留…

Goland中使用GoPlantUml生成ER关系图

前言 Golang语言在近些年的开发语言中异军突起&#xff0c;在越来越多的公司项目中频繁出镜&#xff0c;也有越来越多的中间件选择使用Golang语言进行实现。正所谓源码之下无秘密&#xff0c;更友好地翻读源码对于理解功能特性以及后续使用非常有帮助&#xff0c;观摩学习源码也…

RMAN异地恢复-适用于数据库量比较大的场景

之前验证异地备份&#xff0c;只对数据库做个全备就备份恢复了&#xff0c;这种适用于数据库比较小的场景&#xff0c;因为如果数据库量大的话&#xff0c;备份&#xff0c;拷贝备份&#xff0c;恢复数据库的时间就比较长&#xff0c;停业务的时间就会比较长。 如果数据库比较…

JavaWeb知识汇总

文章目录前导一、数据库1.相关概念2.数据模型3.SQL4.约束5.数据库设计6.多表查询7.事务二、JDBC1.步骤2.JDBC事务管理3.数据库连接池三、Maven1.maven生命周期2.maven坐标详解3.依赖管理四、Mybatis1.快速入门2.Mapper代理开发3.核心配置文件4.参数传递5.注解开发五、HTML1.快速…

【进阶C语言】字符串函数+内存函数

文章目录一.字符串函数1.strlen功能&#xff1a;求字符串长度&#xff08;不包括\0&#xff09;函数模拟实现&#xff1a;2.1 strcmp功能函数模拟实现2.2 strncmp3.1 strcat功能函数模拟实现3.2strncat4.1 strcpy功能函数模拟实现4.2 strncpy5.strstr功能函数模拟实现6.strtok功…

论文《An Effective Consistency Constraint for Sequential Recommendation》

C2Rec: An Effective Consistency Constraint for SequentialRecommendation 这篇文章提出了序列推荐建模中一种有效的一致性约束防范&#xff0c;不用修改模型结构&#xff0c;仅仅添加2个额外的损失函数&#xff0c;就能达到非常好的效果。不像基于对比学习的方法&#xff0…

C++初阶--string

目录 string对象的创建&#xff1a; 遍历修改 const修饰的迭代器(只读)&#xff1a; 反向迭代器&#xff1a; reserve与resize&#xff1a; find&#xff0c;rfind&#xff0c;substr&#xff1a; insert&#xff1a; erase&#xff1a; getchar、getline&#xff1a; string对…

Java基础学习笔记(十一)—— 包装类与泛型

包装类与泛型1 包装类1.1 基本类型包装类1.2 Integer类1.3 自动装箱 / 拆箱2 泛型2.1 泛型概述2.2 泛型的用法2.3 类型通配符1 包装类 1.1 基本类型包装类 基本类型包装类的作用 将基本数据类型封装成对象 的好处在于可以在对象中定义更多的功能方法操作该数据 public stat…

✿✿✿JavaScript --- Ajax异步请求与JSONP 跨域请求

目 录 一、原生的Ajax请求 1.异步和同步 2.Ajax介绍 3.实现方式 (1)原生的JS实现方式&#xff08;了解&#xff09; (2)原生AJax发送Post请求&#xff0c;并携带请求参数 二、JQuery封装后的Ajax 1.JQeury实现方式 2. $.get()&#xff1a;发送get请求 3.$.post()&…

存储随笔2022年度最受欢迎文章榜单TOP15

回首2022感谢各位粉丝朋友的一路支持与陪伴存储随笔为您献上2022年度最受欢迎文章榜单TOP152023&#xff0c;一起向未来&#xff01;TOP1&#xff1a;固态硬盘SSD入门级白皮书主要从固态硬盘的原理/接口形态/寿命/使用场景/等不同角度&#xff0c;来对比不同的人群需要什么样的…

[linux]vim编辑器

&#x1f4df;作者主页&#xff1a;慢热的陕西人 &#x1f334;专栏链接&#xff1a;Linux &#x1f4e3;欢迎各位大佬&#x1f44d;点赞&#x1f525;关注&#x1f693;收藏&#xff0c;&#x1f349;留言 本博客主要讲解vim的使用和一些vim的常用操作&#xff0c;以及如何解决…

Flow 转 LiveData 后数据丢了,肿么回事?

翻译自&#xff1a; https://arkadiuszchmura.com/posts/be-careful-when-converting-flow-to-livedata/ 前言 最近我在负责一段代码库&#xff0c;需要在使用 Flow 的 Data 层和仍然依赖 LiveData 暴露 State 数据的 UI 层之间实现桥接。好在 androidx.lifecycle 框架已经提供…

C语言-指针进阶-函数指针数组应用-计算器(9.2)

目录 1. 函数指针 2. 函数指针数组 2.1函数指针数组的定义 2.2函数指针数组应用 3. 指向函数指针数组的指针 思维导图&#xff1a; 1. 函数指针 直接上代码&#xff1a; #include <stdio.h>void test() {printf("hehe\n"); }int main() {printf("%…

【Java】数组的复制、反转、查找、排序

数组的复制、反转、查找、排序 复制 其中最关键的一点是搞清楚为什么数组复制和基本数据类型复制不同&#xff0c;是什么导致了这样的不同&#xff1f; 先来看例子 package com.atguigu.java;public class ArrayTest3 {public static void main(String[] args) {//新建arr数…

【Java数据结构与算法】Day2-高级排序(希尔、归并、快速、计数)

✅作者简介&#xff1a;热爱Java后端开发的一名学习者&#xff0c;大家可以跟我一起讨论各种问题喔。 &#x1f34e;个人主页&#xff1a;Hhzzy99 &#x1f34a;个人信条&#xff1a;坚持就是胜利&#xff01; &#x1f49e;当前专栏&#xff1a;【Java数据结构与算法】 &#…

实验七:555定时器及其应用

答疑解惑用555定时器组成的单稳态电路中&#xff0c;若触发脉冲宽度大于单稳态持续时间&#xff0c;电路能否正常工作&#xff1f;如果不能&#xff0c;则电路应做如何修改&#xff1f;答:若触发脉冲宽度大于单稳态持续时间后&#xff0c;输出脉冲宽度将等于触发脉冲的低电平持…

【精】EditorConfig 小老鼠 跨编辑器 | IDE 保持一致的编码风格

【精】EditorConfig 小老鼠 跨编辑器 | IDE 保持一致的编码风格 &#x1f345;因发布平台差异导致阅读体验不同&#xff0c;将本文原编写地址贴出&#x1f339;&#xff1a;《【精】EditorConfig 小老鼠 跨编辑器 | IDE 保持一致的编码风格》 文章目录【精】EditorConfig 小老鼠…

实时数仓方案

2、实时数仓方案 2.1、为何需要实时数仓架构 随着数据量的增大&#xff0c;传统数据的方案在时效性上和数据维护上变得越来越困难。实时数仓架构应运而生。 具体方案落地上实时数仓有很多方案可以选择&#xff0c;不同的业务和应用场景到底应该选择哪种技术方案&#xff1f;…

React18新特性

React 团队在 2022 年 3 月 29 日正式发布了 React 的第 18 个版本。 在这篇文章里简单介绍 React 18 的新特性&#xff0c;React Concurrent Mode&#xff08;并发模式&#xff09;的实现&#xff0c;以及简要的升级指南。 New Features Automatic Batching 早在 React 18 之…