Matplotlib绘图-快速上手可视化工具

news2025/7/21 5:08:26

Matplotlib快速上手

  • 一、初识Matplotlib
    • 1.1 认识Matplotlib的图像结构
    • 1.2 绘制一个折线图
  • 二、给图像添加修饰
    • 2.1 自定义x的刻度
    • 2.2一图多线
    • 2.3一图绘制多个坐标系子图
      • 三、主流图形的绘制
    • 3.1绘制柱状图

一、初识Matplotlib

是Python最常见的可视化工具之一

1.1 认识Matplotlib的图像结构

容器层:

Canvas:画板,位于最低分层,用户一般接触不到。
Figure:画布,建立在画板之上,相当于一个设计图纸。
Axes: 绘图区,建立在画之上。

辅助显示层:

是Axes(绘图区)中除了根据数据绘制出的图像以外的内容
如x,y坐标轴,边框线,绘图标题,网格线等。

图像层:

是指Axes内通过plot、scatter、bar、histogram、pie等函数根据数据绘制出的图形

1.2 绘制一个折线图

使用plt.plot(x,y)绘制折线图:

#调用matplotlib中的pyplot的绘图函数plot()方法进行绘图
#生成画布figure,然后在绘图区axes绘图

#在jupyter notebook中启用对matploytlib的支持
%matplotlib inline
#导包并将pyplot起别名为plt
from matplotlib import pyplot as plt
#添加数据
x = range(1,8)
y = [12,15,13,16,11,12,19]
#绘图
plt.plot(x,y)
#展示绘图
plt.show()

在这里插入图片描述
将下列代码加入上面代码给图像加点料:

参数含义:
color:设置折线颜色
alpha:设置折线透明度
linestyle:设置折线样式,支持’-', ‘–’, ‘-.’, ‘:’
linewidth: 设置折线的粗细
marker: 设置拐点的样式

#自定义折线的颜色,粗细以及拐点
plt.plot(x,y,color='red',alpha=0.5,linestyle='-',linewidth=3,marker='*')

在这里插入图片描述
增加标题的描述信息:

#有可能不显示中文,添加这行代码
plt.rcParams['font.sans-serif'] = ['SimHei']
#添加坐标轴和标题
plt.plot(x,y)
plt.xlabel('x轴坐标')
plt.ylabel('y轴坐标')
plt.title('我是图的标题')

在这里插入图片描述

二、给图像添加修饰

2.1 自定义x的刻度

xticks参数:
xticks(locs,[labels],kwargs)
locs:是数组参数,表示x-axis的刻度线显示
标注的地方**,就是ticks的地方
第二个参数也是数组参数,表示locs数组表示的位置添加的标签,也就标签的值。

#导包
from matplotlib import pyplot as plt
import random
x=range(1,61) 
y=[random.randint(15,18) for i in x]# 利用random.randint()函数在15-18之间取值60次
plt.figure(figsize=(20,8),dpi=80)
plt.plot(x,y)
#设置x刻度
x_ticks = ["10点{}分".format(i) for i in x] 
plt.xticks(list(x)[::3],x_ticks[::3],rotation=45) #[::3]从头到尾,间隔为3.
plt.show()

plt.xticks(list(x)[::3],x_ticks[::3],rotation=45)
list(x)[::3] :第一个参数,根据x的个数,调整x轴的疏密程度
x_ticks[::3]:第二个参数,还是用x的值作为刻度的标签,但是只获取了其中的一部分,为了确保第一个参数和第二个参数个数相同
rotation=45:默认刻度是横向的,这个是对文字进行旋转45度。

在这里插入图片描述

2.2一图多线

其实就是在一张画布上画两次,主要是学习一下如何区分开两条线。也就是增加描述信息

#导包
from matplotlib import pyplot as plt
import random
#准备数据
x=range(1,61)
print(x)
#手动模拟山东和北京的气温
y_shandong = [random.randint(15,18)for i in x]
y_beijing = [random.randint(13,16)for i in x]
#绘制图形画布
plt.figure(figsize=(20,8),dpi=80)
plt.plot(x,y_shandong,label='山东',linestyle='--',color='red')
plt.plot(x,y_beijing,label='北京',linestyle='-',color='green')
#增加描述信息
plt.title("山东和北京的气温")
plt.xlabel("时间")
plt.ylabel("温度")
#设置x刻度,上个图的基础
x_ticks = ["10点{}分".format(i) for i in x] 
plt.xticks(list(x)[::3],x_ticks[::3],rotation=45)
plt.show()

在这里插入图片描述
plt.grid设置网格线:把代码加到上一个代码plt.show()前

plt.grid(alpha=1,linestyle='-.')

legend()用来显示图例,图例中的文字需要在绘制方法中添加

plt.legend(loc=0)

添加这两行代码所示图像:
在这里插入图片描述

2.3一图绘制多个坐标系子图

subplot方法参数:

plt.subplot(nrows,ncols,index)创建子图
nrows:指定数据图区域分成多少行
ncols:指定将数据图区域分成多少列
index:指代获取第几个区域

#设置画布
fig,axes=plt.subplots(nrows=2,ncols=2,figsize=(20.,8),dpi=80)

在这里插入图片描述
将多个子图画在一张图上:

#导包
from matplotlib import pyplot as plt
import numpy as np
#准备数据
x=[1,10,14,16,17,18]
y=np.array([3,4,6,2,1,5])
#准备画布
plt.figure(figsize=(20.,8),dpi=80)
#绘制第一个子图
plt.subplot(2,2,1)
plt.plot(y)
plt.title("Axes1")
#绘制第二个子图
plt.subplot(2,2,2)
plt.plot(y**3)
plt.title("Axes2")
#绘制第三个子图
plt.subplot(2,2,3)
plt.plot(y**3)
plt.title("Axes3")
plt.show()

在这里插入图片描述

三、主流图形的绘制

3.1绘制柱状图

柱状图:利用柱子的高度,反应数据的差异

plt.bar(x,heigh,wight,color)
x:记录x轴上的标签
height:记录柱子高度
wight:设置柱子宽度
color:设置柱子的颜色,传入颜色列表[‘red’,‘blue’,‘black’,‘green’,‘gray’]等多种颜色

#在jupyter notebook中启用对matploytlib的支持
%matplotlib inline
#中文字体
plt.rcParams['font.sans-serif'] = ['SimHei']
#导包并将pyplot起别名为plt
from matplotlib import pyplot as plt
#准备数据
a=['流浪地球','疯狂的外星人','飞驰人生','大黄蜂','新喜剧之王']
b=[38.13,19.85,14.89,11.36,5.93]
#准备画布
plt.figure(figsize=(20.,8),dpi=80)
plt.bar(a,b)
plt.show()

在这里插入图片描述

设置宽度和颜色属性:

plt.bar(a,b,width=0.3,color=['red','#7CFC00','yellow'])

在这里插入图片描述

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

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

相关文章

csrf跨站请求伪造

文章目录csrf跨站请求伪造1、前戏2、csrf校验2.1、from表单如何符合校验2.2、ajax如何符合校验3、csrf相关装饰器FBVCBVcsrf跨站请求伪造 1、前戏 """ 钓鱼网站搭建一个跟正规网站一摸一样的界面(中国银行)用户进入到我们的网站&#x…

HyperLynx(三十)高速串行总线仿真(二)

高速串行总线仿真(二) 仿真实例 1.探索多层板中的PCI-E串行通道 2.设置叠层以减小损耗 3.分析通道的不同配置对损耗的影响 4.检测驱动端规范 5.检查接收器规范 6.通过仿真得出整个通道的驱动约束限制 1.探索多层板中的PCI-E串行通道 在本节练习中&…

人工智能学习:Microsoft COCO数据集读取(7)

Microsoft COCO(Common Objects in Context)是微软研发维护的一个大型的数据集。包含了30多万张图片和91个目标分类。可用于目标识别(Object Detection)、场景感知(Penoptic Segmentation)、语义分割&#…

【数据结构】——单链表

目录 1.链表 1.1 链表的概念及结构 1.2 链表的分类 1. 单向或者双向 2. 带头或者不带头 3. 循环或者非循环 1.3实现一个单链表(无头单项非循环链表增删查改的实现) 1.链表结构的创建 2.创建一个节点 3.创建一个链表 4.打印链表 5…

解读JVM级别本地缓存Caffeine青出于蓝的要诀 —— 缘何会更强、如何去上手

大家好,又见面了。 在前面的几篇文章中,我们一起聊了下本地缓存的动手实现、本地缓存相关的规范等,也聊了下Google的Guava Cache的相关原理与使用方式。比较心急的小伙伴已经坐不住了,提到本地缓存,怎么能不提一下“地…

软考 - 程序语言设计

程序设计语言基本概述 程序设计语言是为了书写计算机程序而人为设计的符号语言,用于对计算过程进行 描述、组织和推导。 低级语言:机器语言(计算机硬件只能识别0和1的指令序列),汇编语言。 高级语言:功能…

从http请求过程分析为何不同业务的http请求都可以使用默认的缺省端口80,8080等

问题: http上传请求时url地址中一般无显示指定端口号,这时会使用默认的80端口;但是可能不止一个业务需要用到http请求,技术上web服务端那边肯定无法根据业务逻辑的数据格式去分别解析区分它们;因为业务是事先无法预知的&#xff…

【Spring Cloud实战】Consul服务注册与发现

个人博客上有很多干货,欢迎访问:https://javaxiaobear.gitee.io/ 1、简介 https://www.consul.io/docs/intro Consul is a service mesh solution providing a full featured control plane with service discovery, configuration, and segmentation f…

Flink-经典案例WordCount快速上手以及安装部署

2 Flink快速上手 2.1 批处理api 经典案例WordCount public class BatchWordCount {public static void main(String[] args) throws Exception {//1.创建一个执行环境ExecutionEnvironment env ExecutionEnvironment.getExecutionEnvironment();//2.从文件中读取数据//得到…

[附源码]java毕业设计基于Web留学管理系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

Linux下C++开发笔记--编译静态链接库和动态链接库

目录 1--前言 2--生成静态链接库 3--生成动态链接库 1--前言 承接上一篇Linux下C开发笔记(g命令的使用笔记),依据教程记录学习笔记。 2--生成静态链接库 ①回顾项目结构: ​ ②汇编,生成swap.o文件 cd srcg sw…

基于simulink的牛鞭效应模型建模与仿真

欢迎订阅《FPGA学习入门100例教程》、《MATLAB学习入门100例教程》 目录 一、理论基础 二、核心程序 三、测试结果 一、理论基础 牛鞭效应,是经济学中的一个术语,它也被称为需求放大效应。牛鞭效应指的是当信息流从最终客户端传输到原始供应商时&…

9.行为建模(Behavioral modeling)

9.1行为模型概述 Verilog行为模型包含控制模拟和操纵先前描述的数据类型变量的过程语句。这些语句包含在程序中。每个过程都有一个与其关联的活动流。活动开始于initial和always语句。每个initial语句和每个always语句都会启动一个单独的活动流。所有活动流都是并发的&…

【机器学习】线性分类【上】广义线性模型

主要参考了B站UP主“shuhuai008”,包含自己的理解。 有任何的书写错误、排版错误、概念错误等,希望大家包含指正。 由于字数限制,分成两篇博客。 【机器学习】线性分类【上】广义线性模型 【机器学习】线性分类【下】经典线性分类算法 1. 线…

C语言实现线索化二叉树(先序、中序、后序)

》》如何用C语言构建一颗二叉树? 第一种方法: ThreadTree A = (ThreadTree)malloc(sizeof(ThreadNode));A->data = { A };A->ltag = 0;A->rtag = 0;A->lchild = NULL;A->rchild = NULL;ThreadTree B = (ThreadTree)malloc(sizeof(ThreadNode));B->data =…

【python自动化】使用关键字驱动实现appium自动化

在写app自动化用例时,尝试用了关键字驱动的框架 记录一下自己对关键字驱动的理解: 1 关键字驱动指将用例步骤的操作封装为关键字,比如定位元素、点击元素、获取元素属性值、断言,这些都是操作关键字 2 在excel中按照用例执行过程&…

Java8方法引用和Lambda表达式实例源码+笔记分享

前言 Java8的lambda表达式,通过lambda表达式可以替代我们之前写的匿名内部类来实现接口。lambda表达式本质是一个匿名函数。 1、lambda表达式本质是一个匿名函数。 1 package com.demo.main;2 3 public class LambdaMain {4 5 public static void main(String[…

环辛炔衍生物DBCO-NH2,amine,Acid,NHS,Maleimide无铜点击反应

DBCO对叠氮化物具有非常高的反应选择性,可用于修饰生物分子,包括肽、蛋白质、酶、活细胞、整个生物体等。在生理温度和pH值范围内,DBCO基团不与胺或羟基反应,DBCO也与叠氮化物基团发生反应DBCO也称为ADIBO(氮杂二苯并环…

2022.11.15-二分图专练

目录 50 years, 50 colors(HDU-1498) Uncle Toms Inherited Land*(HDU-1507) Matrix(HDU-2119) Arbiter(HDU-3118) [ZJOI2007]矩阵游戏(黑暗爆炸1059) Jimmy’s Assignment(HDU-1845) 50 years, 50 colors(HDU-1498) 原题链接:传送门 题意:一个n*n的矩阵中,…

第四章. Pandas进阶—数据格式化

第四章. Pandas进阶 4.1 数据格式化 1.设置小数位数(round函数) DataFrame.round(decimals0,*args,**kwargs)参数说明: decimals:用于设置保留的小数位数 args,kwargs:附加关键字的参数 返回值:返回DataFrame对象 1).示例&#…