可视化主要是以图像来展示数据间的关系,
常见的图形种类有
今天我们要来了解折线图,散点图,条形图,直方图,饼图和器特点。认识Matplotlib的图像结构,并以Matplotlib绘制折线图为例来掌握设置辅助显示层;此外,用Matplotlob设置辅助显示层,内容还增添拓展部份,平时用到的不是很多,作为了解即可。
特点:能够显示数据的变化趋势,反映事物的变化情况。(变化)
特点:判断变量之间是否存在数量关联趋势,展示离群点(分布规律)
特点:绘制连离散的数据,能够一眼看出各个数据的大小,比较数据之间的差别。(统计/对比)
特点:绘制连续性的数据展示一组或者多组数据的分布状况(统计)
特点:分类数据的占比情况(占比)
Matplotlib
,它是一个Python 2D绘图库,它可以在各种平台上以各种硬拷贝格式和交互式环境生成出具有出版品质的图形。只需几行代码即可生成绘图,直方图,条形图,散点图等。
# 导入模块import matplotlib.pyplot as plt# 在jupyter中执行的时候显示图片#matplotlib inline# 传入x和y, 通过plot画图plt.plot([3, 1, 7], [4, 5, 6])# 在执行程序的时候展示图形plt.show()
传入x和y时,括号中的第一个列表是x轴上的值,第二个列表是y上的值。
运行结果:
如何应用呢?
在学习Matplotlib的过程中,大家一定会遇到这样那样的问题,
比如说
,
因此对于Matplotlib的图像结构组成我们要有一定的了解。通常情况下,我们可以将一副Matplotlib图像分成三层结构:
主要包括Canvas(画板)底层、Figure(画布)用户操作第一层设置画布的大小和背景颜色、Axes(绘图区)独立的坐标系;
主要包括Axis(轴)、Spines(边框线)、Tick(坐标轴刻度)、Grid(网格线)、Legend(图例说明)、Title(标题)等,该层可通过set_axis_off()或set_frame_on(False)等方法设置不显示。
该层的设置可使图像显示更加直观更加容易被用户理解,但又并不会对图像产生实质的影响。
即通过plot、hist、contour、scatter等方法绘制的图像。
代码解析:
x轴数值的产生使用range函数,开始数字是1,结束时7,不包含8。
from matplotlib import pyplot as pltx = range(1,8) # x轴的位置y = [17, 17, 18, 15, 11, 11, 13]# 传入x和y, 通过plot画折线图plt.plot(x, y, color='red',alpha=0.5,linestyle='--',linewidth=3)plt.show()'''基础属性设置color='red' : 折线的颜色alpha=0.5 : 折线的透明度(0-1)linestyle='--' : 折线的样式linewidth=3 : 折线的宽度''''''线的样式- 实线(solid)-- 短线(dashed)-. 短点相间线(dashdot):虚点线(dotted)'''
运行结果:
折点形状选择:
标记maker 描述‘o’ 圆圈 ‘.’ 点‘D’ 菱形 ‘s’ 正方形‘h’ 六边形1 ‘*’ 星号‘H’ 六边形2 ‘d’ 小菱形‘_’ 水平线‘v’ 一角朝下的三角形‘8’ 八边形‘<’ 一角朝左的三角形‘p’ 五边形‘>’ 一角朝右的三角形‘,’ 像素 ‘^’ 一角朝上的三角形‘+’ 加号 ‘| ‘ 竖线‘None’,’’,’ ‘ 无 ‘x’ X
from matplotlib import pyplot as pltimport randomx = range(2,20,2) # x轴的位置y = [random.randint(15, 30) for i in x]# 设置图片的大小'''figsize:指定figure的宽和高,单位为英寸;dpi参数指定绘图对象的分辨率,即每英寸多少个像素,缺省值为80 1英寸等于2.5cm,A4纸是 21*30cm的纸张'''# 设置画布对象plt.figure(figsize=(20,8),dpi=80)plt.plot(x,y) # 传入x和y, 通过plot画图# 保存(注意:要放在show的上面,plt.show()会释放figure资源,如果在显示图像之后保存图片将只能保存空图片。)plt.savefig('./t1.png')#./表示放在当前python文件的目录plt.show()# 图片的格式也可以保存为svg这种矢量图格式,这种矢量图放在网页中放大后不会有锯齿# plt.savefig('./t1.svg')
x轴
的数值,使用range(),step为2,不包括20;
y轴
的数值是一个列表表达式,由随机数产生,import random之后,randint产生随机整数,范围是15-30。“for i in x”是一个循环,作用是表明y轴数值产生随机数的次数,次数由x轴上数值的个数决定。
运行结果:
在设置Y轴标签时,标签数值的取值范围range(min(y),max(y)+1),这里min()和max()时是函数,分别取y中的最小和最大值,由于range函数不包集合右边的值,故加1
。plt.yticks(range(min(y),max(y)+1),y_ticks_label)中,y_ticks_label表示y轴刻度产生的次数。
matplotlib只显示英文,无法显示中文,需要修改matplotlib的默认字体。通过模块font_manager
使用中文字体可以解决。
以表示两个小时内心脏每分钟跳动变化为例,x轴需要加上标题“时间”,y轴“次数”,图像标题“每分钟跳动次数”,如下图所示:
# 方法add_subplot:给figure新增子图# 这里引进的科学计算库Numpy,把它看作一个[列表]即可,目的是要使用log方法画log对数函数。import numpy as npfrom matplotlib import pyplot as pltx = np.arange(1, 100) #与range()相同#新建figure画布对象,三个坐标轴(子图)建立在同一个画布上fig=plt.figure(figsize=(20,10),dpi=80)#利用画布对象,在上面放置三个坐标系#新建子图1ax1=fig.add_subplot(2,2,1)ax1.plot(x, x)#新建子图2ax2=fig.add_subplot(2,2,2)ax2.plot(x, x ** 2) #x的二次方,如果是x**3是x的三次方ax2.grid(color='r', linestyle='--', linewidth=1,alpha=0.3)#新建子图3ax3=fig.add_subplot(2,2,3)ax3.plot(x, np.log(x))plt.show()
在这里解释一下add_subplot(2,2,1)里的参数的含义。在一个画布上放置三个图,需要排列位置。
首先将一张图,分成两列,再分成两行,总共划分出四个格子,子图1按照从左到右从上到下的顺序放在第一个格子里。
运行结果:
Matplotlib
,自己编数据设计样式,绘制一幅自己的折线图。请添加__小编__,回复关键词:[数据可视化],
-今日互动-
你学会了吗?欢迎文章下方留言互动
如果对你有帮助的话
❤️来个「转发朋友圈」和「在看」,是最大的支持❤️
原网址: 访问
创建于: 2023-01-12 16:38:10
目录: default
标签: 无
未标明原创文章均为采集,版权归作者所有,转载无需和我联系,请注明原出处,南摩阿彌陀佛,知识,不只知道,要得到
java windows火焰图_mob64ca12ec8020的技术博客_51CTO博客 - 在windows下不可行,不知道作者是怎样搞的 监听SpringBoot 服务启动成功事件并打印信息_监听springboot启动完毕-CSDN博客 SpringBoot中就绪探针和存活探针_management.endpoint.health.probes.enabled-CSDN博客 u2u转换板 - 嘉立创EDA开源硬件平台 Spring Boot 项目的轻量级 HTTP 客户端 retrofit 框架,快来试试它!_Java精选-CSDN博客 手把手教你打造一套最牛的知识笔记管理系统! - 知乎 - 想法有重合-理论可参考 安宇雨 闲鱼 机械键盘 客制化 开贴记录 文本 linux 使用find命令查找包含某字符串的文件_beijihukk的博客-CSDN博客_find 查找字符串 ---- mac 也适用 安宇雨 打字音 记录集合 B站 bilibili 自行搭建 开坑 真正的客制化 安宇雨 黑苹果开坑 查找工具包maven pom 引用地 工具网站 Dantelis 介绍的玩轴入坑攻略 --- 关于轴的一些说法 --- 非官方 ---- 心得而已 --- 长期开坑更新 [本人问题][新开坑位]关于自动化测试的工具与平台应用 机械键盘 开团 网站记录 -- 能做一个收集的程序就好了 不过现在没时间 -- 信息大多是在群里发的 - 你要让垃圾佬 都去一个地方看难度也是很大的 精神支柱 [超级前台]sprinbboot maven superdesk-app 记录 [信息有用] [环境准备] [基本完成] [sebp/elk] 给已创建的Docker容器增加新的端口映射 - qq_30599553的博客 - CSDN博客 [正在研究] Elasticsearch, Logstash, Kibana (ELK) Docker image documentation elasticsearch centos 安装记录 及 启动手记 正式服务器 39 elasticsearch 问题合集 不断更新 6.1.1 | 6.5.1 两个版本 博客程序 - 测试 - bug记录 等等问题 laravel的启动过程解析 - lpfuture - 博客园 OAuth2 Server PHP 用 Laravel 搭建带 OAuth2 验证的 RESTful 服务 | Laravel China 社区 - 高品质的 Laravel 和 PHP 开发者社区 利用Laravel 搭建oauth2 API接口 附 Unauthenticated 解决办法 - 煮茶的博客 - SegmentFault 思否 使用 OAuth2-Server-php 搭建 OAuth2 Server - 午时的海 - 博客园 基于PHP构建OAuth 2.0 服务端 认证平台 - Endv - 博客园 Laravel 的 Artisan 命令行工具 Laravel 的文件系统和云存储功能集成 浅谈Chromium中的设计模式--终--Observer模式 浅谈Chromium中的设计模式--二--pre/post和Delegate模式 浅谈Chromium中的设计模式--一--Chromium中模块分层和进程模型 DeepMind 4 Hacking Yourself README.md update 20211011
Laravel China 简书 知乎 博客园 CSDN博客 开源中国 Go Further Ryan是菜鸟 | LNMP技术栈笔记 云栖社区-阿里云 Netflix技术博客 Techie Delight Linkedin技术博客 Dropbox技术博客 Facebook技术博客 淘宝中间件团队 美团技术博客 360技术博客 古巷博客 - 一个专注于分享的不正常博客 软件测试知识传播 - 测试窝 有赞技术团队 阮一峰 语雀 静觅丨崔庆才的个人博客 软件测试从业者综合能力提升 - isTester IBM Java 开发 使用开放 Java 生态系统开发现代应用程序 pengdai 一个强大的博主 HTML5资源教程 | 分享HTML5开发资源和开发教程 蘑菇博客 - 专注于技术分享的博客平台 个人博客-leapMie 流星007 CSDN博客 - 舍其小伙伴 稀土掘金 Go 技术论坛 | Golang / Go 语言中国知识社区
最新评论