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

A histogram barplot

The official argument:

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)

Of parameters:
X, Y: coordinate value of
hue: classification variable
data: Data
color: Color
palette: palette
orient: a columnar direction

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()

Here Insert Picture Description

Draw a scatter plot scatterplot ()

Of parameters:
X, Y: coordinate value of
hue: classification variable
data: Data
color: Color
palette: palette
style: categorical variables plotted to produce different shapes
s: Shape Size
markers: Shape

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()

Here Insert Picture Description

Boxplot boxplot ()

Of parameters:
X, Y: coordinate value of
hue: classification variable
data: Data
color: Color
palette: palette
flierzise: size outlier
width: line width box
linewidth: Specifies the width of the border of the box

#解决中文乱码问题
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()

Here Insert Picture Description

With a plurality of coordinates plotted boxplot

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()

Here Insert Picture Description
Wants to establish a corresponding plurality of box plots, the most important is that you want to sort the data items processed, to obtain a value corresponding to the order (the content box on FIG orange). If only every packet a display housing (disordered), you only need to be displayed in the index column incoming X , you will require data incoming y columns indexed to the, order polymerization
Here Insert Picture Description

Histogram

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()

Here Insert Picture Description

Published 70 original articles · won praise 1 · views 2406

Guess you like

Origin blog.csdn.net/weixin_43794311/article/details/105185408