Matplotlib 入门

  1. 云栖社区>
  2. 博客>
  3. 正文

Matplotlib 入门

游客ujwrqva7vv3wy 2019-08-10 17:09:27 浏览484
展开阅读全文

最近一直在学习有关机器学习的内容,发现有关可视化的内容无法绕过,在网上搜索了很久,看了一些中英文的资料和书,这里主要是记录下来,主要供自己进一步学习之用。

本文适合零基础,但你需要对Python, Numpy, Pandas 有基本的了解。

首先完成以下的中文翻译资料的学习,原作者的github链接也一并奉上,你可以 clone 下来。
学习这个课程的过程中,你需要了解的基本API函数:

完成了这个学习,

使用面向对象界面画图的一般步骤就是

  1. 建立一个 Figure 对象
  2. 在这个 Figure 里建立一个或n个 Axes 对象
  3. 这些 Axes 里分别画图、装饰
  4. 我们画完图以后一般要加上标题、图例这些元素。这些功能散布在 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/

网友评论

登录后评论
0/500
评论