Matplotlib基础

概述

1、什么是Matplotlib

  • 是专门用于开发2D图表(包括3D图表)
  • 以渐进、交互式方式实现数据可视化

2、为什么要学习Matplotlib

可视化是在整个数据挖掘的关键辅助工具,可以清晰的理解数据,从而调整我们的分析方法。
  • 能将数据进行可视化,更直观的呈现
  • 使数据更加客观、更具说服力
例如下面两个图为数字展示和图形展示:

3、实现一个简单的Matplotlib画图 — 以折线图为例

3.1 matplotlib.pyplot模块

matplotlib.pytplot包含了一系列类似于matlab的画图函数。
import matplotlib.pyplot as plt

3.2 图形绘制流程:

1.创建画布 -- plt.figure()
plt.figure(figsize=(), dpi=)
  •   figsize:指定图的长宽
  •   dpi:图像的清晰度
  •   返回fig对象
2.绘制图像 -- plt.plot(x, y)
以折线图为例
3.显示图像 -- plt.show()

3.3 折线图绘制与显示

举例:展现上海一周的天气,比如从星期一到星期日的天气温度如下
import matplotlib.pyplot as plt
​
# 1.创建画布
plt.figure(figsize=(10, 10), dpi=100)
​
# 2.绘制折线图
plt.plot([1, 2, 3, 4, 5, 6 ,7], [17,17,18,15,11,11,13])
​
# 3.显示图像
plt.show()

4、认识Matplotlib图像结构(了解)

绘制基础

图形绘制流程:

1.创建画布 -- plt.figure()
plt.figure(figsize=(), dpi=)
  •   figsize:指定图的长宽
  •   dpi:图像的清晰度
  •   返回fig对象
2.绘制图像 -- plt.plot(x, y)
以折线图为例
3.显示图像 -- plt.show()

创建画布

    figure(name,figsize=(w,h),dpi=n)
        设置画布大小
            figsize 画布大小
            dpi 分辨率
    subplot()函数将画布分区
        plt.subplot(2,2,1)
            将画布分为 2 行 2 列,将图画到画布的 1 区域

举例:展现上海一周的天气,比如从星期一到星期日的天气温度如下

import matplotlib.pyplot as plt
​
# 1.创建画布
plt.figure(figsize=(10, 10), dpi=100)
​
# 2.绘制折线图
plt.plot([1, 2, 3, 4, 5, 6 ,7], [17,17,18,15,11,11,13])
​
# 3.显示图像
plt.show()

 

显示网格

    plt.grid(True, linestyle='--', alpha=0.5)
        参数1:True显示,False:不显示
        参数2:linestyle 线条显示的样式
        参数3:alpha  线条的透明度

import matplotlib.pyplot as plt# 1.创建画布
plt.figure(figsize=(10, 10), dpi=100)# 2.绘制折线图
plt.plot([1, 2, 3, 4, 5, 6 ,7], [17,17,18,15,11,11,13])
plt.grid(True, linestyle='--', alpha=0.5)
plt.savefig("testss.jpg")
# 3.显示图像
plt.show()

属性

  

图例

    plt.legend()
        显示图例
保存图片

    plt.savefig("./pic1.jpg")
        保存成jpg图片

方法名

说明

title()

设置图表的名称

xlabel()

设置 x 轴名称

ylabel()

设置 y 轴名称

xticks(x,ticks,rotation)

设置 x 轴的刻度,rotation 旋转角度

yticks()

设置 y 轴的刻度

plot()

绘制线性图表

show()

显示图表

legend()

显示图例

text(x,y,text)

显示每条数据的值 x,y 值的位置

figure(name,figsize=(w,h),dpi=n)

设置图片大小

import matplotlib.pyplot as plt# 1. 创建画布
plt.figure(figsize=(10, 10), dpi=100)
x = [1, 2, 3, 4, 5, 6, 7]
y = x  # 定义 y 为 x 的值
y2 = [i * 2 for i in x]  # 定义 y2 为 x 的两倍# 2. 绘制折线图
plt.plot(x, y, label='y = x')  # 添加图例
plt.plot(x, y2, label='y = 2x')  # 添加图例
plt.grid(True, linestyle='--', alpha=0.5)# 3. 添加标题和标签
plt.title('Test Title', fontsize=25)
plt.xlabel('x', fontsize=25)
plt.ylabel('y', fontsize=25)
plt.xticks(x)
plt.yticks([i * 2 for i in x])  # 为了更好地显示 y2 的值# 4. 添加图例
plt.legend(fontsize=25)# 在每个数据点上显示值
for i in range(len(x)):plt.text(x[i], y[i], f'{y[i]}', ha='center', va='bottom')plt.text(x[i], y2[i], f'{y2[i]}', ha='center', va='bottom')
# 5. 保存图像
plt.savefig("testss.jpg")# 6. 显示图像
plt.show()


设置标签文字和线条粗细


    使用 matplotlib 绘制折线图并设置样式
        plt.plot(datas,squares,linewidth=5) #设置线条宽度
        plt.title('Numbers',fontsize=24)
        plt.xlabel('datas',fontsize=14)
        plt.ylabel('squares',fontsize=14)

import matplotlib.pyplot as plt
datas=[1,2,3,4,5]
squares=[1,4,9,16,25]
plt.plot(datas,squares,linewidth=5) #设置线条宽度
#设置图标标题,并在坐标轴上添加标签
plt.title('Numbers',fontsize=24)
plt.xlabel('datas',fontsize=14)
plt.ylabel('squares',fontsize=14)
plt.show()

    解决标签、标题中的中文问题


        plt.rcParams['font.sans-serif'] = ['SimHei']

import matplotlib.pyplot as plt
datas=[1,2,3,4,5]
squares=[1,4,9,16,25] 
plt.plot(datas,squares,linewidth=5) #设置线条宽度
#设置中文乱码问题
plt.rcParams['font.sans-serif'] = ['SimHei']
#设置图标标题,并在坐标轴上添加标签
plt.title('中文标题',fontsize=24) 
plt.xlabel('x 轴',fontsize=24)
plt.ylabel('y 轴',fontsize=24)
plt.savefig("testss.jpg")
plt.show()

 格式化字符

字符

描述

'-'

实线样式

'--'

短横线样式

'-.'

点划线样式

':'

虚线样式

'.'

点标记

','

像素标记

'o'

圆标记

'v'

倒三角标记

'^'

正三角标记

'1'

下箭头标记

'2'

上箭头标记

字符

描述

'3'

左箭头标记

'4'

右箭头标记

's'

正方形标记

'p'

五边形标记

'*'

星形标记

'h'

六边形标记 1

'H'

六边形标记 2

'+'

加号标记

'x'

X 标记

'D'

菱形标记

'd'

窄菱形标记

'_'

水平线标记

 

字符

颜色

'b'

蓝色

'g'

绿色

'r'

红色

'c'

青色

'm'

品红色

'y'

黄色

'k'

黑色

'w'

白色

 

#不同种类不同颜色的线并添加图例
x=np.linspace(0,10,100)
plt.plot(x,x+0,'-g',label='-g') #实线 绿色
plt.plot(x,x+1,'--c',label='--c') #虚线 浅蓝色
plt.plot(x,x+2,'-.k',label='-.k') #点划线 黑色
plt.plot(x,x+3,'-r',label='-r') #实线 红色
plt.plot(x,x+4,'o',label='o') #点 默认是蓝色
plt.plot(x,x+5,'x',label='x') #叉叉 默认是蓝色
plt.plot(x,x+6,'dr',label='dr') #砖石 红色
#添加图例右下角 lower right 左上角 upper left 边框 透明度 阴影 边框宽度
plt.legend(loc='lower right',fancybox=True,framealpha=1,shadow=True,borderpad=1) 
plt.savefig("testss.jpg")
plt.show()

 折线图

绘制直线

import matplotlib.pyplot as plt 
#将(0,1)点和(2,4)连起来
plt.plot([0,2],[1,4])
plt.show()

 

绘制折线

以折线的上升或下降来表示统计数量的增减变化的统计图

特点:能够显示数据的变化趋势,反映事物的变化情况。(变化)

plt.plot(x, y)

import matplotlib.pyplot as plt 
x=[1,2,3,4,5]
y=[1,4,9,16,25]
plt.plot(x,y)
plt.savefig("testss.jpg")
plt.show()

 

绘制函数图像

import matplotlib.pyplot as plt 
import numpy as np
x=np.linspace(0,10,100) 
sin_y=np.sin(x)
#绘制正弦曲线
plt.plot(x,sin_y) 
#绘制余弦曲线
cos_y=np.cos(x) 
plt.plot(x,cos_y)
plt.savefig("testss.jpg")
plt.show()

 

散点图

散点图:用两组数据构成多个坐标点,考察坐标点的分布,判断两变量之间是否存在某种关联或总结坐标点的分布模式。

特点:判断变量之间是否存在数量关联趋势,展示离群点(分布规律)

 plt.scatter(x, y)

import matplotlib.pyplot as plt 
import numpy as np
x = [1, 2, 3, 4, 5]
y = [2, 3, 5, 7, 11]
plt.scatter(x, y, color='red')  # 绘制红色散点图
plt.title("Simple Scatter Plot")  # 设置图表标题
plt.xlabel("X-axis")  # 设置X轴标签
plt.ylabel("Y-axis")  # 设置Y轴标签 
plt.savefig("testss.jpg")
plt.show()

 

import matplotlib.pyplot as plt 
import numpy as np
# 画 10 种大小, 100 种颜色的散点图
np.random.seed(0) 
x=np.random.rand(100) 
y=np.random.rand(100)
#生成一个包含100个随机颜色值的数组,并将其赋值给变量colors。这些颜色值将用于散点图中每个点的颜色。
colors=np.random.rand(100) 
size=np.random.rand(100)*1000
plt.scatter(x,y,c=colors,s=size,alpha=0.7)
plt.show()
plt.savefig("testss.jpg")
plt.show()

 

 

柱状图

柱状图:排列在工作表的列或行中的数据可以绘制到柱状图中。

特点:绘制连离散的数据,能够一眼看出各个数据的大小,比较数据之间的差别。(统计/对比)

plt.bar(x, width, align='center', **kwargs) 

Parameters:    
x : 需要传递的数据width : 柱状图的宽度align : 每个柱状图的位置对齐方式{'center', 'edge'}, optional, default: 'center'
**kwargs :
color:选择柱状图的颜色
x = [str(i) for i in "abcde"]
y = [3,6,1,8,2]
plt.bar(x,y, color='r')
plt.show()

 

饼状图

plt.pie(x, labels=,autopct=,colors)

Parameters:  
x:数量,自动算百分比
labels:每部分名称
autopct:占比显示指定%1.2f%%
colors:每部分颜色
sizes = [25, 35, 25, 15]
labels = ['Category A', 'Category B', 'Category C', 'Category D']plt.pie(sizes, labels=labels, autopct='%1.1f%%')  # 绘制饼图,显示百分比
plt.title("Simple Pie Chart")  # 设置图表标题
plt.show()  # 显示图表

 

直方图

matplotlib.pyplot.hist(x, bins=None)

Parameters: x : 需要传递的数据 bins : 组距

提醒:bins=10是把数据分成10组显示,但是对于数据来说要分成11个数,因为11个数可以隔成10个区间

x = np.random.randn(150)  # 画正太分布图
# x = np.linspace(0,150, 100)
# x = np.random.randint(0,150, 11)
# plt.hist(x)
plt.hist(x, bins=10, color='y', alpha=0.5, rwidth=0.85)  # 装箱的操作,将 10 个柱装到一起及修改柱的宽度
plt.show()

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

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

相关文章

警惕IDEA 2024版重大Bug问题:LomBok失效、Gradle冲突、Spring Boot启动错误

一直以来我认为工具类的软件是越新越好,因为工具代表着一定的先进性;但是IDEA 2024好好的给我上了一课,比如lombok 不起作用、比如Spring Boot 3.4.x 启动报错、再比如MyBatis log plus冲突、再比如Gradle插件冲突. 一、Lombok 失效问题 请不…

EI Scopus双检索 | 2025年第四届信息与通信工程国际会议(JCICE 2025)

会议简介 Brief Introduction 2025年第四届信息与通信工程国际会议(JCICE 2025) 会议时间:2025年7月25日-27日 召开地点:中国哈尔滨 大会官网:www.jcice.org 由黑龙江大学和成都信息工程大学主办,江苏科技大学协办的2025年第四届信…

JavaWeb 前端基础 html + CSS 快速入门 | 018

今日推荐语 指望别人的救赎,势必走向毁灭——波伏娃 日期 学习内容 打卡编号2025年01月17日JavaWeb 前端基础 html CSS018 前言 哈喽,我是菜鸟阿康。 今天 正式进入JavaWeb 的学习,简单学习 html CSS 这2各前端基础部分&am…

Flask学习入门笔记

Flask学习入门笔记 前言1. 安装Flask2. 创建一个简单的Flask应用3. 路由与视图函数3.1 基本路由3.2 动态路由3.3 HTTP方法 4. 请求与响应4.1 获取请求数据4.2 返回响应 5. 模板渲染5.1 基本模板渲染5.2 模板继承 6. 静态文件6.1 静态文件的目录结构6.2 在模板中引用静态文件6.2…

菜品管理(day03)

公共字段自动填充 问题分析 业务表中的公共字段: 而针对于这些字段,我们的赋值方式为: 在新增数据时, 将createTime、updateTime 设置为当前时间, createUser、updateUser设置为当前登录用户ID。 在更新数据时, 将updateTime 设置为当前时间…

Python股票量化交易分析-开发属于自己的指标

需求:股票的量化交易指标很多,我想做一个自己的量化交易图表: 展示每天交易量和股价振幅的关系图进一步的话想知道单位金额对股价振幅的影响,最终实现大概估计需要多少买入成交量能拉升多少股价) , 目前未…

python爬虫爬取淘宝商品比价||淘宝商品详情API接口

最近在学习北京理工大学的爬虫课程,其中一个实例是讲如何爬取淘宝商品信息,现整理如下: 功能描述:获取淘宝搜索页面的信息,提取其中的商品名称和价格 探讨:淘宝的搜索接口 翻页的处理 技术路线:requests…

OpenCV相机标定与3D重建(60)用于立体校正的函数stereoRectify()的使用

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 为已校准的立体相机的每个头计算校正变换。 cv::stereoRectify 是 OpenCV 中用于立体校正的函数,它基于已知的相机参数和相对位置&am…

1.17组会汇报

STRUC-BENCH: Are Large Language Models Good at Generating Complex Structured Tabular Data? STRUC-BENCH:大型语言模型擅长生成复杂的结构化表格数据吗?23年arXiv.org 1概括 这篇论文旨在评估大型语言模型(LLMs)在生成结构…

【机器学习实战入门】使用 Pandas 和 OpenCV 进行颜色检测

Python 颜色检测项目 今天的项目将非常有趣和令人兴奋。我们将与颜色打交道,并在项目过程中学习许多概念。颜色检测对于识别物体来说是必要的,它也被用作各种图像编辑和绘图应用的工具。 什么是颜色检测? 颜色检测是检测任何颜色名称的过程…

【k8s面试题2025】3、练气中期

体内灵气的量和纯度在逐渐增加。 文章目录 在 Kubernetes 中自定义 Service端口报错常用控制器Kubernetes 中拉伸收缩副本失效设置节点容忍异常时间Deployment 控制器的升级和回滚日志收集资源监控监控 Docker将 Master 节点设置为可调度 在 Kubernetes 中自定义 Service端口报…

数智化转型 | 星环科技Defensor 助力某银行数据分类分级

在数据驱动的金融时代,数据安全和隐私保护的重要性日益凸显。某银行作为数字化转型的先行者,面临着一项艰巨的任务:如何高效、准确地对分布在多个业务系统、业务库与数仓数湖中的约80万个字段进行数据分类和分级。该银行借助星环科技数据安全…

mac配置 iTerm2 使用lrzsz与服务器传输文件

mac配置 1. 安装支持rz和sz命令的lrzsz brew install lrzsz2. 下载iterm2-send-zmodem.sh和iterm2-recv-zmodem.sh两个脚本 # 克隆仓库 git clone https://github.com/aikuyun/iterm2-zmodem ~/iterm2-zmodem# 进入到仓库目录 cd ~/iterm2-zmodem# 设置脚本文件可执行权限 c…

redis 分布式重入锁

文章目录 前言一、分布式重入锁1、单机重入锁2、redis重入锁 二、redisson实现重入锁1、 添加依赖2、 配置 Redisson 客户端3、 使用 Redisson 实现重入锁4、 验证5、运行项目 三、redisson分布式锁分析1、获取锁对象2、 加锁3、订阅4、锁续期5、释放锁6、流程图 前言 通过前篇…

【git】如何删除本地分支和远程分支?

1.如何在 Git 中删除本地分支 本地分支是您本地机器上的分支,不会影响任何远程分支。 (1)在 Git 中删除本地分支 git branch -d local_branch_name git branch 是在本地删除分支的命令。-d是一个标志,是命令的一个选项&#x…

关于 Cursor 的一些学习记录

文章目录 1. 写在最前面2. Prompt Design2.1 Priompt v0.1:提示设计库的首次尝试2.2 注意事项 3. 了解 Cursor 的 AI 功能3.1 问题3.2 答案 4. cursor 免费功能体验5. 写在最后面6. 参考资料 1. 写在最前面 本文整理了一些学习 Cursor 过程中读到的或者发现的感兴趣…

使用python+pytest+requests完成自动化接口测试(包括html报告的生成和日志记录以及层级的封装(包括调用Json文件))

一、API的选择 我们进行接口测试需要API文档和系统,我们选择JSONPlaceholder免费API,因为它是一个非常适合进行接口测试、API 测试和学习的工具。它免费、易于使用、无需认证,能够快速帮助开发者模拟常见的接口操作(增、删、改、…

【Rust自学】13.2. 闭包 Pt.2:闭包的类型推断和标注

13.2.0. 写在正文之前 Rust语言在设计过程中收到了很多语言的启发,而函数式编程对Rust产生了非常显著的影响。函数式编程通常包括通过将函数作为值传递给参数、从其他函数返回它们、将它们分配给变量以供以后执行等等。 在本章中,我们会讨论 Rust 的一…

无人机技术架构剖析!

一、飞机平台系统 飞机平台系统是无人机飞行的主体平台,主要提供飞行能力和装载功能。它由机体结构、动力装置、电气设备等组成。 机体结构:无人机的机身是其核心结构,承载着其他各个组件并提供稳定性。常见的机身材料包括碳纤维、铝合金、…

Axios封装一款前端项目网络请求实用插件

前端项目开发非常经典的插件axios大家都很熟悉,它是一个Promise网络请求库,可以用于浏览器和 node.js 支持的项目中。像一直以来比较火的Vue.js开发的几乎所有项目网络请求用的都是axios。那么我们在实际的项目中,有时候为了便于维护、请求头…