深度学习之路(四)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

初级图形绘制

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

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
字体,然后进行操作:

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

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

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

自定义格式以及颜色缩写

如果我们要显示虚线图,

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()能够在同个图中绘制多个内容

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(柱状图)

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条形条数
ranggex轴数据范围
normed是否将直方图频数换成频率
weights参数可为每一个数据点设置权重
cumulative是否需要计算累计频数或频率
bottom添加基准线,默认是0
orientation设置垂直水平方式
rwidth条形宽度百分比
color填充色

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()
```

![绘制图形](http://lansus.coding.me/image/matplotlib_demo3.png)

## Scatter Plot(散点图)
```
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|边缘颜色设置|

使用代码如下:

```
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)


```
![绘制图形](http://lansus.coding.me/image/matplotlib_demo4.png)



## Pie Chart(饼状图)
```
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%%")

```
![绘制图形](http://lansus.coding.me/image/matplotlib_demo5.png)

## 3D Plot(3D图)
```
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()
```

![绘制图形](http://lansus.coding.me/image/matplotlib_demo6.png)


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值