Python数据可视化之图表组成元素

news2025/1/16 7:42:27

1.1绘制 matplotlib 图表组成元素的主要函数

matplotlib 是如何组织内容的?在一个图形输出窗口中,底层是一个 Figure实例,我们通常称之为画布,包含一些可见和不可见的元素。

在画布上,自然是图形,这些图形就是 Axes 实例,Axes 实例几乎包含了我们要介绍的 matplotlib

组成元素,例如坐标轴、刻度、标签、线和标记等。Axes 实例有 x 轴和 y 轴属性,也就是可以使用

Axes.xaxis 和 Axes.yaxis 来控制 x 轴和 y 轴的相关组成元素,例如刻度线、刻度标签、刻度线定位器

和刻度标签格式器。

通过matplotlib.pyplot 模块的 API我们可以操作这些组成元素,通过调用 API 中的函数,我们就可以快速了解应该如何绘制这些组成元素了,例如 matplotlib.pyplot.xlim()和 matplotlib.pyplot.ylim()就是控制 x 轴和 y 轴的数值显示范围。

下面,我们就用下面这幅图来初识绘制 matplotlib 的图表组成元素的主要函数。

1.2准备数据

我们导入第三方包 NumPy 和快速绘图模块 pyplot,其中科学计算包 NumPy 是 matplotlib 库的基

础,也就是说,matplotlib 库是建立在 NumPy 基础之上的 Python 绘图库。上面图形的数据生成代码实

现如下:

import matplotlib.pyplot as plt
import numpy as np

现在,我们就可以定义一些完成上面图形所需要的数据了,代码如下:

x = np.linspace(0.5,3.5,100)
y = np.sin(x)
y1 = np.random.randn(100) 

函数 linspace(0.5,3.5,100)是表示在 0.5 至 3.5 之间均匀地取 100 个数,函数 randn(100)表

示在标准正态分布中随机地取 100 个数。

1.3绘制 matplotlib 图表组成元素的函数用法

1.3.1函数 plot()——展现变量的趋势变化

函数功能:展现变量的趋势变化。

调用签名:plt.plot(x,y,ls="-",lw=5,label="plot figure")

参数说明:

x:x 轴上的数值。

y:y 轴上的数值。

ls:折线图的线条风格。

lw:折线图的线条宽度。

label:标记图形内容的标签文本。

调用展示

(1)代码实现

import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0.05,10,1000)
y = np.cos(x)
plt.plot(x,y,ls="-",lw=2,label="plot figure")
plt.legend()
plt.show()

(2)运行结果如下图:

1.3.2 函数 scatter()——寻找变量之间的关系

函数功能:寻找变量之间的关系。

调用签名:plt.scatter(x,y1,c="b",label="scatter figure")

参数说明:

x:x 轴上的数值。

y:y 轴上的数值。

c:散点图中的标记的颜色。

label:标记图形内容的标签文本。

调用展示

(1)代码实现

import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0.05,10,1000)
y = np.random.rand(1000)
plt.scatter(x,y,label="scatter figure")
plt.legend()
plt.show()

(2)运行结果如图

1.3.3函数 xlim()——设置 x 轴的数值显示范围

函数功能:设置 x 轴的数值显示范围。

调用签名:plt.xlim(xmin,xmax)

参数说明

xmin:x 轴上的最小值。

xmax:x 轴上的最大值。

平移性:上面的函数功能,调用签名和参数说明同样可以平移到函数 ylim()上。

调用展示

(1)代码实现

import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0.05,8,1000)
y = np.random.rand(1000)
plt.scatter(x,y,label="scatter figure")
plt.legend()
plt.xlim(0,8)
plt.ylim(0,1)
plt.show()

(2)运行结果如下图:

1.3.4 函数 xlabel() / xlabel()——设置 x 轴的标签文本

函数功能:设置 x 轴的标签文本。

调用签名:plt.xlabel(string)

参数说明:

string:标签文本内容。

平移性:上面的函数功能,调用签名和参数说明同样可以平移到函数 ylabel()上。

调用展示

(1)代码实现

import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0,10,1000)
y = np.cos(x)
plt.plot(x,y,ls="-.",lw=5,c="c",label="plot figure") # label="plot figure"图形标签
plt.legend()
plt.xlabel("x-axis")
plt.ylabel("y-axis")
plt.show()

(2)运行结果如图

1.3.5函数 grid()——绘制刻度线的网格线

函数功能:绘制刻度线的网格线。

调用签名:plt.grid(linestyle=":",color="b")

参数说明

linestyle:网格线的线条风格。

color:网格线的线条颜色。

调用展示

(1)代码实现

import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0,10,1000)
y = np.cos(x)
plt.plot(x,y,ls="-.",lw=5,c="r",label="plot figure")
plt.legend()
plt.grid(linestyle=":",color="b")
plt.show()

(2)运行结果如图

1.3.6函数 axhline()——绘制平行于 x 轴的水平参考线

函数功能:绘制平行于 x 轴的水平参考线。

Python 数据可视化之 matplotlib 实践

调用签名:plt.axhline(y=0.0,c="r",ls="--",lw=2)

参数说明

y:水平参考线的出发点。

c:参考线的线条颜色。

ls:参考线的线条风格。

lw:参考线的线条宽度。

平移性:上面的函数功能,调用签名和参数说明同样可以平移到函数 axvline()上。

调用展示

(1)代码实现

import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(-10,10,1000)
y = np.cos(x)
plt.xlim(-10,10)
plt.ylim(-2,2)
plt.plot(x,y,ls="-.",lw=2,c="c",label="plot figure")
plt.legend()
plt.axhline(y=1.0,c="r",ls="--",lw=2)
plt.axhline(y=-1.0,c="r",ls="--",lw=2)
plt.axvline(x=0.0,c="r",ls="--",lw=2)
plt.show()

(2)运行结果如图

1.3.7 函数 axvspan()——绘制垂直于 x 轴的参考区域

函数功能:绘制垂直于 x 轴的参考区域。

调用签名:plt.axvspan(xmin=1.0,xmax=2.0,facecolor="y",alpha=0.3)。

参数说明

xmin:参考区域的起始位置。

xmax:参考区域的终止位置。

facecolor:参考区域的填充颜色。

alpha:参考区域的填充颜色的透明度。

平移性:上面的函数功能、调用签名和参数说明可以平移到函数 axhspan()上。

调用展示

(1)代码实现

import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0.05,10,1000)
y = np.cos(x)
plt.plot(x,y,ls="-.",lw=2,c="r",label="plot figure")
plt.legend()
plt.axvspan(xmin=4.0,xmax=6.0,facecolor="b",alpha=0.3)
plt.axhspan(ymin=0.0,ymax=0.5,facecolor="b",alpha=0.3)
plt.show()

(2)运行结果如图

1.3.8函数 annotate()——添加图形内容细节的指向型注释文本

函数功能:添加图形内容细节的指向型注释文本。

调用签名:plt.annotate(string,xy=(np.pi/2,1.0),xytext=((np.pi/2)+0.15,1.5),weight="bold", color="b",

arrowprops=dict(arrowstyle="->",connectionstyle="arc3",color="b"))。

参数说明

string:图形内容的注释文本。

xy:被注释图形内容的位置坐标。

xytext:注释文本的位置坐标。

weight:注释文本的字体粗细风格。

color:注释文本的字体颜色。

arrowprops:指示被注释内容的箭头的属性字典。

调用展示

(1)代码实现

import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0.05,10,1000)
y = np.sin(x)
plt.plot(x,y,ls="-.",lw=2,c="c",label="plot figure")
plt.legend()
plt.annotate("maximum",
xy=(np.pi/2,1.0),
xytext=((np.pi/2)+1.0,.8),
weight="bold",
color="r",
arrowprops 
=dict(arrowstyle="->",connectionstyle="arc3",color="r"))
plt.show()

(2)运行结果如图

1.3.9函数 text()——添加图形内容细节的无指向型注释文本

函数功能:添加图形内容细节的无指向型注释文本。

调用签名:plt.text(x,y,string,weight="bold",color="r")。

Python 数据可视化之 matplotlib 实践

参数说明

x:注释文本内容所在位置的横坐标。

y:注释文本内容所在位置的纵坐标。

string:注释文本内容。

weight:注释文本内容的粗细风格。

color:注释文本内容的字体颜色。

调用展示

(1)代码实现

import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0.05,10,1000)
y = np.cos(x)
plt.plot(x,y,ls="-.",lw=2,c="c",label="plot figure")
plt.legend()
plt.text(3.10,0.09,"y=cos(x)",weight="bold",color="r")
plt.show()

(2)运行结果如图

1.3.10函数 title()——添加图形内容的标题

函数功能:添加图形内容的标题。

调用签名:plt.title(string)。

参数说明

string:图形内容的标题文本。

调用展示

(1)代码实现

import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0.05,10,1000)
y = np.cos(x)
plt.plot(x,y,ls="-.",lw=3,c="c",label="plot figure")
plt.legend()
plt.title("y=cos(x)")
plt.show()

(2)运行结果如图

1.3.11 函数 legend()——标示不同图形的文本标签图例

函数功能:标示不同图形的文本标签图例。

调用签名:plt.legend(loc="lower left")。

参数说明

loc:图例在图中的地理位置。

调用展示

(1)代码实现

import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0.05,10,1000)
y = np.sin(x)
plt.plot(x,y,ls="-.",lw=2,c="c",label="plot figure")
plt.legend(loc="lower left")
plt.show()

(2)运行结果如图

1.4函数组合应用

对上面提到的函数进行一个综合性的运用

import matplotlib.pyplot as plt
import numpy as np
from matplotlib import cm as cm
# define data
x = np.linspace(0.5,3.5,100)
y = np.sin(x)
y1 = np.random.randn(100)
# scatter figure
plt.scatter(x,y1,c="0.25",label="scatter figure")
# plot figure
plt.plot(x,y,ls="--",lw=2,label="plot figure")
# some clean up(removing chartjunk)
# turn the top spine and the right spine off
for spine in plt.gca().spines.keys():
    if spine == "top" or spine == "right":
        plt.gca().spines[spine].set_color("none")
# turn bottom tick for x-axis on
plt.gca().xaxis.set_ticks_position("bottom")
# set tick_line position of bottom
# leave left ticks for y-axis on
plt.gca().yaxis.set_ticks_position("left")
# set tick_line position of left
# set x,yaxis limit
plt.xlim(0.0,4.0)
plt.ylim(-3.0,3.0)
# set axes labels
plt.ylabel("y_axis")
plt.xlabel("x_axis")
# set x,yaxis grid
plt.grid(True,ls=":",color="r")
# add a horizontal line across the axis
plt.axhline(y=0.0,c="r",ls="--",lw=2)
# add a vertical span across the axis
plt.axvspan(xmin=1.0,xmax=2.0,facecolor="y",alpha=.3)
#set annotating info
plt.annotate("maximum",xy=(np.pi/2,1.0),
xytext=((np.pi/2)+0.15,1.5),weight="bold",color="r",
arrowprops=dict(arrowstyle="->",connectionstyle="arc3",color="r"))
plt.annotate("spines",xy=(0.75,-3),
xytext=(0.35,-2.25),weight="bold",color="b",
arrowprops=dict(arrowstyle="->",connectionstyle="arc3",color="b"))
plt.annotate("",xy=(0,-2.78),
xytext=(0.4,-2.32),
arrowprops=dict(arrowstyle="->",connectionstyle="arc3",color="b"))
plt.annotate("",xy=(3.5,-2.98),
xytext=(3.6,-2.70),
arrowprops=dict(arrowstyle="->",connectionstyle="arc3",color="b"))
# set text info
plt.text(3.6,-2.70,"'|' is tickline",weight="bold",color="b")
plt.text(3.6,-2.95,"3.5 is ticklabel",weight="bold",color="b")
# set title
plt.title("structure of matplotlib")
# set legend
plt.legend()
plt.show()

运行结果如下:

参考资料:《Python 数据可视化之 matplotlib 实践》第一章

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

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

相关文章

Allegro如何自动居中走线操作指导

Allegro如何自动居中走线操作指导 Allegro支持自动将走线居中到两个孔的中间,避免手动去调整的麻烦,类似下图 具体操作如下 点击Spread Between VoidsOptions选择需要居中走线的层面,并且Void clearance输入0

OpenGL ES着色器语言(GLSL ES)规范 ——上篇

文章目录前言OpenGL ES基础一段基本的着色器代码大小写和分号数据值类型、命名规范、类型转换运算符矢量和矩阵矢量和矩阵类型矢量构造、访问矩阵构造、访问矢量矩阵运算规则特殊类型—结构体和数组结构体数组取样器总结前言 着色器语言通过控制GPU来进行前端图形的渲染&#…

《深入浅出计算机组成原理》学习笔记 Day10

浮点数与定点数1. 浮点数的不精确性2. 定点数的表示3. 浮点数的表示参考1. 浮点数的不精确性 32 比特只能表示 2 的 32 次方个不同的数,差不多是 40 亿个。如果表示的数超过能表示总的个数,那么就会有两个不同的数的二进制表示是一样的。计算机就会不知…

【深度学习炼丹】不平衡样本的处理

目录:不平衡样本的处理一、前言二、数据层面处理方法2.1 数据扩充2.2 数据(重)采样2.3 类别平衡采样三、算法(损失函数)层面处理方法3.1 Focal Loss3.2 损失函数加权四、参考资料一、前言 在机器学习的经典假设中往往…

VMWare 移动Linux CentOS 7虚拟机后连不上网怎么办

研究hadoop的时候发现虚拟机太大了,于是把3台节点的虚拟机剪切粘贴到移动硬盘上,但是出现了上不了网的问题 VMWare 移动Linux CentOS 7虚拟机后连不上网,ifconfig命令只出现lo不出现有IP地址的ens33,jps命令也出现了jps command …

机器学习模型搭建与评估

模型搭建和评估第三章 模型搭建和评估--建模模型搭建任务一:切割训练集和测试集任务二:模型创建任务三:输出模型预测结果第三章 模型搭建和评估-评估模型评估任务一:交叉验证任务二:混淆矩阵任务三:ROC曲线…

python爬虫学习笔记-mysql数据库介绍下载安装

数据库概述 为什么要使用数据库? 那我们在没有学习数据库的时候,数据存放在json或者磁盘文件中不也挺好的嘛,为啥还要学习数据库? 文件中存储数据,无法基于文件直接对数据进行操作或者运算,必须借助python将…

IDEA搭建Finchley.SR2版本的SpringCloud父子基础项目-------Ribbon负载均衡

1.概念 Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端负载均衡的工具。简单的说,Ribbon是Netflix发布的开源项目,主要功能是提供客户端的软件负载均衡算法,将Netflix的中间层服务连接在一起。Ribbon客户端组件提供一系列完善的配…

Python闭包与闭包陷阱

1 什么是闭包 在 Python 中,闭包是一种特殊的函数,它能够记住它所在的环境(也称作上下文)。这意味着闭包能够访问定义它的作用域中的变量。闭包通常用于封装数据和提供对外部访问的接口。 在 Python 中使用闭包有以下几点好处&a…

数据库和SQL概述

数据库和SQL概述 数据库的好处 实现数据的持久化使用完整的管理系统统一管理,易于查询 常用的一些名称缩写 DB:数据库(Database):存储数据的“仓库”。它保存了一系列有组织的数据DBMS:数据库管理系统(Database Management Sy…

离线用户召回定时更新

3.6 离线用户召回定时更新 学习目标 目标 知道离线内容召回的概念知道如何进行内容召回计算存储规则应用 应用spark完成离线用户基于内容的协同过滤推荐 3.6.1 定时更新代码 完整代码 import os import sys # 如果当前代码文件运行测试需要加入修改路径,否则后面…

游戏启动器:LaunchBox Premium with Big Box v13.1

LaunchBox知道您会喜欢的功能,具有风格的游戏启动器,我们最初将 Launchbox 构建为 DOSBox 的一个有吸引力的前端,但它现在拥有对现代游戏和复古游戏模拟的支持。我们让您的所有游戏看起来都很漂亮。 整理您的游戏收藏 我们不仅漂亮&#xff…

基于微信小程序奶茶店在线点餐下单系统

奶茶在线下单系统用户端是基于微信小程序端,管理员端是基于web端,基于java编程语言,mysql数据库,idea工具开发,用户微信端可以注册登陆小程序,查看奶茶详情,搜索下单奶茶,在线奶茶评…

CSS @property(CSS 自定义属性)

CSS property(CSS 自定义属性)参考描述propertyHoudiniproperty兼容性描述符规则syntax扩展initial-valueinherits示例描述符的注意事项使用 JavaScript 来创建自定义属性CSS 变量与自定义属性重复赋值过渡简单的背景过渡动画更复杂的背景过渡动画错误示…

【ARM体系结构】之数据类型约定与工作模式

1、RISC和CISC的区别 1.1 RISC : 精简指令集 使用精简指令集的架构:ARM架构 RISC-V架构 PowerPC架构 MIPS架构ARM架构 :目前使用最广泛的架构,ARM面向的低端消费类市场RISC-V架构 :第五代,精简指令集的架构&#xff…

这样定义通用人工智能

🍿*★,*:.☆欢迎您/$:*.★* 🍿 正文 人类解决问题的途径,大体可以分为两种。一种是事实推理,另一种是事实验证。 为什么只是两种分类,因为根据和环境的交互与否。 事实推理解释为当遇到事件发生的时候,思考的过程。可以使用概率模型,或者更复杂的模型(目前没…

Out of Vocabulary处理方法

Out of Vocabulary 我们在NLP任务中一般都会有一个词表,这个词表一般可以使用一些大牛论文中的词表或者一些大公司的词表,或者是从自己的数据集中提取的词。但是无论当后续的训练还是预测,总有可能会出现并不包含在词表中的词,这…

(教程)如何在BERT模型中添加自己的词汇(pytorch版)

来源:投稿 作者:皮皮雷 编辑:学姐 参考文章: NLP | How to add a domain-specific vocabulary (new tokens) to a subword tokenizer already trained like BERT WordPiece | by Pierre Guillou | Medium https://medium.com/pi…

ROS2机器人编程简述humble-第三章-BUMP AND GO IN C++ .3

简述本章项目,参考如下:ROS2机器人编程简述humble-第三章-PERCEPTION AND ACTUATION MODELS .1流程图绘制,参考如下:ROS2机器人编程简述humble-第三章-COMPUTATION GRAPH .2然后,在3.3和3.4分别用C和Python编程实现&am…

Bus Hound 工具抓取串口数据(PC端抓取USB转串口数据)

测试环境: PC端 USB转串口 链接终端板卡串口 目标:抓取通信过程中的通信数据 工具介绍:Bus Hound是是由美国perisoft公司研制的一款超级软件总线协议分析器,它是一种专用于PC机各种总线数据包监视和控制的开发工具软件&#xff0c…