【Matplotlib】基础设置之文本标签03

处理文本

import matplotlib.pyplot as plt
import numpy as np
%matplotlib inline

matplotlib 对文本的支持十分完善,包括数学公式,Unicode 文字,栅格和向量化输出,文字换行,文字旋转等一系列操作。

基础文本函数

matplotlib.pyplot 中,基础的文本函数如下:

  • text()Axes 对象的任意位置添加文本
  • xlabel() 添加 x 轴标题
  • ylabel() 添加 y 轴标题
  • title()Axes 对象添加标题
  • figtext()Figure 对象的任意位置添加文本
  • suptitle()Figure 对象添加标题
  • anotate()Axes 对象添加注释(可选择是否添加箭头标记)
# -*- coding: utf-8 -*-
import matplotlib.pyplot as plt
%matplotlib inline# plt.figure() 返回一个 Figure() 对象
fig = plt.figure(figsize=(12, 9))# 设置这个 Figure 对象的标题
# 事实上,如果我们直接调用 plt.suptitle() 函数,它会自动找到当前的 Figure 对象
fig.suptitle('bold figure suptitle', fontsize=14, fontweight='bold')# Axes 对象表示 Figure 对象中的子图
# 这里只有一幅图像,所以使用 add_subplot(111)
ax = fig.add_subplot(111)
fig.subplots_adjust(top=0.85)# 可以直接使用 set_xxx 的方法来设置标题
ax.set_title('axes title')
# 也可以直接调用 title(),因为会自动定位到当前的 Axes 对象
# plt.title('axes title')ax.set_xlabel('xlabel')
ax.set_ylabel('ylabel')# 添加文本,斜体加文本框
ax.text(3, 8, 'boxed italics text in data coords', style='italic',bbox={'facecolor':'red', 'alpha':0.5, 'pad':10})# 数学公式,用 $$ 输入 Tex 公式
ax.text(2, 6, r'an equation: $E=mc^2$', fontsize=15)# Unicode 支持
ax.text(3, 2, u'unicode: Institut für Festkörperphysik')# 颜色,对齐方式
ax.text(0.95, 0.01, 'colored text in axes coords',verticalalignment='bottom', horizontalalignment='right',transform=ax.transAxes,color='green', fontsize=15)# 注释文本和箭头
ax.plot([2], [1], 'o')
ax.annotate('annotate', xy=(2, 1), xytext=(3, 4),arrowprops=dict(facecolor='black', shrink=0.05))# 设置显示范围
ax.axis([0, 10, 0, 10])plt.show()

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

文本属性和布局

我们可以通过下列关键词,在文本函数中设置文本的属性:

关键词
alphafloat
backgroundcolorany matplotlib color
bboxrectangle prop dict plus key 'pad' which is a pad in points
clip_boxa matplotlib.transform.Bbox instance
clip_on[True , False]
clip_patha Path instance and a Transform instance, a Patch
colorany matplotlib color
family[ 'serif' , 'sans-serif' , 'cursive' , 'fantasy' , 'monospace' ]
fontpropertiesa matplotlib.font_manager.FontProperties instance
horizontalalignment or ha[ 'center' , 'right' , 'left' ]
labelany string
linespacingfloat
multialignment['left' , 'right' , 'center' ]
name or fontnamestring e.g., ['Sans' , 'Courier' , 'Helvetica' …]
picker[None,float,boolean,callable]
position(x,y)
rotation[ angle in degrees 'vertical' , 'horizontal'
size or fontsize[ size in points , relative size, e.g., 'smaller', 'x-large' ]
style or fontstyle[ 'normal' , 'italic' , 'oblique']
textstring or anything printable with ‘%s’ conversion
transforma matplotlib.transform transformation instance
variant[ 'normal' , 'small-caps' ]
verticalalignment or va[ 'center' , 'top' , 'bottom' , 'baseline' ]
visible[True , False]
weight or fontweight[ 'normal' , 'bold' , 'heavy' , 'light' , 'ultrabold' , 'ultralight']
xfloat
yfloat
zorderany number

其中 va, ha, multialignment 可以用来控制布局。

  • horizontalalignment or ha :x 位置参数表示的位置
  • verticalalignment or va:y 位置参数表示的位置
  • multialignment:多行位置控制
import matplotlib.pyplot as plt
import matplotlib.patches as patches# build a rectangle in axes coords
left, width = .25, .5
bottom, height = .25, .5
right = left + width
top = bottom + heightfig = plt.figure(figsize=(10,7))
ax = fig.add_axes([0,0,1,1])# axes coordinates are 0,0 is bottom left and 1,1 is upper right
p = patches.Rectangle((left, bottom), width, height,fill=False, transform=ax.transAxes, clip_on=False)ax.add_patch(p)ax.text(left, bottom, 'left top',horizontalalignment='left',verticalalignment='top',transform=ax.transAxes,size='xx-large')ax.text(left, bottom, 'left bottom',horizontalalignment='left',verticalalignment='bottom',transform=ax.transAxes,size='xx-large')ax.text(right, top, 'right bottom',horizontalalignment='right',verticalalignment='bottom',transform=ax.transAxes,size='xx-large')ax.text(right, top, 'right top',horizontalalignment='right',verticalalignment='top',transform=ax.transAxes,size='xx-large')ax.text(right, bottom, 'center top',horizontalalignment='center',verticalalignment='top',transform=ax.transAxes,size='xx-large')ax.text(left, 0.5*(bottom+top), 'right center',horizontalalignment='right',verticalalignment='center',rotation='vertical',transform=ax.transAxes,size='xx-large')ax.text(left, 0.5*(bottom+top), 'left center',horizontalalignment='left',verticalalignment='center',rotation='vertical',transform=ax.transAxes,size='xx-large')ax.text(0.5*(left+right), 0.5*(bottom+top), 'middle',horizontalalignment='center',verticalalignment='center',fontsize=20, color='red',transform=ax.transAxes)ax.text(right, 0.5*(bottom+top), 'centered',horizontalalignment='center',verticalalignment='center',rotation='vertical',transform=ax.transAxes,size='xx-large')ax.text(left, top, 'rotated\nwith newlines',horizontalalignment='center',verticalalignment='center',rotation=45,transform=ax.transAxes,size='xx-large')ax.set_axis_off()
plt.show()

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

注释文本

text() 函数在 Axes 对象的指定位置添加文本,而 annotate() 则是对某一点添加注释文本,需要考虑两个位置:一是注释点的坐标 xy ,二是注释文本的位置坐标 xytext

fig = plt.figure()
ax = fig.add_subplot(111)t = np.arange(0.0, 5.0, 0.01)
s = np.cos(2*np.pi*t)
line, = ax.plot(t, s, lw=2)ax.annotate('local max', xy=(2, 1), xytext=(3, 1.5),arrowprops=dict(facecolor='black', shrink=0.05),)ax.set_ylim(-2,2)
plt.show()

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在上面的例子中,两个左边使用的都是原始数据的坐标系,不过我们还可以通过 xycoordstextcoords 来设置坐标系(默认是 'data'):

参数坐标系
‘figure points’points from the lower left corner of the figure
‘figure pixels’pixels from the lower left corner of the figure
‘figure fraction’0,0 is lower left of figure and 1,1 is upper right
‘axes points’points from lower left corner of axes
‘axes pixels’pixels from lower left corner of axes
‘axes fraction’0,0 is lower left of axes and 1,1 is upper right
‘data’use the axes data coordinate system

使用一个不同的坐标系:

fig = plt.figure()
ax = fig.add_subplot(111)t = np.arange(0.0, 5.0, 0.01)
s = np.cos(2*np.pi*t)
line, = ax.plot(t, s, lw=2)ax.annotate('local max', xy=(3, 1),  xycoords='data',xytext=(0.8, 0.95), textcoords='axes fraction',arrowprops=dict(facecolor='black', shrink=0.05),horizontalalignment='right', verticalalignment='top',)ax.set_ylim(-2,2)
plt.show()

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

极坐标系注释文本

产生极坐标系需要在 subplot 的参数中设置 polar=True

fig = plt.figure()
ax = fig.add_subplot(111, polar=True)
r = np.arange(0,1,0.001)
theta = 2*2*np.pi*r
line, = ax.plot(theta, r, color='#ee8d18', lw=3)ind = 800
thisr, thistheta = r[ind], theta[ind]
ax.plot([thistheta], [thisr], 'o')
ax.annotate('a polar annotation',xy=(thistheta, thisr),  # theta, radiusxytext=(0.05, 0.05),    # fraction, fractiontextcoords='figure fraction',arrowprops=dict(facecolor='black', shrink=0.05),horizontalalignment='left',verticalalignment='bottom',)
plt.show()

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

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

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

相关文章

5.1 QThread的两种使用方式

5.1 QThread的两种使用方式 QThread类用于创建和管理线程,它并不是线程本身。通过使用QThread,我们可以在应用程序中实现并发执行的任务,从而提高应用程序的性能和响应能力,能够有效地利用CPU资源,提高程序运行效率。且QThread创建和管理线程的方式是独立于平台的,不管是…

学习笔记240102 --- 表单无法输入,是否data中没有提前声明导致的

前端框架 &#xff1a;vue2.x 第三方ui组件&#xff1a;ElementUI 操作系统&#xff1a;windows 浏览器&#xff1a;chrome 谷歌 问题描述 表单使用中&#xff0c;没有在data中提前声明参数&#xff0c;当数据回显时&#xff0c;表单无法输入 <el-form :model"queryPa…

制造企业如何打破“信息孤岛”,跑赢从制造到“智造”的破局之路?

随着工业4.0时代到来&#xff0c;制造业乘上了智能制造发展的快车&#xff0c;但“乘客”却偏少。普华永道发布的《2022年数字化工厂转型调研报告》中指出&#xff0c;来自23个国家和地区的700多家受访企业中&#xff0c;只有10%的企业已经完成数字化转型计划或处于转型最后阶段…

Sourcetree安装和配置

先了解Sourcetree是用来做什么的 简单说就是一个有可视化界面的Gti 用途&#xff1a; &#xff08;1&#xff09;克隆(clone)&#xff1a;从远程仓库URL加载创建一个与远程仓库一样的本地仓库 提交(commit)&#xff1a;将暂存文件上传到本地仓库&#xff08;我们在Finder中对本…

详细分析MybatisPlus中的orderBy、orderByDesc、orderByAsc函数

目录 前言1. 概念2. API示例3. 实战 前言 实战中学习并进行补充该类的源码以及应用 1. 概念 在 MyBatis-Plus 中&#xff0c;orderBy、orderByDesc 和 orderByAsc 是用于构建 SQL 查询语句中的 ORDER BY 子句的方法。 这些方法都是通过 QueryWrapper 类的实例来调用的&…

【Java】实验三 抽象类与接口

实验名称 实验三 抽象类与接口 实验目的 1. 深刻理解抽象类、接口的意义。 2. 熟练掌握抽象类和接口的定义、继承抽象类以及实现接口的方法。 3. 理解和掌握多态。 实验内容 &#xff08;一&#xff09;抽象类实验&#xff1a;项目源码中新建一个ahpu.shape的包&a…

低代码:实现数据可视化的强大助手

随着数据在企业中的价值越来越受到重视&#xff0c;数据可视化成为了决策者和业务专家们必备的工具。然而&#xff0c;传统的数据可视化开发过程常常繁琐且耗时&#xff0c;限制了其在应用中的广泛应用。低代码平台的出现&#xff0c;为实现高效的数据可视化提供了新的解决方案…

切换node.js不同版本

切换node.js不同版本 因新项目用到vite4创建项目&#xff0c;输入命令后报错&#xff0c;经查询得知是node版本过低导致&#xff0c;所以需要升级node版本&#xff0c;但是又有老的项目需要维护&#xff0c;因此需要多个版本的node使用需求。 流程&#xff1a; 卸载原有的node…

实验笔记之——Linux实现COLMAP

之前博客跑instant-NGP的时候&#xff0c;除了用官方的数据集&#xff0c;用自己的数据则是通过手机采集&#xff0c;同时获得pose与image。但是这种获取的方式对于3D gaussian而言&#xff0c;并不支持对应的数据格式&#xff0c;为此采用COLMAP来根据image获取pose&#xff0…

Python条件语句与运算符优先级详解,python学习必看

文章目录 Python 条件语句Python运算符优先级关于Python技术储备一、Python所有方向的学习路线二、Python基础学习视频三、精品Python学习书籍四、Python工具包项目源码合集①Python工具包②Python实战案例③Python小游戏源码五、面试资料六、Python兼职渠道 Python 条件语句 …

springcloud之集成nacos config

写在前面 源码 。 本文看下如下集成nacos config组件。 1&#xff1a;常见配置方式分析 我们先来看下常见的配置方式都有哪些&#xff0c;以及其有什么优点和缺点。 硬编码 优点&#xff1a;hardcode&#xff0c;除了开发的时候快些&#xff0c;爽一下&#xff0c;有个屁优…

洗地机什么牌子最好?家用洗地机推荐指南

随着人们对健康和卫生的关注日益增长&#xff0c;洗地机成为了现代家庭清洁的必备工具。然而&#xff0c;在市场上琳琅满目的洗地机品牌中&#xff0c;洗地机哪个品牌最好最实用呢?这是消费者最为关心的问题。现本文将为您介绍几个备受推崇的洗地机品牌&#xff0c;帮助您在众…

Linux进程以及计划任务

一&#xff1a;程序&#xff1a; 1.什么是程序&#xff1f; 执行特定任务的一串代码 &#xff0c;是一组计算机能识别和执行的指令&#xff0c;运行于电子计算机上&#xff0c;满足人们某种需求的信息化工具 用于描述进程要完成的功能&#xff0c;是控制进程执行的指令集 二…

论文查重降重写成大白话可以吗

大家好&#xff0c;今天来聊聊论文查重降重写成大白话可以吗&#xff0c;希望能给大家提供一点参考。 以下是针对论文重复率高的情况&#xff0c;提供一些修改建议和技巧&#xff0c;可以借助此类工具&#xff1a; 论文查重降重&#xff1a;用大白话解析 一、引言 写论文是每个…

进程的韵律:探索计算机世界中的动态舞台

这里写目录标题 进程定义进程的组成进程与程序区别进程与线程区别进程特点进程控制结尾 进程定义 进程&#xff1a;一个具有一定功能的程序在一个数据集合上的一次动态执行过程。 进程是指正在运行的程序&#xff0c;它是操作系统进行资源分配和调度的基本单位。在计算机中&…

红日靶场第一关 attck

之前因为事情耽搁了&#xff0c;今天争取把第一关红日靶场完成 目前找到了关于外网服务器的网址 之前有过扫描目录得知了登陆界面 和爆破得到的密码 目前我们的想法是把病毒上传到网页当中&#xff0c;所以我们应该找个文件注入点 但是再次之前 我们需要找到网页的绝对路径 …

生成式AI:软件工程的未来伙伴

随着技术不断进步&#xff0c;软件工程正在经历一场革命性的变革。从最初的穿孔卡片和汇编语言编程&#xff0c;到现代集成开发环境和高级编程语言&#xff0c;软件工程已经走过了一条漫长的路。现在&#xff0c;生成式人工智能(AI)正打开新的篇章&#xff0c;不仅对传统的编码…

解决SyntaxError: future feature annotations is not defined,可适用其他包

方法&#xff1a;对报错的包进行降级 pip install tikzplotlib0.9.8site-packages后面是使用pip install安装的包&#xff0c;根据这个找到报错的包 想法来源&#xff1a; 环境是python3.6&#xff0c;完全按照作者要求进行环境配置&#xff0c;但仍报错。 我在网上找的解决…

当AI遇见大脑:电脑与人脑协同“进化”

编者按&#xff1a;2023年是微软亚洲研究院建院25周年。借此机会&#xff0c;我们特别策划了“智启未来”系列文章&#xff0c;邀请到微软亚洲研究院不同研究领域的领军人物&#xff0c;以署名文章的形式分享他们对人工智能、计算机及其交叉学科领域的观点洞察及前沿展望。希望…

FFmpeg之——获取上传视频的尺寸(长、宽)

获取上传视频的尺寸&#xff1a; 获取视频尺寸通常需要借助第三方库FFmpeg。 首先&#xff0c;确保你的系统中已安装了FFmpeg&#xff0c;并且FFmpeg的可执行文件路径已经添加到你的系统环境变量中。 1.官网下载ffmpeg 进入 链接: ffmpeg官网 网址&#xff0c;点击下载wind…