seaborn绘制barplot、scatterplot、boxplot、boxplot、distplot

绘制柱状图barplot

官方参数:

seaborn.barplot(x=None, y=None, hue=None, data=None, order=None, hue_order=None, estimator=<function mean>,ci=95, n_boot=1000, units=None, orient=None,   color=None, palette=None, saturation=0.75,            errcolor='.26', errwidth=None, capsize=None, dodge=True, ax=None, **kwargs)

参数解释:
x、y:坐标值
hue:分类变量
data:数据
color:颜色
palette:调色板
orient:柱状方向

import os
import seaborn as sns
import pandas as pd
import matplotlib.pyplot as plt

os.chdir(r'C:\Users\MAR\Desktop\新建文件夹')

#解决中文乱码问题
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False

data=pd.read_csv(r'my_csv_date.csv',encoding='gbk')
print(data[['分','属1','分类']])
plt.xticks(rotation=45)

sns.barplot(x='分',y='属1',data=data,hue='分类',palette='husl')
plt.legend(bbox_to_anchor=(1.01,0.8))
plt.show()

在这里插入图片描述

绘制散点图scatterplot()

参数解释:
x、y:坐标值
hue:分类变量
data:数据
color:颜色
palette:调色板
style:以分类变量作图,产生不同形状
s:形状大小
markers:形状

import os
import seaborn as sns
import pandas as pd
import matplotlib.pyplot as plt

os.chdir(r'C:\Users\MAR\Desktop\新建文件夹')

#解决中文乱码问题
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False

data=pd.read_csv(r'iris.csv',encoding='gbk')
plt.xticks(rotation=45)

labels=['setosa','versicolor','virginica']
sns.scatterplot(x='Length',y='Width',hue=data.Species,data=data,palette='husl',marker='x',s=20,\
                )
plt.legend(bbox_to_anchor=(1.01,0.8))
plt.show()

在这里插入图片描述

箱线图boxplot()

参数解释:
x、y:坐标值
hue:分类变量
data:数据
color:颜色
palette:调色板
flierzise:异常点的大小
width:箱线宽度
linewidth:指定箱体边框的宽度

#解决中文乱码问题
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False

data=pd.read_csv(r'titanic.csv',encoding='gbk')
data.dropna(subset=['Age'],inplace=True)

sns.boxplot(y='Age',data=data,showmeans=True,color='c',\
            flierprops={'marker':'x','markerfacecolor':'red'},\
           meanprops={'marker':'o','markersize':4},
           medianprops={'linestyle':'-','color':'orange'})

plt.show()

在这里插入图片描述

同以坐标的多个箱线图绘制

import os
import seaborn as sns
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

os.chdir(r'C:\Users\MAR\Desktop\test')
#解决中文乱码问题
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False

my_data=pd.read_csv('my_csv_date.csv',encoding='gbk')
print(my_data)

my_data.dropna(inplace=True)#删除缺失值的行
my_data.reset_index(drop=True,inplace=True)#数据索引重置
print(my_data)

my_group=my_data.groupby('分类') # 数据表分类索引设置

#功能:将数据分组后并按指定的列降序排列,与下两行功能一样,但下面需要多一个变量,
att1_avg=my_group.agg({'属1':np.mean}).sort_values('属1',ascending=False)
# att1_avg=my_group.agg({'属1':np.mean})#按照上边的索引对表聚合
# data_sort=att1_avg.sort_values('属1',)

print(att1_avg)
#多个箱线图的绘制要有顺序,可自己定义,而数据使用原来的数据
sns.boxplot(x='分类',y='属1',data=my_data,order=att1_avg.index,showmeans=True,\
            color='lightblue',width=0.3,\
            flierprops={'marker':'x','markerfacecolor':'red','markersize':8},#范围外的数据
            meanprops={'marker':'D','markersize':4,'markerfacecolor':'red'},
           medianprops={'linestyle':'--','color':'orange'})
plt.ylabel('数值')
plt.title('不同分类的属性1的值')
plt.show()

在这里插入图片描述
想要建立多个对应的箱图,最重要的是对想要数据项目进行排序处理,得到order对应的值(上图橘黄色框中的内容)。若只是对每一个分组的箱体显示(无序),则只需要将所要显示的索引列传入x,将需要显示的数据列传入y,order使用聚合后的索引即可
在这里插入图片描述

直方图

import os
import seaborn as sns
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import norm

os.chdir(r'C:\Users\MAR\Desktop\test\web_data')
#解决中文乱码问题
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False

titan=pd.read_csv('titanic.csv',encoding='gbk')

Age_male=titan[titan.Sex=='male'].Age
Age_female=titan[titan.Sex=='female'].Age

titan.dropna(subset=['Age'],inplace=True)#删除缺失值的行
titan.reset_index(drop=True,inplace=True)#数据索引重置

#kde:是否显示高斯核密度图,hist_kws:直方图参,norm_hist:出现的数据是按频率(<1)显示,
sns.distplot(Age_male,bins=30,kde=False,hist_kws={'color':'red'},norm_hist=True,label='男性')
#不显示直方图和核密度图,fit:和数据匹配的正态分布图(norm),fit拟合曲线,这里是scipy中的正态函数,此时,hist=False
sns.distplot(Age_female,hist=False,kde=False,fit=norm,fit_kws={'color':'blue'},\
             norm_hist=True,label='男性正态分布图',)

sns.distplot(Age_female,bins=30,kde=False,hist_kws={'color':'black'},\
            norm_hist=True,label='女性')
sns.distplot(Age_male,hist=False,kde=False,fit=norm,fit_kws={'color':'green'},\
             norm_hist=True,label='女性正态分布图',)
plt.legend(loc='best')
plt.show()

在这里插入图片描述

发布了70 篇原创文章 · 获赞 1 · 访问量 2406

猜你喜欢

转载自blog.csdn.net/weixin_43794311/article/details/105185408