Matplotlib 文本和标注可以为数据和图形之间提供额外的信息,帮助观察者更好地理解数据和图形的含义。

文本用于在图形中添加注释或提供更详细的信息,以帮助观察者理解图形的含义。
标注则是一种更加细粒度的文本信息,可以被用来为特定的数据点或区域提供更详细的信息。

本篇通过示例依次介绍文本和标注的常用使用方式。

1. 文本

文本在图形中主要用在标题,坐标轴,图形中的一些说明等等地方。

1.1. 颜色和字体

下面的示例演示了图形中各个部分文本的字体大小和颜色设置的方法:

import numpy as np
import matplotlib.pyplot as plt x = np.linspace(0, 10, 100)
y = x*x fig = plt.figure()
ax = fig.add_axes([0.1, 0.1, 0.8, 0.8]) #设置 标题 的字体和颜色
ax.set_title("标题", fontdict={"fontsize": 25, "color": "r"}) #设置 X轴和Y轴 标签的字体和颜色
ax.set_xlabel("x轴", fontdict={"fontsize": 20,"color": "g"})
ax.set_ylabel("y轴", fontdict={"fontsize": 20,"color": "b"}) #按照坐标位置(2, 60)添加一段文本
ax.text(2, 60, "f(x) = x*x", fontdict={"fontsize": 15,"color": "k"})
ax.plot(x, y, label="sin")
ax.legend()

需要掌握的部分就是 fontdict 这个参数,这个字典还有其他参数可以控制字体,这里只演示了两个常用的参数:

  1. fontsize:字体大小设置
  2. color:文字颜色

1.2. latex公式

上面的示例中,f(x) = x*x 可以 latex的方式来显示。
latex让能够显示各种复杂的数学公式,让文本看起来和数学书中一样。


x = np.linspace(0, 10, 100)
y = x*x fig = plt.figure()
ax = fig.add_axes([0.1, 0.1, 0.8, 0.8]) #设置 标题 的字体和颜色
ax.set_title("标题", fontdict={"fontsize": 25, "color": "r"}) #设置 X轴和Y轴 标签的字体和颜色
ax.set_xlabel("x", fontdict={"fontsize": 20,"color": "g"})
ax.set_ylabel("$x^2$", fontdict={"fontsize": 20,"color": "b"}) #按照坐标位置(2, 60)添加一段文本
ax.text(2, 60, "$f(x) = x^2$", fontdict={"fontsize": 15,"color": "k"})
ax.plot(x, y, label="sin")
ax.legend()

上面将 Y轴的文本图形中间的数学公式改成了 latex 格式。

2. 标注

图形添加标注时,一般包含2个部分,一个指向数据的箭头,一段说明文字。
设置标注的核心参数是:

  1. xy:这是待标注的数据点的坐标
  2. xytext:标注文本的坐标,一般是文本的左上角的点
  3. bbox:文本框的样式字典
  4. arrowprops:箭头的样式字典

下面的示例中,通过设置上面4个参数来演示几种常用的标注:

x = np.array(range(10))
y = np.array([89, 84, 30, 67, 41, 71, 62, 20, 89, 3]) fig = plt.figure()
ax = fig.add_axes([0.1, 0.1, 0.8, 0.8])
ax.plot(x, y) ax.annotate(
"第一个值",
xy=(0, 89),
xytext=(-0.3, 70),
arrowprops={"arrowstyle": "->", "connectionstyle": "arc3,rad=-0.5"},
) ax.annotate(
"转折点一",
xy=(2, 30),
xytext=(1.8, 10),
bbox={"boxstyle": "round", "fc": "none", "ec": "g"},
arrowprops={"arrowstyle": "->"},
) ax.annotate(
"转折点二",
xy=(3, 67),
xytext=(3, 85),
bbox={"boxstyle": "round", "fc": "lightblue", "ec": "r"},
arrowprops={"arrowstyle": "fancy"},
) ax.annotate(
"最大值",
xy=(8, 89),
xytext=(6, 85),
bbox={"boxstyle": "round", "alpha":0.1},
arrowprops={"arrowstyle": "wedge,tail_width=0.8", "alpha":0.1},
)

  1. 第一个值:设置了箭头的弯曲度
  2. 转折点一:设置了边框
  3. 转折点二:设置了边框和背景色,同时设置了另一种箭头样式
  4. 最大值:设置了边框和另一种箭头的透明度。

3. 总结

在使用 Matplotlib 进行数据可视化时,合理使用文本和标注可以大大提高图形的可读性和易懂性,帮助观察者更好地理解数据和图形的含义。

但是,分析结果中是最重要的还是图形和数据,文本和标注不宜过度添加,也不能太花哨,以致喧宾夺主,本末倒置。

【matplotlib基础】--文本标注的更多相关文章

  1. matplotlib基础

    Matplotlib 基础 注:本文中的程序都默认引入了numpy库和matplotlib库,并且分别简写为np与plt:如果读者不知道怎么使用numpy库,可以移步到这一博客上进行简单的学习 一.简 ...

  2. 模块简介与matplotlib基础

    模块简介与matplotlib基础 1.基本概念 1.1数据分析 对已知的数据进行分析,提取出一些有价值的信息. 1.2数据挖掘 对大量的数据进行分析与挖掘,得到一些未知的,有价值的信息. 1.3数据 ...

  3. 百度地图API示例之文本标注

    代码 <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" cont ...

  4. 【百度地图API1.1】修改文本标注的样式

    原文:[百度地图API1.1]修改文本标注的样式 百度地图API1.0中文本标注的样式写法为: label.getDom().style.borderColor = "#808080&quo ...

  5. 数据分析与展示——Matplotlib基础绘图函数示例

    Matplotlib库入门 Matplotlib基础绘图函数示例 pyplot基础图表函数概述 函数 说明 plt.plot(x,y,fmt, ...) 绘制一个坐标图 plt.boxplot(dat ...

  6. matplotlib y轴标注显示不全以及subplot调整的问题

    matplotlib y轴标注显示不全以及subplot调整的问题 问题: 我想在y轴显示的标注太长,想把它变成两行显示,发现生成的图形只显示的第二行的字,把第一行的字挤出去了 想要的是显示两行这样子 ...

  7. gEdit - GTK+ 基础文本编辑器

    语法 gedit [--help] [--version] [文件名] [文件名] [文件名] 等等... 描述 gEdit 是一个 X窗口系统下的基础文本编辑器由 GTK+ 写成.它现在支持建立,打 ...

  8. Matplotlib基础图形之散点图

    Matplotlib基础图形之散点图 散点图特点: 1.散点图显示两组数据的值,每个点的坐标位置由变量的值决定 2.由一组不连续的点组成,用于观察两种变量的相关性(正相关,负相关,不相关) 3.例如: ...

  9. Matplotlib基础知识

    Matplotlib基础知识 Matplotlib中的基本图表包括的元素 x轴和y轴 axis水平和垂直的轴线 x轴和y轴刻度 tick刻度标示坐标轴的分隔,包括最小刻度和最大刻度 x轴和y轴刻度标签 ...

  10. 用深度学习做命名实体识别(二):文本标注工具brat

    本篇文章,将带你一步步的安装文本标注工具brat. brat是一个文本标注工具,可以标注实体,事件.关系.属性等,只支持在linux下安装,其使用需要webserver,官方给出的教程使用的是Apac ...

随机推荐

  1. es mysql 适用场景对比

    es mysql 适用场景对比 问题一 全文检索毫无疑问直接上es,那么除了这种场景,什么时候该选es?为啥mysql不行? 对枚举字段的搜索 mysql创建索引的原则是对于那些区别度高字段建立索引, ...

  2. 魔力屏障 (magic) 题解

    魔力屏障 (magic) [问题描述] 小 Z 生活在神奇的魔法大陆上.今天他的魔法老师给了它这样一个法阵作为它 的期末考试题目: 法阵由从左至右 n 道魔力屏障组成,每道屏障有一个临界值 a,如果它 ...

  3. Linux设置多个Tomcat开机自启动

    Linux设置多个Tomcat开机自启动 前言 一台服务器上有多个tomcat环境,重启服务器后,每次需要手动一个个启动服务,非常麻烦,于是可以设置tomcat开机自启动. tomcat开机自启动非常 ...

  4. 确保使用正确的CSI提交HW问题

    最近有用户一体机有问题,需要技术支持,首先找到我这边,其实就是一个简单的坏盘类问题,换盘即可. 在保期间,要求客户提交一个SR给后台,但是客户提交后,就一直被要求提供HW的CSI号: xxx: Can ...

  5. 补充 6-13 《关于SQL SERVER 字段类型char(n) , nchar(n) , varchar(n) , nvarchar(n)》

    今天补充一下<关于SQL SERVER 字段类型char(n) , nchar(n) , varchar(n) , nvarchar(n)>类型的区别 虽然两个字符串一样,但是定义的类型不 ...

  6. Linux网络设备命名规则简介

    Linux网络设备命名规则简介 几年前, Linux内核为网络接口分配名称采用的是一种简单和直观的方式:一个固定的前缀和一个递增的序号.比如,内核使用eth0名称以标识启动后第一个加载的网络设备,第二 ...

  7. python学习笔记:第七章面向对象

    与java类似,python作为一种面向对象的编程语言,也可以创建自定义的对象和类. 它的特性主要有:继承,封装,多态,方法,属性,超类 1.变量的作用域 c = 50 #全局变量, 作用域为整个模块 ...

  8. 【Jenkins】 GitLab Gitee GitHub 部署

    Jenkins GitLab Gitee GitHub 部署 环境 Jenkins Git Maven Jenkins 部署可参考文章:https://www.cnblogs.com/cxt618/p ...

  9. iostream,iostream.h,stdio.h的纠葛

    include <iostream.h>非标准输入输出流 include 标准输入输出流 C++中为了避免名字定义冲突,特别引入了"名字空间的定义",即namespac ...

  10. yum与软件包

    从一个命令开始 yum provides iostat ## 找到软件包名为:sysstat-10.1.5-19.el7.x86_64 安装软件包 yum install sysstat-10.1.5 ...