11-21

念念不忘 必有回响

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]:
[<matplotlib.lines.Line2D at 0x275a52e3128>]
 
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]:
[<matplotlib.lines.Line2D at 0x275a566aa58>]
 
In [15]:
plt.Figure()#创建画布
plt.axes()#创建坐标轴
Out[15]:
<matplotlib.axes._subplots.AxesSubplot at 0x275a57e9f98>
 
In [17]:
fig=plt.Figure()
ex=plt.axes()
x=np.linspace(0,10,100)
ex.plot(x,np.sin(x))#一个简单的正弦曲线
Out[17]:
[<matplotlib.lines.Line2D at 0x275a60519b0>]
 
 

修改颜色名称,实际可简写为字母如下

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]:
[<matplotlib.lines.Line2D at 0x275a6515cc0>]
 
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]:
[<matplotlib.lines.Line2D at 0x275a5f40898>]
 
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]:
<matplotlib.legend.Legend at 0x275a649c240>
 
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]:
<matplotlib.legend.Legend at 0x275a671f6d8>
 
 

画散点图

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]:
[<matplotlib.lines.Line2D at 0x275a58ca438>]
 
 

散点形状简写示意图

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]:
<matplotlib.collections.PathCollection at 0x275a77a0630>
 
 

画频次直方图用于查看数据分布情况

In [41]:
data=np.random.randn(1000)
plt.hist(data)
 Out[41]:
(array([  6.,  12.,  40., 138., 236., 253., 178.,  96.,  31.,  10.]),
 array([-3.51051922, -2.84828621, -2.1860532 , -1.52382019, -0.86158718,
        -0.19935417,  0.46287884,  1.12511185,  1.78734486,  2.44957787,
         3.11181088]),
 <a list of 10 Patch objects>)
 
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]:
(array([0.00300329, 0.00300329, 0.        , 0.00300329, 0.        ,
        0.00600657, 0.00300329, 0.00900986, 0.01801972, 0.00600657,
        0.03603945, 0.03303616, 0.02702958, 0.07508218, 0.11412491,
        0.09009861, 0.14415778, 0.1621775 , 0.18019723, 0.19821695,
        0.2102301 , 0.20722681, 0.17719394, 0.2102301 , 0.20422352,
        0.15917422, 0.13514792, 0.12613806, 0.1171282 , 0.08108875,
        0.06607232, 0.0690756 , 0.03303616, 0.03303616, 0.0240263 ,
        0.02102301, 0.00300329, 0.00600657, 0.00300329, 0.00600657]),
 array([-4.35687594, -4.02390744, -3.69093894, -3.35797045, -3.02500195,
        -2.69203345, -2.35906495, -2.02609646, -1.69312796, -1.36015946,
        -1.02719096, -0.69422247, -0.36125397, -0.02828547,  0.30468303,
         0.63765153,  0.97062002,  1.30358852,  1.63655702,  1.96952552,
         2.30249401,  2.63546251,  2.96843101,  3.30139951,  3.634368  ,
         3.9673365 ,  4.300305  ,  4.6332735 ,  4.966242  ,  5.29921049,
         5.63217899,  5.96514749,  6.29811599,  6.63108448,  6.96405298,
         7.29702148,  7.62998998,  7.96295847,  8.29592697,  8.62889547,
         8.96186397]),
 <a list of 1 Patch objects>)
 
 

上图分别显示了每个数据的分布情况,以及彼此重叠的数据分布情况

 

画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]:
[<mpl_toolkits.mplot3d.art3d.Line3D at 0x275a6669e10>]
 
 

用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]:
<matplotlib.axes._subplots.AxesSubplot at 0x275aa5b4358>
 
 

查看两个变量的联合分布与独立分布

In [65]:
sns.jointplot("x","y",data)#查看两个变量的联合分布与独立分布
 
Out[65]:
<seaborn.axisgrid.JointGrid at 0x275aa383828>
 
In [66]:
sns.jointplot("x","y",data,kind="kde")
Out[66]:
<seaborn.axisgrid.JointGrid at 0x275aa8e4320>
 
In [67]:
sns.jointplot("x","y",data,kind="hex")
 
Out[67]:
<seaborn.axisgrid.JointGrid at 0x275aba33518>
 
 

矩阵图

In [8]:
#矩阵图
iris=sns.load_dataset("iris")#获取鸢尾花数据
iris.head()#查看前5行

 

Out[8]:
 sepal_lengthsepal_widthpetal_lengthpetal_widthspecies
0 5.1 3.5 1.4 0.2 setosa
1 4.9 3.0 1.4 0.2 setosa
2 4.7 3.2 1.3 0.2 setosa
3 4.6 3.1 1.5 0.2 setosa
4 5.0 3.6 1.4 0.2 setosa
In [75]:
sns.pairplot(iris,hue="species",size=3.0)#矩阵图观察两两之间的分布情况,参数1 自动调整颜色  参数2 画布分布大小

Out[75]:

<seaborn.axisgrid.PairGrid at 0x275b02e3ba8>
 
In [76]:
tips=sns.load_dataset("tips")#获取某餐厅服务员收取小费的数据
tips.head()

Out[76]:

 total_billtipsexsmokerdaytimesize
0 16.99 1.01 Female No Sun Dinner 2
1 10.34 1.66 Male No Sun Dinner 3
2 21.01 3.50 Male No Sun Dinner 3
3 23.68 3.31 Male No Sun Dinner 2
4 24.59 3.61 Female No Sun Dinner 4
 

因子图

In [78]:
sns.boxplot("day","total_bill","sex",data=tips)#因子图

Out[78]:

<matplotlib.axes._subplots.AxesSubplot at 0x275b074f320>
 
In [80]:
sns.jointplot("total_bill","tip",data=tips,kind="hex")#联合分布图,参数hex表示六边形
 
Out[80]:
<seaborn.axisgrid.JointGrid at 0x275b397dd68>
 
 

带回归线的联合分布图,由参数reg决定

In [81]:
sns.jointplot("total_bill","tip",data=tips,kind="reg")#带回归线的联合分布图,由参数reg决定
 
Out[81]:
<seaborn.axisgrid.JointGrid at 0x275b3b16390>
 
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()#画小提琴图

 

 
 
 
 

posted on 2019-11-21 23:00  11-21  阅读(219)  评论(0编辑  收藏  举报

导航