Seaborn的图表如下:
分类图:柱状图barplot、箱图boxplot、小提琴图violinplot、散布图(stripplot、swarmplot)、分面网格catplot
关联图:散布图scatterplot、线图lineplot、分面网格relplot
分布图:单变量分布图distplot、核密度图kdeplot
矩阵图:热力图heatmap、聚类图clustermap
回归图:线性回归图regplot、分面网格线性回归图lmplot
set_style()
在matplotlib中,我们通过rcParams[‘font.family’]=[‘SimHei’]来解决中文不显示问题
在Seaborn中是没有效果,只能通过set_style()的第二个参数解决。
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np
import pandas as pd
import warnings
warnings.filterwarnings('ignore')
#设置背景
sns.set_style('darkgrid',{'font.sans-serif':['SimHei','Arial']})
#图片的尺寸
plt.rcParams['figure.figsize'] = (8,4)
plt.rcParams['figure.dpi'] = 100
plt.rcParams['axes.unicode_minus'] = False
X = np.arange(-5,5,.1)
data = dict(A=np.exp(-X**2),B=np.sin(X),C=X)
df = pd.DataFrame.from_dict(data)
sns.lineplot(data=df)
plt.title('三条线')
柱状图
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np
import pandas as pd
import warnings
warnings.filterwarnings('ignore')
sns.set_style('darkgrid',{'font.sans-serif':['SimHei','Arial']})
plt.rcParams['figure.figsize'] = (8,4)
plt.rcParams['figure.dpi'] = 100
plt.rcParams['axes.unicode_minus'] = False
#读取数据
tips = sns.load_dataset('tips')
#hue 类别(性别)palette 设置颜色
sns.barplot(data=tips,x='day',y='tip',hue='sex',palette='hls')
plt.title('柱状图')
#保存图片方式
#plt.savefig('地址')
箱图
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np
import pandas as pd
import warnings
warnings.filterwarnings('ignore')
sns.set_style('darkgrid',{'font.sans-serif':['SimHei','Arial']})
plt.rcParams['figure.figsize'] = (8,4)
plt.rcParams['figure.dpi'] = 100
plt.rcParams['axes.unicode_minus'] = False
iris = sns.load_dataset('iris')
sns.boxplot(data=iris)
小提琴图
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np
import pandas as pd
import warnings
warnings.filterwarnings('ignore')
sns.set_style('darkgrid',{'font.sans-serif':['SimHei','Arial']})
plt.rcParams['figure.figsize'] = (8,4)
plt.rcParams['figure.dpi'] = 100
plt.rcParams['axes.unicode_minus'] = False
iris = sns.load_dataset('iris')
sns.violinplot(data=iris,palette='hls')
分类散布图
分类散布图有两种:Strip(带状图)和Swarm(锋群图)
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np
import pandas as pd
import warnings
warnings.filterwarnings('ignore')
sns.set_style('darkgrid',{'font.sans-serif':['SimHei','Arial']})
plt.rcParams['figure.figsize'] = (8,4)
plt.rcParams['figure.dpi'] = 100
plt.rcParams['axes.unicode_minus'] = False
#读取数据
tips = sns.load_dataset('tips')
sns.stripplot(x='day', y='tip', hue='smoker', data=tips,palette='hls')
sns.boxplot(x='day', y='tip', data=tips)
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np
import pandas as pd
import warnings
warnings.filterwarnings('ignore')
sns.set_style('darkgrid',{'font.sans-serif':['SimHei','Arial']})
plt.rcParams['figure.figsize'] = (8,4)
plt.rcParams['figure.dpi'] = 100
plt.rcParams['axes.unicode_minus'] = False
#读取数据
tips = sns.load_dataset('tips')
sns.swarmplot(x='day', y='tip',hue='smoker',data=tips,palette='hls')
sns.violinplot(x='day', y='tip', data=tips)
分类分面网格图
分面网格(FacetGrid)可以绘制多个子图,这个网格是一个大图集,又X和Y两个坐标,实际上就是一个大图包含很多的小图。
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np
import pandas as pd
import warnings
warnings.filterwarnings('ignore')
sns.set_style('darkgrid',{'font.sans-serif':['SimHei','Arial']})
plt.rcParams['figure.figsize'] = (8,4)
plt.rcParams['figure.dpi'] = 100
plt.rcParams['axes.unicode_minus'] = False
#读取数据
tips = sns.load_dataset('tips')
sns.catplot(x='day',y='tip',data=tips,kind='strip',hue='sex',col='time',row='smoker')
当一列数据画箱线图的时候用cut分组进行
gro = [1,10,20,30,40,51]
tips['gro'] = pd.cut(tips.total_bill,gro)
sns.boxplot(x='gro',y='tip',data=tips)
plt.title('gro')
关联散布图
绘制函数: sns.scatterplot(x=None,y=None,hue=None,style=None,size=None,data=None)
x、y是有关的两个变量数据集(一位的)
hue,size、style显示不同的数据集条件类别
(都是类别)
import seaborn as sns
import matplotlib.pyplot as plt
tips = sns.load_dataset('tips')
sns.scatterplot(data=tips,x='total_bill',y='tip',hue='sex',style='time',size='smoker')
直方图 的(dist图)
a的参数是一个单变量数据
bins柱子之间的间隔(柱子的数量)
hist是否绘制直方图
kde是否绘制密度图
import seaborn as sns
import numpy as np
X = np.log(np.exp(np.random.normal(loc=0,scale=1,size=1000)))
sns.distplot(X,color='r',bins=50,)
密度图
双轴KDE图
import seaborn as sns
import numpy as np
X = np.random.normal(loc=0,scale=1,size=1000).reshape(500,2)
sns.kdeplot(X[:,0],X[:,1],color='b',shade=True)
热力图
热力图(heatmap)是以举证的形式表现的,数据值越小颜色越深,数据越小反之,在机器学习中的分类学习,对比准确率的时候经常会使用
vmin和vmax,图例中最大值和最下值的显示
cmap参数是设置颜色的
annot参数,注解,在每一个单元格中显示数据
import seaborn as sns
import numpy as np
X = np.random.normal(loc=0,scale=1,size=36).reshape(6,6)
#混淆矩阵 y_true_num,y_pred_num
sns.heatmap(X,annot=True)