散点图
使用scatter函数可以绘制随机点,该函数需要接收x坐标和y坐标的序列——plt.scatter(x,y)
matplotlib.pyplot.scatter(x, y, s=None, c=None, marker=None, cmap=None, norm=None, vmin=None, vmax=None, alpha=None, linewidths=None, verts=None, edgecolors=None, *, data=None, **kwargs)
参数的解释:
x,y:表示的是大小为(n)的数组,也就是我们即将绘制散点图的数据点
s:是一个实数或者是一个数组大小为(n),这个是一个可选的参数,表示的是标记点的大小
c:表示的是颜色,也是一个可选项,默认是蓝色'b',表示的是标记的颜色,或者可以是一个表示颜色的字符,或者是一个长度为n的表示颜色的序列等,但是c不可以是一个单独的RGB数字,也不可以是一个RGBA的序列,可以是他们的2维数组(只有一行)
marker:表示的是标记的样式,默认的是'o'
cmap:Colormap实体或者是一个colormap的名字,cmap仅仅当c是一个浮点数数组的时候才使用,如果没有申明就是image.cmap
norm:Normalize实体来将数据亮度转化到0-1之间,也是只有c是一个浮点数的数组的时候才使用,如果没有申明,就是默认为colors.Normalize。
vmin,vmax:实数,当norm存在的时候忽略,用来进行亮度数据的归一化
alpha:实数,0-1之间
linewidths:也就是标记点的长度
练习
1、给定数据的散点图
import matplotlib.pyplot as plt import numpy as np import matplotlib as mpl mpl.rcParams['font.sans-serif'] = ['SimHei'] mpl.rcParams['axes.unicode_minus'] = False x = [1,2,3,4,5,6,7,8] y = [5,2,4,2,1,4,5,2] T = np.random.rand(8)*125 plt.scatter(x,y, label='散点分布', c=T, s=25, marker="o",alpha = 0.5) plt.xlabel('x') plt.ylabel('y') plt.title('散点图') plt.legend() plt.show()
2、随机生成的散点图
import matplotlib.pyplot as plt import matplotlib as mpl import numpy as np # 解决中文显示问题 mpl.rcParams['font.sans-serif'] = ['SimHei'] mpl.rcParams['axes.unicode_minus'] = False plt.figure(figsize=(8,6)) n=1000 #rand 均匀分布和 randn高斯分布 x=np.random.randn(1,n) y=np.random.randn(1,n) T1=np.arctan2(x,y) #注意这里的2,如果不加则显示不对(网上没找到解释?) T2=np.random.rand(1,n) * 125 plt.subplot(211) plt.scatter(x,y,c=T1,s=30,alpha=0.4,marker='o') plt.subplot(212) plt.scatter(x,y,c=T2,s=30,alpha=0.4,marker='o') #T:散点的颜色 #s:散点的大小 #alpha:是透明程度 plt.show()
三维图
使用pyplot包和Matplotlib绘制三维图
#导入3D包 import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D #创建X、Y、Z坐标(通过四个点确定一个3D图) X=[1,1,2,2] Y=[3,4,4,3] Z=[1,100,1,1] fig = plt.figure() # 创建了一个Axes3D的子图放到figure画布里面 ax = Axes3D(fig) ax.plot_trisurf(X, Y, Z) plt.savefig('三维图.jpg') plt.show()