上一节我们简单的讲了一下关于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'))
自此,我们的小山坡已经画好了,我们介绍了以上几类画图方式,但是一般我们很少用到,只要学会基本的线性和散点画图,平常工作中就已经够用了。
其他
差点忘了,还有一个动态效果
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模块线性画图基本知识主要是为了监督自己学习,顺便分享给大家,如有错误请多谅解,及时指正,谢谢