Matplotlib可视化之添加让统计图变得简单易懂的注释

一、前言

在系列博文的中,我们已经学习了如何自定义绘图的颜色和样式,以使得绘制更加精美、符合审美要求。可以用Matplotlib绘制出复杂而又精美的统计图,但是如果没有注释,我们很难让其他人明白图中的点、线究竟代表着什么,有什么样的含义,也就失去了统计图的意义,为了解决这一问题,Matplotlib提供了大量对图形进行注释的方法,这些注释方法对于所有的绘图函数(如plt.plot()、plt.scatter()、plt.histogram()等)都是通用的,利用这些注释可以使统计图变得通俗易懂。

二、添加标题

从最简单的添加标题开始:

import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(-4, 4, 10005)
y = 5 * (x + 4.2) * (x + 4.) * (x - 2.5)
plt.title('A polynomial')
plt.plot(x, y, c = 'm')
plt.show()

Tips:

plt.title()函数接受一个字符串作为参数并将其作为整个图形的标题。

三、为坐标轴添加标签

在实际应用中,对统计图坐标轴的适当描述有助于用户理解图形所表达的含义。

import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, 8, 1000)
y = 2.0 * x + 0.5 * 5 * x ** 2
plt.title('Acceleration Moving')
plt.xlabel('Time')
plt.ylabel('distance')
plt.plot(x, y, c = 'c')
plt.show()

Tips:

使用plt.xlabel()和plt.ylabel()函数分别为水平轴和垂直轴添加注释。

四、添加文本说明

虽然我们已经学习了如何图形添加标题,以及为坐标轴添加注释,但是,很多时候我们还需要在图形中添加说明文本,来凸显图中点或线的重要性。

import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, 8, 1000)
y = 2.0 * x + 0.5 * 5 * x ** 2
plt.title('Acceleration Moving')
plt.xlabel('Time')
plt.ylabel('distance')
plt.scatter(x[0],y[0])
plt.text(x[0], y[0], 'start')
plt.plot(x, y, c = 'c')
plt.show()

Tips:plt.text()函数接受要显示的位置和文本作为参数。位置以坐标形式给出,其指定了文本框左下角的位置。

五、文本的对齐方式

文本外围包含隐式文本框(下文会介绍文本框的显示方法),此框用于将文本与传递给plt.text()的坐标进行相对对齐。使用verticalalignmenthorizontalalignment参数(它们分别可以简写为vaha)控制对齐的方式。
垂直对齐选项如下所示:

参数值 说明
center 参数坐标相对于文本框的中心
top 参数坐标相对于文本框的上侧
bottom 参数坐标相对于文本框的底部
baseline 参数坐标相对于文本的基线
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, 8, 1000)
y = 2.0 * x + 0.5 * 5 * x ** 2
x_b = np.linspace(0, 8, 1000)
y_b = np.zeros_like(x_b)
plt.title('Acceleration Moving')
plt.xlabel('Time')
plt.ylabel('distance')
plt.scatter(x[0],y[0])
plt.text(0, 0, 'center', va='center')
plt.text(2, 0, 'top', va='top')
plt.text(4, 0, 'bottom', va='bottom')
plt.text(6, 0, 'baseline', va='baseline')
plt.plot(x, y, c = 'c')
plt.plot(x_b, y_b, c = 'm')
plt.show()

水平对齐选项如下所示:

参数值 说明
center 参数坐标相对于文本框的中心
left 参数坐标相对于文本框的左侧
right 参数坐标相对于文本框的右侧
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, 8, 1000)
y = 2.0 * x + 0.5 * 5 * x ** 2
y_b = np.linspace(0, 100, 1000)
x_b = np.zeros_like(y_b)
plt.title('Acceleration Moving')
plt.xlabel('Time')
plt.ylabel('distance')
plt.scatter(x[0],y[0])
plt.text(0, 0, 'center', ha='center')
plt.text(0, 50, 'left', ha='left')
plt.text(0, 100, 'right', ha='right')
plt.plot(x, y, c = 'c')
plt.plot(x_b, y_b, c = 'm')
plt.show()

六、文本边界框

上文介绍了文本外围包含隐式文本框,为了可以显式的绘制文本框,plt.plot()支持一个以字典为输入的bbox参数,此词典用于定义文本框的外观配置:

import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, 8, 1000)
y = 2.0 * x + 0.5 * 5 * x ** 2
box = {
    'facecolor': '.75',
    'edgecolor': 'r',
    'boxstyle': 'round'
}
plt.title('Acceleration Moving')
plt.text(0, 8, 'start', bbox=box)
plt.plot(x, y, c = 'c')
plt.show()

bbox参数的字典定义包含以下常见键值对:

说明与可选值
facecolor 用于设置文本框背景和边的颜色
edgecolor 用于设置文本框边缘的颜色
alpha 用于设置透明度级别,使文本框与背景更好的混合
boxstyle 设置文本框的样式,可选值包括"round"和"square"
pad 如果"boxstyle"设置为"square",则它定义文本和文本框边之间的填充量

七、添加箭头

添加文本框当然可以帮助注释图形,但有时当说明文本过多,并不能清楚的说明究竟与图形的那一部分相对应,因此要说明图形中的特定部分,没有什么比使用箭头更好的了,Matplotlib使用plt.annotate()函数绘制箭头。

import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, 8, 1000)
y = 2.0 * x + 0.5 * 5 * x ** 2
plt.annotate('start',
        ha = 'center', va = 'bottom',
        xytext = (2, 30.),
        xy = (0, 0),
        arrowprops = { 'facecolor' : 'black', 'shrink' : 0.05 })
plt.title('Acceleration Moving')
plt.plot(x, y, c = 'c')
plt.show()

Tips:plt.annotate()函数在显示与plt.text()作用相同的说明文本文本外,同时也会渲染箭头。要显示的说明文本是第一个参数;xy参数指定箭头的目标;xytext参数指定文本位置,同样可以通过ha和va参数来改变文本对齐方式
箭头的样式由传递给arrowprops参数的字典控制,其中常用的键值包括:

说明与可选值
arrowstyle 控制箭头的样式,可选值包括"<-"、"<"、“wedge”、"simple"和"fancy"等
facecolor 用于设置箭头背景和边的颜色
edgecolor 用于设置箭头边的颜色
alpha 用于设置透明度级别,使箭头与背景更好的混合

收缩参数控制箭头端点和箭头本身之间的间隙。

八、添加图例

在复杂图形中,往往包含大量不同的曲线和点,如果这些曲线和点没有相应的图例,将无法对其进行准确的区分,因此图例在实践中是必不可少的。
使用plt.legend()函数以及绘图函数的label可选参数,可以添加图例:

import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, 6, 1024)
data = np.random.standard_normal((150, 2))
print(data.size)
y_1 = np.sin(x)
y_2 = np.cos(x)
plt.xlabel('x')
plt.ylabel('y')
plt.plot(x, y_1, c = 'm', lw = 3., label = 'sin(x)')
plt.plot(x, y_2, c = 'c', lw = 3., ls = '--', label = 'cos(x)')
plt.scatter(data[:,0],data[:,1],c='y', label = 'random')
plt.legend()
plt.show()

Tips:每个plt绘图函数(如plt.plot()、plt.scatter()等)都有一个可选的label参数来命名图形的元素。plt.legend()函数的作用是呈现图例,图例是根据标签自动生成的。
plt.legend()函数包含可选参数来控制图例的呈现:

参数 说明与可选值
loc 用于控制图例的位置,默认值为"best",将以适合的方式自动放置图例,其他可选值包括"upper left"、“lower left”、“lower right”、“right”、“center left”、“center right”、“lower center”、“upper center"和"center”
shadow 可选值包括True和False,用于设置是否使用阴影效果呈现图例
fancybox 可选值包括True和False,用于是否使用圆角框呈现图例
title 用于为图例设置标题
ncol 强制设置图例的列数

九、使用LaTex风格的符号

我们已经学习了为图形添加多种注释的方法。然而,在实践中,我们通常需要使用数学符号,因此,我们需要使用LaTex语法来添加数字符号。
要使用LaTex风格的符号,首先需要在计算机上安装可用的LaTeX配置,以便Matplotlib可以解释LaTeX语法来呈现数学文本。有关于安装LaTeX的方法,不在本文的主题主题,大家可以根据自己的操作系统检索安装方法.

十、LaTex简介

LaTex是学术界广泛使用的一种文献排版系统。与Microsoft Word等文档编辑器不同,LaTeX用户在编辑文档时无法看到其最终显示效果。文档被描述为纯文本文档中存储的文本及命令。最终,LaTeX将解释文档以进行呈现。在科学和工程界,LaTeX的公式语言通常用于在电子邮件和论坛中编写数学文本。

十一、使用LaTex符号示例

使用LaTex风格的符号时,函数接受的字符串参数值以“$”字符开头和结尾,这是向Matplotlib发出信号,以将文本解释并呈现为LaTeX样式的数学文本。字符串的内容就是数学文本的标准语言,关于Matplotlib中LaTeX样式的数学文本的介绍,可以参考Matplotlib官网。

import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(-4, 4, 10005)
y = 3 / 5 * (x + 4.2) * (x + 4.) * (x - 2.5)
plt.title('$f(x)=\\frac{3}{5}(x+4.4)(x+4)(x-2.5)$')
plt.plot(x, y, c = 'k')
plt.show()

Tips:这种LaTex风格的符号不限于标题,它可以用于任何其它注释。LaTeX语言在很大程度上依赖于转义字符\,但此符号恰好也是Python的字符串转义字符。因此,如果要在一个LaTeX文本中使用\作为转移字符,需要在Python字符串中使用两个\。为了避免漏掉转义字符,可以在字符串前面加上r,这样就不需要任何转义字符了,即:"$f(x)=\\frac{1}{4}(x+4)(x+1)(x-2)$"等价于r'$f(x)=\frac{1}{4}(x+4)(x+1)(x-2)$'。

十二、使用中文字符

中文是使用Matplotlib的一个痛点,但是在实际应用中,又不可避免的会使用到中文用于统计图注释的显示,如果不进行配置,会将中文字符显示为乱码。
使用中文字符作为注释有多种方式,这里本着简单就是最优的理念,使用plt.rcParams['font.sans-serif']进行设置:

import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, 6, 1024)
data = np.random.standard_normal((150, 2))
y_1 = np.sin(x)
y_2 = np.cos(x)
plt.xlabel('x轴')
plt.ylabel('y轴')
plt.title('中文字符使用示例')
plt.plot(x, y_1, c = 'm', lw = 3., label = '正弦函数')
plt.plot(x, y_2, c = 'c', lw = 3., ls = '--', label = '余弦函数')
plt.scatter(data[:,0],data[:,1],c='y', label = '随机点')
plt.rcParams['font.sans-serif'] = ['SimSun']
plt.legend()
plt.show()

Tips:使用plt.rcParams['font.sans-serif']设定支持中文字符的字体,使用中文字符的用法范围与LaTex风格的符号一样,它可以用于所有注释,另外需要确保系统支持所设定的中文字符字体。

系列链接

学会Python-Matplotlib可视化,快速完成数据分析(1)

一文详解常见统计图的绘制学会Python-Matplotlib可视化,快速完成数据分析(2)

到此这篇关于Matplotlib可视化之添加让统计图变得简单易懂的注释的文章就介绍到这了,更多相关Matplotlib可视化内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Python数据可视化之用Matplotlib绘制常用图形

    一.散点图 散点图用两组数据构成多个坐标点,考察坐标点的分布,判断两变量之间是否存在某种关联或总结坐标点的分布模式. 特点:判断变量之间是否存在数量关联趋势,表示离群点的分布规律. 散点图绘制: plt.scatter(x,y) # 以默认的形状颜色绘制散点图 实例: 假设我们获取到了上海2020年5,10月份每天白天的最高气温(分别位于列表a.b),那么此时如何观察气温和随时间变化的某种规律. # 绘制图形所需的数据 y_5 = [11,17,16,11,12,11,12,13,10,14,8

  • python Matplotlib数据可视化(2):详解三大容器对象与常用设置

    上一篇博客中说到,matplotlib中所有画图元素(artist)分为两类:基本型和容器型.容器型元素包括三种:figure.axes.axis.一次画图的必经流程就是先创建好figure实例,接着由figure去创建一个或者多个axes,然后通过axes实例调用各种方法来添加各种基本型元素,最后通过axes实例本身的各种方法亦或者通过axes获取axis实例实现对各种元素的细节操控. 本篇博客继续上一节的内容,展开介绍三大容器元素创建即通过三大容器可以完成的常用设置. 1 figure 1.

  • Python matplotlib绘图可视化知识点整理(小结)

    无论你工作在什么项目上,IPython都是值得推荐的.利用ipython --pylab,可以进入PyLab模式,已经导入了matplotlib库与相关软件包(例如Numpy和Scipy),额可以直接使用相关库的功能. 本文作为学习过程中对matplotlib一些常用知识点的整理,方便查找. 这样IPython配置为使用你所指定的matplotlib GUI后端(TK/wxPython/PyQt/Mac OS X native/GTK).对于大部分用户而言,默认的后端就已经够用了.Pylab模式

  • python可视化 matplotlib画图使用colorbar工具自定义颜色

    python matplotlib画图使用colorbar工具自定义颜色 colorbar(draw colorbar without any mapple/plot) 自定义colorbar可以画出任何自己想要的colorbar,自由自在.不受约束,不依赖于任何已有的图(plot/mappable).这里使用的是mpl.colorbar.ColorbarBase类,而colorbar类必须依赖于已有的图. 参数可以参考下面的描述->matplotlib: class matplotlib.co

  • python Matplotlib数据可视化(1):简单入门

    1 matplot入门指南 matplotlib是Python科学计算中使用最多的一个可视化库,功能丰富,提供了非常多的可视化方案,基本能够满足各种场景下的数据可视化需求.但功能丰富从另一方面来说也意味着概念.方法.参数繁多,让许多新手望而却步. 据我了解,大部分人在对matplotlib接触不深时都是边画图边百度,诸如这类的问题,我想大家都似曾相识:Python如何画散点图,matplotlib怎么将坐标轴标签旋转45度,怎么设置图例字体大小等等.无论针对哪一个问题,往往都有多种解决方法,搜索

  • 基于Python数据可视化利器Matplotlib,绘图入门篇,Pyplot详解

    Pyplot matplotlib.pyplot是一个命令型函数集合,它可以让我们像使用MATLAB一样使用matplotlib.pyplot中的每一个函数都会对画布图像作出相应的改变,如创建画布.在画布中创建一个绘图区.在绘图区上画几条线.给图像添加文字说明等.下面我们就通过实例代码来领略一下他的魅力. import matplotlib.pyplot as plt plt.plot([1,2,3,4]) plt.ylabel('some numbers') plt.show() 上图是我们通

  • python可视化分析的实现(matplotlib、seaborn、ggplot2)

    一.matplotlib库 1.基本绘图命令 import matplotlib.pyplot as plt plt.figure(figsize=(5,4)) #设置图形大小 plt.rcParams['axes.unicode_minus']=False #正常显示负号 plt.rcParams['font.sans-self']=['Kai Ti'] #设置字体,这里是楷体,SimHei表示黑体 #基本统计图 plt.bar(x,y);plt.pie(y,labels=x);plt.plo

  • Python数据可视化教程之Matplotlib实现各种图表实例

    前言 数据分析就是将数据以各种图表的形式展现给领导,供领导做决策用,因此熟练掌握饼图.柱状图.线图等图表制作是一个数据分析师必备的技能.Python有两个比较出色的图表制作框架,分别是Matplotlib和Pyechart.本文主要讲述使用Matplotlib制作各种数据图表. Matplotlib是最流行的用于绘制2D数据图表的Python库,能够在各种平台上使用,可以绘制散点图.柱状图.饼图等. 1.柱状图 是一种以长方形或长方体的高度为变量的表达图形的统计报告图,由一系列高度不等的纵向条纹

  • python 使用matplotlib 实现从文件中读取x,y坐标的可视化方法

    1. test.txt文件,数据以逗号分割,第一个数据为x坐标,第二个为y坐标,数据如下:1.1,2 2.1,2 3.1,3 4.1,5 40,38 42,41 43,42 2. python部分代码 #!/usr/bin/python # coding: utf-8 import matplotlib.pyplot as plt import numpy as np import matplotlib as mpl mpl.rcParams['font.family'] = 'sans-ser

  • Matplotlib可视化之添加让统计图变得简单易懂的注释

    一.前言 在系列博文的中,我们已经学习了如何自定义绘图的颜色和样式,以使得绘制更加精美.符合审美要求.可以用Matplotlib绘制出复杂而又精美的统计图,但是如果没有注释,我们很难让其他人明白图中的点.线究竟代表着什么,有什么样的含义,也就失去了统计图的意义,为了解决这一问题,Matplotlib提供了大量对图形进行注释的方法,这些注释方法对于所有的绘图函数(如plt.plot().plt.scatter().plt.histogram()等)都是通用的,利用这些注释可以使统计图变得通俗易懂.

  • Matplotlib可视化之自定义颜色绘制精美统计图

    自定义颜色 在生活中,我们可能对色彩的搭配与审美有自己的偏好,因此,我们可能希望matplotlib遵循自定义的颜色方案,以便所绘制的图形更好地适合文档或网页. matplotlib中有多种定义颜色的方法,常见的方法包括: 1.三元组(Triplets):颜色可以描述为一个实数三元组,即颜色的红.蓝.绿分量,其中每个分量在[0,1]区间内.因此,(1.0, 0.0, 0.0)表示纯红色,而(1.0, 0.0, 1.0)则表示粉色. 2.四元组(Quadruplets):它们前三个元素与三元组定义

  • python Matplotlib基础--如何添加文本和标注

    创建一个优秀的可视化图表的关键在于引导读者,让他们能理解图表所讲述的故事.在一些情况下,这个故事可以通过纯图像的方式表达,不需要额外添加文字,但是在另外一些情况中,图表需要文字的提示和标签才能将故事讲好.也许标注最基本的类型就是图表的标签和标题,但是其中的选项参数却有很多.让我们在本节中使用一些数据来创建可视化图表并标注这些图表来表达这些有趣的信息.首先还是需要将要用到的模块和包导入Pycharm: import matplotlib.pyplot as plt import matplotli

  • R语言数据可视化ggplot添加左右y轴绘制天猫双十一销售图

    目录 构造数据集 绘制散点 修改两坐标轴信息 本文是以天猫双十一销量与增长率为例,原始的数据可以参考上一篇文章:用 ggplot 重绘天猫双十一销售额图,这里不再作过多的介绍. 同时整个的天猫双十一的销售额数据分析可以关注:天猫双十一"数据造假"是真的吗? 老规矩,先上最终成果(两张图只是颜色的差别): 上图左边 y 轴表示增长率的刻度,右边 y 轴表示销售额的数据,我们将两者在同一张图上进行展现.其实将两个统计图在同一个坐标系中呈现不算是这个绘图的难点,其真正的难点在与刻度的变换以及

  •  python用matplotlib可视化绘图详解

    目录 1.Matplotlib 简介 2.Matplotlib图形绘制 1)折线图 2)柱状图 3)条形图 3)饼图 4)散点图 5)直方图 6)箱型图 7)子图 1.Matplotlib 简介 Matplotlib 简介: Matplotlib 是一个python的 2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形,matplotlib 对于图像美化方面比较完善,可以自定义线条的颜色和样式,可以在一张绘图纸上绘制多张小图,也可以在一张图上绘制多条线,可以很方便地将数据可

  • Python matplotlib可视化之绘制韦恩图

    目录 本文速览 1.matplotlib_venn (1)2组数据venn图 (2)3组数据venn图 2.pyvenn 2组数据venn 3组数据venn 4组数据venn 5组数据venn 6组数据venn 本文速览 2组数据venn 3组数据venn 4组数据venn 5组数据venn图 6组数据venn python中Matplotlib并没有现成的函数可直接绘制venn图, 不过已经有前辈基于matplotlib.patches及matplotlib.path开发了两个轮子: matp

  • matplotlib给子图添加图例的方法

    代码如下: import matplotlib.pyplot as plt x = [1,2,3,4,5,6,7,8] y = [5,2,4,2,1,4,5,2] axe1 = plt.subplot(211) s1 = axe1.scatter(x,y, color='r', s=25, marker="o") plt.legend([s1],['A']) #或者 #s1 = axe1.scatter(x,y, color='r', s=25, marker="o"

  • Python使用matplotlib给柱状图添加数据标签bar_label()

    目录 0.更新matplotlib库 1.导入库 2.数据准备 3.绘制柱状图 4.绘图结果 5.完整代码 6.bar_label()相关参数的补充说明 0.更新matplotlib库 本文后续的实验过程都是基于matplotlib版本大于等于3.4.1,如果版本较低,是无法实行后续操作的,如何在Pycharm中直接更新matplotlib库的版本,请参照方法:以tensorflow库为例用Pycharm更新第三方库 1.导入库 直接导入matplotlib.pyplot库,代码为: impor

  • 利用python将 Matplotlib 可视化插入到 Excel表格中

    目录 数据可视化 图表插入Excel 前言: 在生活中工作中,我们经常使用Excel用于储存数据,Tableau等BI程序处理数据并进行可视化.我们也经常使用R.Python编程进行高质量的数据可视化,生成制作了不少精美优雅的图表. 但是如何将这些“优雅”延续要Excel中呢?Python绘图库有很多,我们就还是拿最基本的Matplotlib为例. 今天就为大家演示一下,如何将Matplotlib绘制的可视化图片,插入到Excel中. 其他可视化库生成的图片,也同样适用 数据可视化 目前Pyth

  • Python matplotlib可视化实例解析

    例1 使用Python+matplotlib绘图进行可视化,在图形中创建轴域并设置轴域的位置和大小,同时演示设置坐标轴标签和图例位置的用法. 参考代码: 运行结果: 例2 绘制正线余弦图像,然后设置图例字体.标题.位置.阴影.背景色.边框颜色.分栏.符号位置等属性. 运行效果: 例3 生成模拟数据,创建两个子图,分别绘制正弦曲线和余弦曲线,把两个子图的图例显示在一起,并显示于子图之外. 运行效果: 例4 生成模拟数据,绘制正弦曲线.余弦曲线和两个散点图,然后分别为曲线和散点图设置图例,在一个图形

随机推荐