深度学习入门 之 Matplotlib学习笔记(一)

引言:matplotlib是python很方便的一个绘图库,可以绘制比如线状、柱状、折线、2D、3D等图片。

目录

一、 基本功能

二、图像解释

2.1 legend图例

2.2 annotation标注

三、图像绘制

3.1 scatter散点绘制

3.2 bar柱状图

3.3 contour等高线图

3.4 Image图片

3.5 3D plot


一、 基本功能

matplotlib画图基本用法包括:基本图像的绘制、选取X Y坐标轴及设置坐标轴lebal,X Y的范围和刻度以及XY坐标轴的相对位置。

import numpy as np
import matplotlib.pyplot as plt

# 1 画一个简单图像
x = np.linspace(-1, 1, 50)
y = x
plt.plot(x, y)
# 限定x y坐标范围
plt.xlim((-0.5, 0.5))
plt.ylim((-0.5, 0.5))
# 给x 和 y 坐标轴取lebal
plt.xlabel('I am X')
plt.ylabel('I am Y')
# 给x y坐标值重新赋值
new_xticks=np.linspace(-0.5,0.5,5)
plt.xticks(new_xticks)
plt.yticks([-0.4,-0.2,0.0,0.2,0.4],
           [r'$I\ am\ -0.4$',r'$I\ am\ -0.2$',r'$I\ am\ -0.0$',
            r'$I\ am\ 0.2$',r'$I\ am\ 0.4$'],color='g')
# 修改坐标轴的位置 取消top和rught 设置x和y坐标轴
ax=plt.gca()
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')
# 设置x y 坐标轴具体位置 eg:x轴对齐y=0.2   y轴对齐x=0.2
ax.spines['bottom'].set_position(('data',0.2))
ax.spines['left'].set_position(('data',0.2))

最终绘制的图像如下图:(若想看每一步的变化效果,建议自己试验一下)

 最后,如果ticks设置特殊符号,eg:α  表示方法为\alpha, σ 表示方法为 \sigma

二、图像解释

2.1 legend图例

# 1 画一个简单图像
x = np.linspace(-1, 1, 50)
y1 = x**2
y2 = x
plt.plot(x, y1,color='g',ls='--',label='aaa')
plt.plot(x,y2,color='black',label='bbb')

# legend 图例 对图像的线条解释
plt.legend()

 当然legend图例也可以定制:


l1, = plt.plot(x, y1,color='g',ls='--',label='aaa')
l2, = plt.plot(x,y2,color='black',label='bbb')

# legend 图例 对图像的线条解释
plt.legend(handles=[l1],labels=['a'])

 注意plt.plot是有类型为列表的返回值的,故接受需要后加' , '这种方法适合仅标注部分线条的情况

2.2 annotation标注

# annotation标注
x0 = 0.5
y0 = x0
plt.scatter(x0, y0, s=50,c='b')
plt.plot([x0,x0],[y0,0],'k--',lw=1.5)
# 法一
plt.annotate('x=%s'%y0,xy=(x0,y0),xycoords='data',xytext=(+30,-30),
              textcoords='offset points',fontsize=16,
              arrowprops=dict(arrowstyle='->',connectionstyle='arc3,rad=.3'))
# 法二
plt.text(-0.7,0.5,r'$this\ is\ x=0.5$',fontdict={'size':10,'color':'r'})

那么如果出现线条很粗,覆盖了坐标轴的刻度,我们可以采用设置tick能见度的方式让刻度显示出来。

# 设置tick能见度
for label in ax.get_xticklabels()+ax.get_yticklabels():
    label.set_fontsize(12)
    label.set_bbox(dict(facecolor='red',edgecolor='None',alpha=0.5))

三、图像绘制

3.1 scatter散点绘制

# 1 绘制一个散点图
n = 1024
x = np.random.normal(0,1,n)
y = np.random.normal(0,1,n)
# 设置颜色和集中形状
T = np.arctan2(y,x)
plt.scatter(x,y,s=75,c=T,alpha=0.5)

3.2 bar柱状图

方向分为向上向下两种方式:

# 绘制bar柱状图
x = np.arange(5)
y = x/2
# 1 双向
plt.bar(x, +y)
plt.bar(x,-y,facecolor='pink')
# 2 给柱状图加数字
for x,y in zip(x,y):
    plt.text(x+1,y+0.6,'%.2f'%y)
    plt.text(x+1,-y-0.8,'%.2f'%y)

 text()还有其他参数可以个性化定制。

3.3 contour等高线图

# 绘制等高线图 高度函数不是唯一 视情况而定
def f(x,y):
    return (1-x/2+x**5+y**3)*np.exp(-x**2-y**2)
n=256
x=np.linspace(-3,3,n)
y=np.linspace(-3,3,n)
# 将x y映射到网格上
X,Y=np.meshgrid(x,y)
# 填充颜色 划线 线上填充文字
plt.contourf(X,Y,f(X,Y),20,alpha=0.75,cmap=plt.cm.hot)
c=plt.contour(X,Y,f(X,Y),20,colors='black',lw=.5)
plt.clabel(c, inline=True,fontsize=10)

3.4 Image图片

# 绘制image图片 很像色板
x= np.arange(9).reshape((3,3))
plt.imshow(x, interpolation='nearest',cmap='bone',origin='lower')
plt.colorbar(shrink=0.8)#可设置压缩比

3.5 3D plot

# 3D 图像
from mpl_toolkits.mplot3d import Axes3D
fig=plt.figure()
ax=Axes3D(fig)

x=np.arange(-4,4,0.25)
y=np.arange(-4,4,0.25)
X,Y=np.meshgrid(x,y)
R=np.sqrt(X**2,Y**2)
Z=np.cos(R)

ax.plot_surface(X,Y,Z,rstride=1,cstride=1,cmap=plt.get_cmap('rainbow'))
ax.contourf(X,Y,Z,zdir='z',offset=-1,cmap='rainbow')

接下

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

敲不好代码的小透明

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值