matplotlib 实列方法
import matplotlib import matplotlib.pyplot as plt plt.style.use("classic") #显示风格 %matplotlib inline import numpy as np
In [5]:
x=np.linspace(0,10,100) plt.plot(x,np.sin(x),"-") plt.plot(x,np.cos(x),"--")#画简单的折线图
Out[5]:
In [13]:
plt.subplot(2,1,1)#创建2行1列编号为1的子图 plt.plot(x,np.sin(x),"-") plt.subplot(2,1,2)#创建2行1列编号为2的子图 plt.plot(x,np.cos(x),"--")
Out[13]:
In [15]:
plt.Figure()#创建画布 plt.axes()#创建坐标轴
Out[15]:
In [17]:
fig=plt.Figure() ex=plt.axes() x=np.linspace(0,10,100) ex.plot(x,np.sin(x))#一个简单的正弦曲线
Out[17]:
修改颜色名称,实际可简写为字母如下
In [22]:
plt.plot(x,np.sin(x-0),color="blue") plt.plot(x,np.sin(x-1),color="g") plt.plot(x,np.sin(x-2),color="0.75") plt.plot(x,np.sin(x-3),color="#FFDD44") plt.plot(x,np.sin(x-4),color=(1.0,0.2,0.3)) plt.plot(x,np.sin(x-5),color="chartreuse")
Out[22]:
In [23]:
plt.plot(x,x+0,"-g")#绿色实线 plt.plot(x,x+1,"--c")#青色虚线 plt.plot(x,x+2,"-.k")#黑色点划线 plt.plot(x,x+3,":r")#红色实点线
Out[23]:
In [26]:
plt.plot(x,np.sin(x),":r",label="sin(x)")#在参数中设置图列 plt.plot(x,np.cos(x),"-.c",label="cos(x)") plt.axis("equal")#调整坐标轴 plt.legend()#激活图列否者图列无法显示
Out[26]:
In [28]:
plt.plot(x,np.sin(x),":r",label="sin(x)")#在参数中设置图列 plt.plot(x,np.cos(x),"-.c",label="cos(x)") plt.xlim(-1,11)#设置坐标轴上下限,如果想要逆序显示只要逆序设置刻度值 plt.ylim(-1.5,1.5) plt.title("A sine curve")#设置图片标题 plt.xlabel("x")#设置x与y轴的名称 plt.ylabel("y") plt.legend()#激活图列否者图列无法显示
Out[28]:
画散点图
In [29]:
import matplotlib.pyplot as plt %matplotlib inline plt.style.use("seaborn-whitegrid") import numpy as np
In [31]:
简易散点图
x=np.linspace(0,10,100) plt.plot(x,np.sin(x),"ob")
Out[31]:
散点形状简写示意图
In [32]:
rng=np.random.RandomState(0) for marker in ["o",".",",","x","+","v","^","<",">","s","d"]: plt.plot(rng.rand(5),rng.rand(5),marker, label="marker={}".format(marker)) plt.legend(numpoints=1) plt.xlim(0,1.8)
In [37]:
plt.scatter(x,np.sin(x),marker="x")#plt.plot与plt.scatter的区别在于后者可以单独设置每个散点的大小,颜色,边框颜色等,但是前者针对大量数据效率跟高
Out[37]:
画频次直方图用于查看数据分布情况
In [41]:
data=np.random.randn(1000)
plt.hist(data)
Out[41]:
In [46]:
x1=np.random.normal(0,0.8,1000) x2=np.random.normal(-2,1,1000) x3=np.random.normal(3,2,1000) kwargs=dict(histtype="stepfilled",alpha=0.3,normed=True,bins=40) plt.hist(x1,**kwargs) plt.hist(x2,**kwargs)
plt.hist(x3,**kwargs)
Out[46]:
上图分别显示了每个数据的分布情况,以及彼此重叠的数据分布情况
画3D图像
In [48]:
from mpl_toolkits import mplot3d#导入3D模块 fig=plt.figure() ax=plt.axes(projection="3d")
In [49]:
%matplotlib inline import matplotlib import matplotlib.pyplot as plt plt.style.use("seaborn-whitegrid") import numpy as np ax=plt.axes(projection="3d") z=np.linspace(0,15,1000) x=np.sin(z) y=np.cos(z) ax.plot3D(x,y,z,"gray")
Out[49]:
用seaborn画图
In [53]:
import pandas as pd data=np.random.multivariate_normal([0,0],[[5,2],[2,2]],size=2000)#创建数据 data=pd.DataFrame(data,columns=["x","y"])#生成DataFrame格式 for i in "xy": plt.hist(data[i],normed=True,alpha=0.5)#直方图查看变量分布特征
In [5]:
import seaborn as sns #导入画图插件 sns.set()#用于设置图片显示风格,之后画图都是默认这个设置
KDE 获取变量平滑估计
In [56]:
for i in "xy": sns.kdeplot(data[i],shade=True)
频次直方图与KDE结合
In [57]:
for i in "xy": sns.distplot(data[i])#频次直方图与KDE结合
In [58]:
sns.kdeplot(data)#KDE输入二维数据集就可以获得一个二维KDE分布
Out[58]:
查看两个变量的联合分布与独立分布
In [65]:
sns.jointplot("x","y",data)#查看两个变量的联合分布与独立分布
Out[65]:
In [66]:
sns.jointplot("x","y",data,kind="kde")
Out[66]:
In [67]:
sns.jointplot("x","y",data,kind="hex")
Out[67]:
矩阵图
In [8]:
#矩阵图 iris=sns.load_dataset("iris")#获取鸢尾花数据 iris.head()#查看前5行
Out[8]:
In [75]:
sns.pairplot(iris,hue="species",size=3.0)#矩阵图观察两两之间的分布情况,参数1 自动调整颜色 参数2 画布分布大小
Out[75]:
In [76]:
tips=sns.load_dataset("tips")#获取某餐厅服务员收取小费的数据
tips.head()
Out[76]:
因子图
In [78]:
sns.boxplot("day","total_bill","sex",data=tips)#因子图
Out[78]:
In [80]:
sns.jointplot("total_bill","tip",data=tips,kind="hex")#联合分布图,参数hex表示六边形
Out[80]:
带回归线的联合分布图,由参数reg决定
In [81]:
sns.jointplot("total_bill","tip",data=tips,kind="reg")#带回归线的联合分布图,由参数reg决定
Out[81]:
In [4]:
import seaborn as sns #一种更画面更简洁,操作更简单的画图包 sns.kdeplot(x)#画KDE图,用于查看变量是否平滑 sns.distplot(x)#画频次直方图与KDE结合的图像 sns.jointplot(x,y,data)#画联合分布图,用于查看两两数据的相关信息 sns.pairplot(data)#画联合矩阵图,观察数据集两两间的相关性 sns.boxplot()#画箱线图,观察某个变量之间的影响情况,使用中注意 KIND 参数的使用 #详细参数参考帮助文档 sns.violinplot()#画小提琴图