matplotlib 入门教程(二)

上一节我们简单的讲了一下关于matplotlib的最基本的入门画图方式(线性画图),这一节我们继续上一节的内容,简单的过一下关于matplotlib其他的画图方式

一、其他各类图形画图

1.散点图

#首先还是导入画图模块
import matplotlib.pyplot as plt
import numpy as np
#构造(x,y)数据点
x = np.linspace(0,10,50)
y = np.sin(x)
#画图
plt.scatter(x,y)

或者
plt.plot(x,y,'o')

注:scatter和plot两个方法都可以画散点图,但是有本质区别,scatter画散点图的时候会对每个点进行颜色大小等渲染,plot方法则是复制彼此的点,所以在效率上面plot方法会比较高(数据量大的时候建议用这个方法),但是如果你需要对每个点设置属性,可以用scatter
参数

2.柱状图

#为了让柱状图比较明显,我们重新构造X,Y值
X = [1,2,3,4,5]
Y = [1.4,3,2.5,4,3]
#画图
plt.bar(X,Y)
#每根柱子的高度标签(y的值)
for x,y in zip(X,Y):
    #ha : horizontal alignment
    #va : vertical alignment
    plt.text(x,y,'%.2f'%y,ha = 'center',va='bottom')

3.等高线图

#函数定义
def f(x,y):
    return (1-x/2 + x**5+y**3) * np.exp(-x **2 -y**2)  #借用前辈的函数哈哈
    
#构造数据
x=np.linspace(-3,3,300)
y=np.linspace(-3,3,300)

#meshgrid函数用两个坐标轴上的点在平面上画网格
X,Y = np.meshgrid(x,y)
#高度数据
Z = f(X,Y)
#绘制等高线赋值给C
C=plt.contour(X,Y,Z,10,colors = 'black')  #其中10为等高线分成多少个部分,如果是0则分成2半,10为12份
#等高线区域填充
plt.contourf(X,Y,Z,10,alpha=0.75,cmap=plt.cm.hot) #cmap属性可以查看plt.cm模块
#设置等高线的标度
plt.clabel(C,inline = True,fontsize = 8)
#设置图渲染为渐变图
plt.imshow(Z,extent=[-3,3,-3,3],origin='lower',cmap=plt.cm.hot)
#设置颜色标签
plt.colorbar()

4.三维图

下面我们来看看比较炫的三维图,画三维图之前我们先引进一个新的模块:

from mpl_toolkits import mplot3d

导入模块后,我们便可以使用projection=‘3d’ 来创建3维坐标,如下:

#创建画布
fig = plt.Figure()
#创建画图对象
ax = plt.axes(projection='3d')
#构造数据点
x = np.linspace(-1,1,50)
y = np.linspace(-1,1,50)
#同样将x,y映射到平面铺开
X,Y = np.meshgrid(x,y)
#高度我们还是利用上面的等高线函数
Z = f(X,Y)
ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=plt.get_cmap('rainbow'))

自此,我们的小山坡已经画好了,我们介绍了以上几类画图方式,但是一般我们很少用到,只要学会基本的线性和散点画图,平常工作中就已经够用了。

其他

差点忘了,还有一个动态效果,我们简单介绍一下引用自https://blog.csdn.net/gaotihong/article/details/80983937

import numpy as np
from matplotlib import pyplot as plt
from matplotlib import animation
 
fig,ax = plt.subplots()
 
x = np.arange(0,2*np.pi,0.01)
#因为这里返回的是一个列表,但是我们只想要第一个值
#所以这里需要加,号
line, = ax.plot(x,np.sin(x))
 
def animate(i):
    line.set_ydata(np.sin(x + i/10.0))#updata the data
    return line,
 
def init():
    line.set_ydata(np.sin(x))
    return line,
 
 
# call the animator.  blit=True means only re-draw the parts that have changed.
# blit=True dose not work on Mac, set blit=False
# interval= update frequency
#frames帧数
ani = animation.FuncAnimation(fig=fig, func=animate, frames=100, init_func=init,
                              interval=20, blit=False)
 
plt.show()

以上为利用python matplotlib模块线性画图基本知识主要是为了监督自己学习,顺便分享给大家,如有错误请多谅解,及时指正,谢谢

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值