机器学习入门(三)可视化库Matplotlib

--------韦访 20181008

1、概述

Matplotlib是Python的一个可视化库,我们在学习TensorFlow的课程中也接触过,说白了,它就是一个画图的工具。下面来简单介绍。

2、显示空白的“画板”

如果还没安装Matplotlib库,可以使用以下命令安装,

sudo apt-get install python-matplotlib

sudo apt-get install python-tk

先来显示一个空白的“画板”吧,我不知道这个叫什么,就称它为“画板”吧。

很简单,上代码,

import matplotlib.pyplot as plt
plt.plot()
plt.show()

运行结果:

注意,一定要记得plt.show()了,才会显示出这个画板,否则不会显示的。

3、画折线

还是用泰坦尼克号的数据集,我想横轴显示乘客ID“PassengerId”,纵轴显示年龄“Age”,只显示前10行,代码如下,

import pandas as pd
import matplotlib.pyplot as plt
titanic_train = pd.read_csv('titanic_train.csv')
titanic = titanic_train[0:10]
plt.plot(titanic['PassengerId'], titanic['Age'])
plt.show()

运行结果:

因为第6个乘客的年龄缺失,所以没有折线。

上图虽然有了折线,但是横纵坐标,以及这个图代表什么含义并没有标明,现在我们继续完善它,代码如下,

import matplotlib
import pandas as pd
import matplotlib.pyplot as plt
titanic_train = pd.read_csv('titanic_train.csv')
titanic = titanic_train[0:10]
plt.plot(titanic['PassengerId'], titanic['Age'])
plt.xticks(rotation=45) #x轴的节点倾斜45度显示
plt.xlabel('PassengerId')
plt.ylabel('Age')
simhei = matplotlib.font_manager.FontProperties(fname='simhei.ttf')
plt.title(u'泰坦尼克号数据集客户ID & 年龄', fontproperties=simhei) #不这么做,中文显示会乱码

plt.show()

运行结果:

4、显示多个图

如果想在一个界面显示多个图怎么办?我们TensorFlow课程中也用过这个功能。直接上代码,

import matplotlib.pyplot as plt
import pandas as pd

titanic_train = pd.read_csv('titanic_train.csv')

fig = plt.figure()

fig1 = fig.add_subplot(2, 2, 1)
fig2 = fig.add_subplot(2, 2, 2)
fig3 = fig.add_subplot(2, 2, 4)

titanic = titanic_train[0:10]
fig1.plot(titanic['PassengerId'], titanic['Age'])

fig1.set_title('fig1')
fig2.set_title('fig2')
fig3.set_title('fig3')
plt.show()

运行结果:

5、在一个坐标系里显示多个折线

还可以在一个坐标系里同时显示多个折线,并用不同颜色标注,代码如下,

import numpy as np
import matplotlib.pyplot as plt
fig = plt.figure(figsize=(6, 4))

plt.plot(np.arange(10), np.random.randint(1, 10, 10), c='red')
plt.plot(np.arange(10), np.random.randint(1, 10, 10), c='blue')
plt.show()

 运行结果:

上图还有一个很大的缺点,这个红色和蓝色的折线分别代表什么,我们不知道啊,接下来,我们继续完善,代码如下,

import numpy as np
import matplotlib.pyplot as plt
fig = plt.figure(figsize=(6, 4))

plt.plot(np.arange(10), np.random.randint(1, 10, 10), c='red', label='label1')
plt.plot(np.arange(10), np.random.randint(1, 10, 10), c='blue', label='label2')
plt.legend(loc='best')
plt.show()

运行结果:

 

6、柱形图

上面都是在画折线,现在我们来画画柱形图,代码如下,

import matplotlib
import numpy as np
import matplotlib.pyplot as plt
xy = plt.subplot()
xy.bar(np.arange(10), np.random.randint(1, 10, 10))
simhei = matplotlib.font_manager.FontProperties(fname='simhei.ttf')
plt.xlabel(u'x轴', fontproperties=simhei)
plt.ylabel(u'y轴', fontproperties=simhei)
plt.title(u'柱形图', fontproperties=simhei)
plt.show()

运行结果,

7、描点

如果只需要根据坐标描点呢?代码如下,

import numpy as np
import matplotlib.pyplot as plt
xy = plt.subplot()
xy.scatter(np.arange(10), np.random.randint(1, 10, 10))
plt.show()

运行结果:

8、显示图片

我们在学习TensorFlow时,有使用Matplotlib显示图片的,现在再来写一次显示图片的代码,

import matplotlib.pyplot as plt
from PIL import Image

img = Image.open('dog.jpeg')
plt.figure()
plt.imshow(img)
plt.show()

 运行结果:

Matplotlib就讲到这了,也没什么好讲的,用到的时候不会再百度了

猜你喜欢

转载自blog.csdn.net/rookie_wei/article/details/83003779
今日推荐