机器学习 | 掌握Matplotlib的可视化图表操作

        Matplotlib是python的一个数据可视化库,用于创建静态、动态和交互式图表。它可以制作多种类型的图表,如折线图、散点图、柱状图、饼图、直方图、3D 图形等。以渐进、交互式方式实现数据可视化。当然博主也不能面面俱到的讲解到所有内容,详情请参考:官网

可视化是在整个数据挖掘的关键辅助工具,可以清晰的理解数据,从而调整我们的分析方法。将数据进行可视化,更直观的呈现。使数据更加客观、更具说服力。终端执行如下命令安装:

pip install matplotlib -i https://pypi.mirrors.ustc.edu.cn/simple

使用Matplotlib画图可以参考如下步骤:

# 导入matplotlib.pyplot模块
import matplotlib.pyplot as plt# 图形绘制
plt.figure(figsize=(), dpi=) # 创建画布,figsize:图的长度;dpi:图的清晰度
plt.plot(x,y) # 绘制图像
plt.show() # 显示图像

基础折线显示:接下来我们工具Matplotlib画图步骤,使用jupyter notebook工具进行实现:

import matplotlib.pyplot as plt# 准备数据
x = range(60)
y = [random.uniform(15, 18) for i in x] # 生成一个长度为 60 的随机浮点数列表,用于模拟某个过程在 60 分钟内的变化情况。# 创建画布
plt.figure(figsize=(20,4),dpi=100)# 绘制图像
plt.plot(x, y)#图像显示
plt.show()

自定义刻度:如果我们想给x和y轴添加自定义刻度的话,可以采用如下的方式进行:

import matplotlib.pyplot as plt
import random
from pylab import mpl
# 设置显示中文字体
mpl.rcParams["font.sans-serif"] = ["SimHei"]
# 设置正常显示符号
mpl.rcParams["axes.unicode_minus"] = False# 准备数据
x = range(60)
y = [random.uniform(15, 18) for i in x] # 生成一个长度为 60 的随机浮点数列表,用于模拟某个过程在 60 分钟内的变化情况。# 创建画布
plt.figure(figsize=(20,4),dpi=100)# 绘制图像
plt.plot(x, y)# 添加 x,y轴刻度
x_ticks_label = ["11点{}分".format(i) for i in x]
y_ticks = range(40)
# 修改x,y轴坐标刻度显示
plt.xticks(x[::5], x_ticks_label[::5])
plt.yticks(y_ticks[::5])#图像显示
plt.show()

添加网格显示: 可以采用如下的步骤:

# 添加网格显示
plt.grid(True, linestyle = "--", alpha = 0.5) # linestyle 表示虚线 # alpha 表示透明度

添加描述信息:添加x轴、y轴描述信息及标题,通过fontsize参数可以修改图像中的字体大小

# 添加描述信息
plt.xlabel("时间", fontsize=15)
plt.ylabel("温度", fontsize=15)
plt.title("中午11点-12点某城市温度变化", fontsize=20)

图像保存:如果想对图像进行保存的话,可以采用如下的操作进行:

# 图像保存
plt.savefig("./test.png")

一个坐标轴绘制多个图像: 很简单,在准备多个数据之后绘制多次图像即可完成

# 准备数据
x = range(60)
y_shanghai = [random.uniform(15, 18) for i in x] 
y_beijin = [random.uniform(1,3) for i in x]# 创建画布
plt.figure(figsize=(20,4),dpi=100)# 绘制图像
plt.plot(x, y_shanghai)
plt.plot(x, y_beijin)

设置图形风格:我们可以通过如下的变量来设置图像的风格:

颜色字符:

r(红色)、g(绿色)、b(蓝色)、w(白色)、c(青色)、m(养红)、y(黄色)、k(黑色)

风格字符:

-(实线)、--(虚线)、-.(点划线)、:(点虚线)、' '(空格)

# 绘制图像
plt.plot(x, y_shanghai)
plt.plot(x, y_beijin, color='r', linestyle='--')

显示图例:通过显示图例将图形代表的含义表示出来:

# 绘制图像
plt.plot(x, y_shanghai, label="上海")
plt.plot(x, y_beijin, color='r', linestyle='--', label="北京")# 显示图例
plt.legend(loc="best")

当然图例的位置我们可以通过设置loc的值来进行改变:

Stringbestupper rightupper leftlower leftlower rightrightcenter leftcenter rightlower centerupper centercenter
Code012345678910

多个坐标系实现绘图:通过如下代码我们可以实现多个坐标轴实现绘图:

import matplotlib.pyplot as plt
import random
from pylab import mpl
# 设置显示中文字体
mpl.rcParams["font.sans-serif"] = ["SimHei"]
# 设置正常显示符号
mpl.rcParams["axes.unicode_minus"] = False# 准备数据
x = range(60)
y_shanghai = [random.uniform(15, 18) for i in x] 
y_beijin = [random.uniform(1,3) for i in x]# 创建画布
fig, axes = plt.subplots(nrows=1, ncols=2, figsize=(20, 4), dpi=100)
# 绘制图像
axes[0].plot(x, y_shanghai, label="上海")
axes[1].plot(x, y_beijin, color='r', linestyle='--', label="北京")# 显示图例
axes[0].legend(loc=0)
axes[1].legend(loc=0)# 添加 x,y轴刻度
x_ticks_label = ["11点{}分".format(i) for i in x]
y_ticks = range(40)
# 修改x,y轴坐标刻度显示 
axes[0].set_xticks(x[::5])
axes[0].set_yticks(y_ticks[::5])
axes[0].set_xticklabels(x_ticks_label[::5])
axes[1].set_xticks(x[::5])
axes[1].set_yticks(y_ticks[::5])
axes[1].set_xticklabels(x_ticks_label[::5])# 添加网格显示 
axes[0].grid(True, linestyle = "--", alpha = 0.5) 
axes[1].grid(True, linestyle = "--", alpha = 0.5) # 添加描述信息
axes[0].set_xlabel("时间", fontsize=15)
axes[0].set_ylabel("温度", fontsize=15)
axes[0].set_title("中午11点-12点某城市温度变化", fontsize=20)
axes[1].set_xlabel("时间", fontsize=15)
axes[1].set_ylabel("温度", fontsize=15)
axes[1].set_title("中午11点-12点某城市温度变化", fontsize=20)#图像显示
plt.show()

折线图实现:通过numpy实现折线图的方法:

import matplotlib.pyplot as plt
import numpy as np# 准备数据
x = np.linspace(-10, 10, 1000)
y = np.sin(x)# 创建画布
plt.figure(figsize=(20, 4), dpi=100)# 绘制图像
plt.plot(x, y)# 添加网格显示
plt.grid()# 显示图像
plt.show()

常见图形绘制:接下来就其他常见的图形进行一个简单的代码演示:

首先我们先导入我们的库,接下来借助matplotlib库来实现各种图形的绘制

import matplotlib.pyplot as plt
from pylab import mpl
# 设置显示中文字体
mpl.rcParams["font.sans-serif"] = ["SimHei"]
# 设置正常显示符号
mpl.rcParams["axes.unicode_minus"] = False
# 准备数据(散点图)
x = range(60)
y = [random.uniform(15, 18) for i in x] # 生成一个长度为 60 的随机浮点数列表,用于模拟某个过程在 60 分钟内的变化情况。
# 创建画布
plt.figure(figsize=(20,4),dpi=100)
# 绘制图像
plt.plot(x, y)
#图像显示
plt.show()

# 准备数据(柱状图)
movie_name = ['雷神3','正义联盟','误杀','全球风暴','雷神3','正义联盟','误杀','全球风暴'] # 电影名字
x = range(len(movie_name)) # 恒坐标
y = [12,21,21,31,12,21,21,31]# 票房数据
# 创建画布
plt.figure(figsize=(20, 4), dpi=100)
# 绘制图像
plt.bar(x, y, color=['b','r','g','y','c','m','k','g'], width=0.4)
# x轴坐标显示
plt.xticks(x, movie_name)
# 添加网格
plt.grid(linestyle="--", alpha=0.8)
# 添加标题
plt.title("电影票房收入对比", fontsize=20)
# 图像显示
plt.show()

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

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

相关文章

【极数系列】Flink 初相识(01)

# 【极数系列】Flink 初相识(01) 引言 Flink官网:https://flink.apache.org/ Flink版本:https://flink.apache.org/blog/ Flink文档:https://ci.apache.org/projects/flink/flink-docs-release-1.12/ Flink代码库…

轻松互换文件夹名,高效批量改名!高手工具助您一臂之力!

在日常工作中,我们经常需要处理大量的文件夹,有时候需要将文件夹名称互换或进行批量改名。这时,一款高效、实用的高手工具就能派上用场。它不仅能帮助您轻松实现文件夹名互换,还能快速批量改名,让您的工作更加高效、轻…

Unity - 角色控制

Test_05 角色控制 创建一个3D对象作为角色,添加 “CharacterController” 组件来控制角色移动,绑定脚本"PlayerControl"。 PlayerControl public class PlayerControl : MonoBehaviour {private CharacterController player;void Start(){p…

RabbitMQ系列之入门级

🎉🎉欢迎来到我的CSDN主页!🎉🎉 🏅我是君易--鑨,一个在CSDN分享笔记的博主。📚📚 🌟推荐给大家我的博客专栏《RabbitMQ系列之入门级》。🎯&#x…

防火墙基础1

防火墙简绍 什么是防火墙? 状态防火墙工作原理? 防火墙如何处理双通道协议? 防火墙如何处理nat? 路由交换终归结底是连通性设备。 网络在远古时期没有防火墙大家都是联通的,any to any。 防御对象: 授权用户 非授权用户 防火墙是一种隔离…

存储开发入门到进阶,这几本书一定要看!!

有些朋友是已经深耕存储多年,有的朋友是刚刚入门、或者说有兴趣但是迟迟不得入门。以下从笔者的经验出发,向大家推荐几本书,可以比较系统的补充一些编程的内功和存储的基础知识,向你展示一条存储通关之路。 语言 语言是第一个要…

55. 跳跃游戏 - 力扣(LeetCode)

题目描述 给定一个非负整数数组,你最初位于数组的第一个位置。 数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个位置。 题目示例 输入:nums [2,3,1,1,4] 输出:true 解释:可以先跳 1 步&#x…

LFU算法

LFU算法 Least Frequently Used(最不频繁使用) Leetcode有原题,之前手写过LRU,数据结构还是习惯于用java实现,实现是copy的评论题解。 题解注释写的很清楚 大致就是说LFUCache类维护一个存放node的map,同…

基于springboot+vue的墙绘产品展示交易平台系统(前后端分离)

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容:毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 研究背景…

微信小程序商城注册是个人还是公司的?

随着移动互联网的飞速发展,微信小程序已经成为了商家们开展电子商务的重要平台之一。微信小程序商城以其便捷的操作、庞大的用户基础和较低的成本投入,吸引了众多商家的关注。然而,对于想要进入这一领域的创业者来说,一个基础性的…

C# CefSharp 输入内容,点击按钮,并且滑动。

前言 帮别人敲了个Demo,抱试一试心态,居然成功了,可以用。给小伙伴们看看效果。 遇到问题 1,input输入value失败,里面要套了个事件,再变换输入value。后来用浏览器开发工具,研究js代码,太难了&a…

Authorization Failed You can close this page and return to the IDE

一.问题描述 注册JetBrains成功,并且通过了学生认证,但在activate pycharm时,却显示Authorization Failed You can close this page and return to the IDE如上图 二.原因: 可能是因为之前使用了破解版pycharm 三.解决方法&am…

GNSS技术与无人机协同:开启未来交通新篇章

随着科技的不断发展,全球导航卫星系统(GNSS)技术与无人机技术的协同应用成为未来交通系统的引人瞩目的新方向。创新微公司在这一领域的技术创新为实现GNSS技术与无人机的紧密协同提供了新的可能性。本文将深入探讨GNSS技术与无人机协同的前景…

创新医疗服务:宠物在线问诊系统的搭建与应用

随着科技的不断进步,创新的医疗服务方式也日渐成为宠物主人关心爱宠健康的首选。本文将深入介绍如何搭建一套创新的宠物在线问诊系统,并展示其应用的技术代码。 1. 系统架构与技术选择 在开始搭建之前,我们需要设计系统的架构并选择合适的…

springboot初始项目每一层的含义

一.创建的时候主要勾选了以下 二.项目架构 三.有的项目下创建出来,存在更多不同的层级 src/main/java/com/example/demo/controller: 控制器层,包含处理 HTTP 请求和响应的控制器类。 src/main/java/com/example/demo/service: 服务层,包含业…

我每天如何使用 ChatGPT

我们都清楚互联网的运作方式——充斥着各种“爆款观点”,极端分裂的意见,恶搞和无知现象屡见不鲜。 最近,大家对于人工智能(AI)特别是大语言模型(LLMs)和生成式 AI(GenAI&#xff0…

四、arcgispro二次开发运行程序修改的地方还是没有变踩坑

对于arcgispro二次开发学习是一件充满兴趣并且具有好奇心的一件事,但是当创建了一个工程第一次调试成功,并出来了自己期待很久的一个程序后,当第二次修改并运行,发现一直没有反应,很是头疼,查了很多资料也没…

日常记帐软件,你的财务守护者

在快节奏的现代生活中,理财的重要性日益凸显。如何让每一分钱都花在刀刃上,是许多人都渴望知道的答案。今天,我要为大家介绍一款简单实用的记账软件——晨曦记账本,相信它会是你财务之路上的得力助手。 所需工具: 一…

Windows下网络编程(win32API+VS2022)

一、开发环境 我这里介绍下我用的环境安装过程。 所有版本的VS都可以的。 我当前环境是在Windows下,IDE用的是地表最强IDE VS2022。 下载地址:https://visualstudio.microsoft.com/zh-hans/downloads/ 因为我这里只需要用到C和C语言编程,那…

C++ STL之queue的使用及模拟实现

文章目录 1. 介绍2. 队列的使用3. 队列的模拟实现 1. 介绍 英文解释: 也就是说: 队列是一种容器适配器,专门用于在FIFO上下文(先进先出)中操作,其中从容器一端插入元素,另一端提取元素。 队列作为容器适配器实现&…