Matplotlib 入门
最近一直在学习有关机器学习的内容,发现有关可视化的内容无法绕过,在网上搜索了很久,看了一些中英文的资料和书,这里主要是记录下来,主要供自己进一步学习之用。
本文适合零基础,但你需要对Python, Numpy, Pandas 有基本的了解。
首先完成以下的中文翻译资料的学习,原作者的github链接也一并奉上,你可以 clone 下来。
学习这个课程的过程中,你需要了解的基本API函数:
完成了这个学习,
使用面向对象界面画图的一般步骤就是
- 建立一个 Figure 对象
- 在这个 Figure 里建立一个或n个 Axes 对象
- 这些 Axes 里分别画图、装饰
- 我们画完图以后一般要加上标题、图例这些元素。这些功能散布在 Matplotlib API 的各处
加标题可以使用 Axes 对象的 set_title 方法。
坐标轴的标签可以使用 Axes 对象的 set_xlabel 和 set_ylabel 方法。
图例可以使用 Axes 对象的 legend 方法创建。这 个函数会使用 Line2D 对象的 label 属性。注意 上一节最后的那一段代码,Ax.plot() 这一行我们并没有使用 plot 的返回值,实际上它的返回值正是 Line2D 对象的列表,所以我们可以这样设置 label:
Ax.plot(X1, Y1, label="blabla") 也可以这样
Lines = Ax.plot(X1, Y1) Lines[0].set_label("blabla") 如果我们在一个 plot 调用里画多条线,同时设 label,这些线都会有相同的 label。设置完这些以后,只需调用 Ax.legend(),图例就会出现在图的右上角。如果我们使用上一节 的那个例子,右上角并不是放图例的好地方,这时我们可以使用 legend 的 loc参数。这个参数可以是一个字符串, 比如"right","lower left" 之类,也可以是一 个整数,具体定义请见 官方文档。这里我们可以简单地使用 0 或者 "best" 让 Matplotlib 自动选择位置,
Ax.legend(loc=0) 现在我们的图基本成型,可以插入到文档里了。这时我们可能想调整图的大小, 我们可以修改 Figure 构造函数的调用,
Fig = Plt.figure(figsize=(4,3)) 这样图的大小就会是宽 4 高 3,单位传说是英寸。也可以使用 Fig 的 set_figwidth 和 set_figheight 方法。如果你把图的尺寸改得比较小的话,可能会 发生一件非常奇妙的事,就是坐标轴的标签被图的边界遮住了,或者干脆不见了。 解决办法就是调整绘图区域的四个边界在图中的位置,比如下面的代码
Fig.subplots_adjust(left=0.15, top=0.9) 把绘图区域的左边界放在图左边 15% 的位置,上边界放在高的 90% 的位置。
Matplotlib 中的文本 Matplotlib 有很强的文本功能。它可以处理普通的文本,也可以使用 LaTeX 渲 染数学公式。Matplotlib 还带了一个 LaTeX 引擎,可以在系统里没有 LaTeX 的 时候渲染数学公式。以下代码使用默认字体(貌似是 Verdana)显示 x 轴的标题
Ax.set_xlabel("x") 如果你要使用 LaTeX 来排这个标题,只需要使用 Python raw string,并把标 题放在数学模式里,
Ax.set_xlabel(r" 𝑥
x
") 注意即便是使用 raw string,不在数学模式里的部分仍然不会使用 LaTeX。
Matplotlib 的 Axes 类有一个 text 方法,可以 在一个 Axes 对象的任意位置放置一个文本。 Figure 也有一个 figtext 方法用来在 Figure 对象的任意位置放置文本。具体用法请见 官方文档。 Axes 对象还有一个超级强大的 annotate 方法, 可以满足你对标注的最变态需求。
要改变文本的默认字体,需要使用 pyplot 模块的 rc 函数,
Plt.rc("font", family="Helvetica") 不过如果你指定的字体是 OpenType 的话,貌似不能嵌入到 PDF 里…
请参考:
1)github - https://github.com/rougier/matplotlib-tutorial
2) Translation - https://liam.page/2014/09/11/matplotlib-tutorial-zh-cn/
3) https://www.cnblogs.com/wei-li/archive/2012/05/23/2506940.html
4) https://journals.plos.org/ploscompbiol/article?id=10.1371/journal.pcbi.1003833
以下为草稿:
http://liyangbit.com/pythonvisualization/matplotlib-top-50-visualizations/
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
System.out.println
from: https://javapapers.com/core-java/system-out-println/ System.out.println This Java tutorial is to explain what System.out.println is and how it works. It is love at first type. How many times have we used System.out.println till now? It is one of the most number of times compiled statement in the history of java. We shortly call it SOP. What is System.out.println System.out.println is a Java statement that prints the argument passed, into the System.out which is generally stdout. System - i...
- 下一篇
数据结构(2):栈的原理和实现
一、介绍 栈是一种数据先入后出,后入先出的数据结构。 如果图所示,将数字 10、15、6、9 存入栈后,从栈中取到的数据按顺序将会是 9、6、15、10。栈的结构像我们生活中的箱子,最先放入的物品将会在箱子的最底部,最后放入的数据在最上面,拿物品时也需要从最上面拿起。 二、代码实现 1、创建 MyStack 类作为自定义的栈 public class MyStack { } 2、声明所需的属性 底层使用数组存储数据,也可以使用java的泛型替代Object类型。 private Object[] arr;//存储数据 private int top;//栈顶的位置 栈顶:整个栈最上面(最后入栈)的元素,也就是数组中最后存入的元素。 栈底:整个栈最下面(最先入栈)的元素,也就是数组中最先存入的元素。 3、栈的构造方法 public MyStack(){ arr = new Object[10]; top = -1; } /** * 参数为数组的初始长度 * @param maxSize */ public MyStack(int maxSize){ arr = new Object[ma...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS关闭SELinux安全模块
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- CentOS7安装Docker,走上虚拟化容器引擎之路
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS8编译安装MySQL8.0.19
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Hadoop3单机部署,实现最简伪集群