一、将数字可视化暨meshgrid\contourf\contour的使用。
contour - 绘制等高线
contourf - 填充等高线
两个的返回值值是一样的(return values are the same),实际上contourf 相当于 contour filled。
常用参数语法:
mp.contourf(x, y, z, 等高线条数,cmap=颜色映射)# 等高线填充
mp.contour(x, y, z, 等高线条数,colors=颜色, linewidth=线宽)#等高线绘制
示例代码(参考B站文刀是也的视频):
#By:sxy in 10.8.2018
#将数字可视化。
#meshgrid\contourf\contour的应用。
import numpy as np
import matplotlib.pyplot as plt
#meshgrid,将向量扩充到2D空间内)
x=np.arange(0,11,1)
y=np.arange(0,11,1)
xx,yy=np.meshgrid(x,y)
print("xx",xx)
print("yy",yy)
zz=np.sin(xx)+np.cos(yy)
plt.contourf(xx,yy,zz,3,cmap=plt.cm.rainbow)
cont=plt.contour(xx,yy,zz,3,colors='black')
plt.clabel(cont,inline=True,fontsize=10)
plt.show()
运行结果为:
二、从文本中下载数据。
: @1、文本要和.py文件处于同一个文件目录下
@2、一些函数的使用:
strip() 方法用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列。
split() 通过指定分隔符对字符串进行切片,如果参数 num 有指定值,则仅分隔 num 个子字符串 #该方法只能删除开头或是结尾的字符,不能删除中间部分的字符。
np.mat()是将序列转为np的二维数组,np.transpose()是将数组转置。
例子代码:
#从文本中下载数据。
#文本要和.py文件处于同一个文件目录下。
import numpy as np
import matplotlib.pyplot as plt
def loadfile(filename):
fr=open(filename)
x=[]
y=[]
for line in fr.readlines():#取一行,为字符串的格式
#Python strip() 方法用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列。
# split() 通过指定分隔符对字符串进行切片,如果参数 num 有指定值,则仅分隔 num 个子字符串
#该方法只能删除开头或是结尾的字符,不能删除中间部分的字符
line= line.strip().split()
x.append(float(line[0]))#每取一行,都把第一个数,先float再放在x里
y.append(float(line[1]))
xmat=np.mat(x).T#np.mat()是将序列转为np的二维数组,np.transpose()是将数组转置
ymat=np.mat(y).T
return xmat, ymat
xmat, ymat=loadfile("datatest.txt")
print("xmat:", xmat.shape, type(xmat))
print("ymat:", ymat.shape, type(ymat))
plt.scatter(xmat.A, ymat.A, s=50, c="r")
plt.grid(True)
plt.xlabel('x')
plt.ylabel('y')
plt.show()
结果: