前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >机器学习储备(9):matplotlib绘图原理及实例

机器学习储备(9):matplotlib绘图原理及实例

作者头像
double
发布2018-04-02 14:28:17
1.2K0
发布2018-04-02 14:28:17
举报
文章被收录于专栏:算法channel算法channel

matplotlib绘图的基本元素都包括都哪些?常用的绘图API如何应用。本文做个入门介绍吧。

1 基本元素

通过一个大部分都是用默认值的例子,初步认识下matplotlib中图形的基本元素,如下图所示:

import numpy as np

import matplotlib.pyplot as plt

def f(x):

return 1/(1+np.power(2.17,-x))

x = np.arange(-10.0, 10.0, 1)

y = f(x)

xlim(-10, 10)#缩小x轴范围

plt.plot(x, y,marker='o', linestyle=':', color='g') #在第一个子图上面绘制函数

plt.grid() #添加网格

plt.legend("sigmoid") #添加sigmoid函数

plt.xticks() #添加x轴的刻度

plt.title("Sigmoid") #标题

plt.show()

大家可以对用着看看各个元素在下图中的显示为如下:

2 核心API,对象和组装

matplotlib 的对象体系非常严谨,为我们提供了巨大的方便性和使用效率。用户在熟悉了核心对象之后,可以轻易的定制图像。

先来看看 Figure类,Axes类,直接调用Figure()构造函数,便得到一个fig实例,然后调用add_axes得到 axes实例。

fig = plt.figure() # fig的图像坐标称为Figure坐标(此外还有一个数据坐标)

ax = fig.add_axes([0.1, 0.1, 0.8, 0.8])

因此,Figure 和 axes 的关系如下图所示,并且Axes对象又能创建xaxis,yaxis,data,title相关对象,其中data是指绘制的函数图像的数据 x1,x2。

尽管data是数据绘图的关键部分,也就是数据本身的图形化显示,但是必须和xaxis, yaxis, title一起,才能真正构成一个绘图区域axes。一个单纯的,无法读出刻度的线是没有意义的。xaxis, yaxis, title合起来构成了数据的辅助部分(data guide)。

这些所有的元素都来自于一个叫做Artist的基类,它们都是逻辑层上的对象,那么在matplotlib中真正完成绘图功能的物理实现层,是canvas对象,它代表了真正进行绘图的后端,英文叫做backend ,Artist必须连接后端绘图程序才能真正在屏幕上绘制出来(或者保存为文件)。我们可以将canvas理解为绘图的物理(或者说硬件)实现。

3 子图绘制

matplotlib支持绘制子图,绘制子图的API为subplot,每次调用一个子图,就会生成一个空的子图,然后再在上面plot,如下图所示:

import numpy as np

import matplotlib.pyplot as plt

def f(x,alfa):

return 1/(1+np.power(2.17,-alfa*x))

x = np.arange(-5.0, 5.0, 0.01)

y = f(x,0.1)

fig = plt.figure()

ax = fig.add_subplot(221) #生成第一个子图

plt.title('sub1')

ax.plot(x, y,linestyle='-',linewidth=2,color='r') #在子图上面绘制函数

ax = fig.add_subplot(222)

y = f(x,1)

plt.title('sub2')

ax.plot(x, y,linestyle='-.',linewidth=3,color='g')#在子图上面绘制函数

ax = fig.add_subplot(223)

y = f(x,5)

plt.title('sub3')

ax.plot(x, y,linestyle=':',linewidth=3,color='b') #在子图上面绘制函数

ax = fig.add_subplot(224)

y = f(x,10)

plt.title('sub4')

ax.plot(x, y) #在子图上面绘制函数

#调整子图的间距,避免每个子图的标题被遮住

fig.tight_layout()

plt.show()

4 散点图加折线图

线性回归模拟一组高斯分布的数据,代码如下所示:

import numpy as np

import matplotlib.pyplot as plt

from sklearn import linear_model

X = np.linspace(-1,1,20)

y = X*0.2+0.1

gerr = np.random.normal(0,0.03,20)

y = y+gerr

plt.scatter(X,y)

la = linear_model.LinearRegression()

X = X.reshape(-1,1)

la.fit(X,y)

plt.plot(X,la.predict(X),color='g')

plt.show()

从回归图中看出,原始分布的数据为散点图所画,通过调用接口scatter,拟合线图调用plot接口绘制。

5 总结

以上我们讨论了用matplotlib绘图的基本原理,包括核心的API,对象等,然后借助两个例子:多个子图,和散点图加折线图绘制在一张图上阐述了上面所说的这些核心绘图元素对象。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-11-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员郭震zhenguo 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档