Matplotlib 简介
Python 中最流行的二维绘图库,它可以轻松创建绘图、直方图、条形图、散点图等。除了 Pandas 和 Seaborn 之外,它还可以无缝集成,以创建更复杂的视觉效果。但它也有一些缺陷:
- Matplotlib 有一个过于冗长的命令式 API。
- 有时样式默认较差。
- 对 Web 和交互式图形的支持较差。
- 对大型和复杂的数据,速度通常比较慢。
下面开始进行动画处理并观察可视化效果。
1.线图
看一下如何使用线图绘制动画正弦波和余弦波。
导入必要的库:
import ma as anime
import ma as plt
import numpy as np
import pandas as pd
动画代码:
fig=()
l, =([],[],'k-')
l2, = ([], [], 'm--')
p1, = ([], [], 'ko')
p2, = ([], [], 'mo')
('xlabel')
('ylabel')
('title')
(-5, 5)
(-5, 5)
def func(x):
return np.sin(x)*3
def func2(x):
return np.cos(x)*3
metadata=dict(title="Movie",artist="sourabh")
writer= anime.PillowWriter(fps=15,metadata=metadata)
xlist=[]
ylist=[]
ylist2 = []
xlist2 = []
with wri(fig,"sin+co;,100):
for xval in np.linspace(-5,5,100):
xli(xval)
yli(func(xval))
l.set_data(xlist,ylist)
l2.set_data(xlist2,ylist2)
(xval,func(xval))
wri()
for xval in np.linspace(-5,5,100):
xli(xval)
yli(func2(xval))
l.set_data(xlist,ylist)
l2.set_data(xlist2,ylist2)
(xval,func2(xval))
wri()
在上面的代码行中,首先创建一个空白的图,然后将 x 轴和 y 轴限制设置为-5 到 5 之间,为正弦波和余弦波创建函数。这里用的是“Pillowwriter”软件包为动画绘图创建 gif 格式。gif 格式可以通过使用“with wri(图, 的名称,gif 的 dpi)”存储在驱动器上。
在这个图里,实线是正弦波,虚线是余弦波。
2.曲面图
曲面图以二维形式显示三维关系,变量位于 x 轴和 y 轴上,响应变量 (z) 由光滑曲面表示。它通常用于研究具有两个或多个连续特征的模型拟合。
导入库:
import matplotlib
from matplotlib import cm
import ma as anime
import ma as plt
import numpy as np
import pandas as pd
动画代码:
np.random.seed(29680801)
fig, ax = (subplot_kw=dict(projection='3d'))
(-5, 5)
(-5, 5)
metadata=dict(title="Movie",artist="sourabh")
writer= anime.PillowWriter(fps=15,metadata=metadata)
def func(x,y,r,t):
return np.cos(r/2+t)*np.ex(r)/50)
xdata = np.linspace(-10, 10, 1000)
ydata = np.linspace(-10, 10, 1000)
x_list, y_list = np.meshgrid(xdata, ydata)
r_list = np.sqrt( np.square(x_list) + np.square(y_list) )
with wri(fig, "ex;, 100):
for t in np.linspace(0,20,160):
z = func(x_list,y_list,rlist, t)
ax.set_zlim(-1, 1)
ax.plot_surface(x_list,y_list,z,cmap=cm.viridis)
wri()
()
对于创建一个三维图,我们需要 x,y 和 z。对于 z 值,我创建了一个函数,该函数将根据 x 轴,y 轴的值以及它们的平方根来计算值。
3.回归图
np.random.seed(23680545)
metadata=dict(title="Movie",artist="sourabh")
writer= anime.PillowWriter(fps=15,metadata=metadata)
fig = ()
(-8, 8)
(-8, 8)
def func(x):
return x*1.2 + 0.1 + np.random.normal(0,2, x.shape)
x = np.random.uniform(-7,7,10)
x = np.sort(x)
y = func(x)
coeff = np.polyfit(x,y,1)
print(coeff)
xline = np.linspace(-6,6,40)
yline = np.polyval(coeff, xline)
lPnt, = (x, y, 'o')
l, = (xline, yline, 'k-', linewidth=3)
()
fig = ()
(-10, 10)
(-10, 10)
lPnt, = ([], [], 'o')
l, = ([], [], 'k-', linewidth=3)
x_List = []
y_List = []
x_pnt = []
y_pnt = []
with wri(fig, ";, 100):
for xval,yval in zip(x,y):
x_(xval)
y_(yval)
lPnt.set_data(x_pnt,y_pnt)
l.set_data(x_List,y_List)
wri()
wri()
for x_val,y_val in zip(xline,xline):
x_Li(x_val)
y_Li(y_val)
lPnt.set_data(x_pnt,y_pnt)
l.set_data(x_List,y_List)
wri()
for i in range(10):
wri()
利用这个动图,可以帮助我们更动态地理解回归学习器线拟合的解释。数据分析优质社群,等你加入哦~