深度学习之路(四)matplotlib使用

matplotlib 介绍

matplotlob,是python里辅助制作图表的代码库,属于做机器学习的基础几个库之一。
Matplotlib是一个Python 2D绘图库,可以生成各种硬拷贝格式和跨平台的交互式环境的出版物质量数据。Matplotlib可用于Python脚本,Python和IPython shell,Jupyter笔记本,Web应用程序服务器和四个图形用户界面工具包。

Matplotlib试图让简单的事情变得简单而艰难。您只需几行代码即可生成绘图,直方图,功率谱,条形图,错误图,散点图等。有关示例,请参阅 示例图和缩略图库。

对于简单的绘图,pyplot模块提供了类似MATLAB的接口,特别是与IPython结合使用时。对于高级用户,您可以通过面向对象的界面或MATLAB用户熟悉的一组函数完全控制线型,字体属性,轴属性等

Matpotlib的基本使用

这是一张使用plot患处的2D的属性分布示意图,用来说明图表的常用属性以及显示的位置

parts of a Figure

初级图形绘制

我们可以根据数据简单的绘制

1
2
3
4
5
6
7
8
9
10
11
12
13
import matplotlib
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
from IPython.display import *
%matplotlib inline
x=np.arange(1.11)
y=2*x+5
plt.title("Matylotlib demo")
plt.xlabel("x")
plt.ylabel("y")
plt.plot(x,y)
plt.show()

运行结果

它默认是不显示中文的,如果我们要先显示中文,我们可以先下载SimHei.ttf
字体,然后进行操作:

1
2
zhfont1=matplotlib.font_manager.FontProperties(fname="SimHei.ttf")
plt.xlabel("x轴",fontproperties=zhfont1)

或者直接可以用本机上的字体,确认找到本机上适合中文字体,然后操作:

1
plt.rcParams['font.family']=['STFangsong']

自定义格式以及颜色缩写

如果我们要显示虚线图,

1
2
3
4
5
6
7
x=np.arange(1.11)
y=2*x+5
plt.title("Matylotlib demo")
plt.xlabel("x")
plt.ylabel("y")
plt.plot(x,y,"--r") #显示虚线红色
plt.show()

作为线性图的替代,可以通过向 plot() 函数添加格式字符串来显示离散值。 可以使用以下格式化字符

字符 描述
- 实线样式(默认样式)
短横线
-. 点划线
: 虚线
. 点标记
, 像素标记
o 圆标记
* 星形标记

以下是matplotlib用到的颜色的缩写

字符 颜色
‘b’ 蓝色
‘g’ 绿色
‘r’ 红色
‘c’ 青色
‘m’ 品红色
‘y’ 黄色
‘k’ 黑色
‘w’ 白色

绘制多个内容

subplot()能够在同个图中绘制多个内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import numpy as np 
import matplotlib.pyplot as plt
# 计算正弦和余弦曲线上的点的 x 和 y 坐标
x = np.arange(0, 3 * np.pi, 0.1)
y_sin = np.sin(x)
y_cos = np.cos(x)
# 建立 subplot 网格,高为 2,宽为 1
# 激活第一个 subplot
plt.subplot(2, 1, 1)
# 绘制第一个图像
plt.plot(x, y_sin)
plt.title('Sine')
# 将第二个 subplot 激活,并绘制第二个图像
plt.subplot(2, 1, 2)
plt.plot(x, y_cos)
plt.title('Cosine')
# 展示图像
plt.show()

绘制图形

几种常见图表的操作

Histogram(柱状图)

1
plt.hist(x, bins= 10, range= None, normed= False, weights= None, cumulative= False, bottom= None, histtype= 'bar', align= 'mid', orientation= 'vertical', rwidth= None, log= False, color= None, label= None, stacked= False)
属性名 描述
x 指定绘制直方图的数据
bins 条形条数
rangge x轴数据范围
normed 是否将直方图频数换成频率
weights 参数可为每一个数据点设置权重
cumulative 是否需要计算累计频数或频率
bottom 添加基准线,默认是0
orientation 设置垂直水平方式
rwidth 条形宽度百分比
color 填充色
1
2
3
4
5
6
7

data=pd.DataFrame([90,70,45,58,68,72],index=["a","b","c","d","e","f"])
plt.hist(data[0],facecolor='r',histtype="bar")
plt.rcParams['font.family']=['SimHei.ttf']
plt.xlabel("学生")
plt.ylabel("成绩")
plt.show()

绘制图形

Scatter Plot(散点图)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
plt.scatter(
x,
y,
s=None,
c=None,
marker=None,
cmap=None,
norm=None,
vmin=None,
vmax=None,
alpha=None,
linewidths=None,
verts=None,
edgecolors=None,
*,
data=None,
**kwargs,
)

下面是主要属性

属性名 描述
x 散点图dx轴数据
y 散点图y轴数据
s 区域面积的大小
colors 散点图填充颜色
marker 显示标记,自定义散点的形状,例如marker=’,’散点会变成正方形,具体看参照[这里]https://matplotlib.org/api/markers_api.html?highlight=matplotlib%20markers#module-matplotlib.markers)
cmap 颜色地图
norm 是否转换成频率,只有当c是floa类型才可以使用
vmax,vmin 与norm配套使用,调整数据亮度
alpha 透明度
linewidths 调整散点边缘线宽度
edgecolors 边缘颜色设置

使用代码如下:

1
2
3
4
5
6
size=50
x=np.random.rand(size)
y=np.random.rand(size)
area=np.pi*(135*x**2)
colors=np.random.rand(size)
plt.scatter(x,y,s=area,c=colors,alpha=0.5,marker="o",linewidths=2)

绘制图形

Pie Chart(饼状图)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
plt.pie(
x,
explode=None,
labels=None,
colors=None,
autopct=None,
pctdistance=0.6,
shadow=False,
labeldistance=1.1,
startangle=None,
radius=None,
counterclock=True,
wedgeprops=None,
textprops=None,
center=(0, 0),
frame=False,
rotatelabels=False,
*,
data=None,
)

x=[25,25,50]
explode=(0.01,0.01,0.01)
labels=['xioaming','xiaocheng','xiaoxiao']
plt.pie(x,labels=labels,explode=explode,autopct="%.1f%%")

绘制图形

3D Plot(3D图)

1
2
3
4
5
6
7
8
9
10
11
import matplotlib as cm
from mpl_toolkits.mplot3d import Axes3D
X=np.arange(-5,5,0.25)
Y=np.arange(-5,5,0.25)
X,Y=np.meshgrid(X,Y)
R=np.sqrt(X**2+Y**2)
Z=np.sin(R)
fig=plt.figure()
ax=Axes3D(fig)
ax.plot_surface(X,Y,Z,rstride=1,cstride=1)
plt.show()

绘制图形

Copyright © 2016 - 2020 Life-long Learning All Rights Reserved.

UV : | PV :