Python中文社区大数据,机器学习,人工智能生物信息学与算法

Python可视化20|Seaborn散点图&&折线图

2020-08-17  本文已影响0人  pythonic生物人

本文详细介绍使用Seaborn函数relplot绘制散点图和折线图。

本文将了解到什么?

1、绘图数据准备

2、relplot绘制散点图:kind="scatter"
不分类散点图 
分类散点图 
点大小随数值大小变化 
点大小&&颜色随数值大小变化 
图例设置
点marker设置 
按变量分图绘图 

3、relplot绘制折线图:kind="line" 
折线添加置信区间 
关闭置信区间 
分类绘制折线图 
添加误差棒 
分图绘制折线图

更好阅读体验:Python可视化20|Seaborn散点图&&折线图


Seaborn中有两种方式绘制散点图和折线图

  • 使用函数relplot,只需要切换relplot中的kind参数:kind="scatter"(默认,散点图);kind="line"(折线图)
  • 使用scatterplot函数绘制散点图、使用lineplot函数绘制折线图

本文详细介绍第一种方式 ,使用函数relplot绘制散点图和折线图。seaborn.relplot是一种figure-level层面的函数(可以简单理解为可轻松绘制多个子图),另外一个是axes面的函数(每一个子图)。

1、绘图数据准备

还是使用鸢尾花iris数据集:Python可视化|matplotlib10-绘制散点图scatter

#导入本帖要用到的库,声明如下:
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd 
import palettable
from pandas import Series,DataFrame
from sklearn import datasets
import seaborn as sns

#导入鸢尾花iris数据集(方法一)
#该方法更有助于理解数据集
iris=datasets.load_iris()
x, y =iris.data,iris.target
y_1 = np.array(['setosa' if i==0 else 'versicolor' if i==1 else 'virginica' for i in y])
pd_iris = pd.DataFrame(np.hstack((x, y_1.reshape(150,1))),columns=['sepal length(cm)','sepal width(cm)','petal length(cm)','petal width(cm)','class'])

#astype修改pd_iris中数据类型object为float64
pd_iris['sepal length(cm)']=pd_iris['sepal length(cm)'].astype('float64')
pd_iris['sepal width(cm)']=pd_iris['sepal width(cm)'].astype('float64')
pd_iris['petal length(cm)']=pd_iris['petal length(cm)'].astype('float64')
pd_iris['petal width(cm)']=pd_iris['petal width(cm)'].astype('float64')


#导入鸢尾花iris数据集(方法二)
#该方法有时候会卡巴斯基,所以弃而不用
#import seaborn as sns
#iris_sns = sns.load_dataset("iris")
数据集长下面这个样子

2、 relplot绘制散点图:kind="scatter"

seaborn.relplot(x=None, y=None, hue=None, size=None, style=None, data=None, row=None, col=None, col_wrap=None, row_order=None, col_order=None, palette=None, hue_order=None, hue_norm=None, sizes=None, size_order=None, size_norm=None, markers=None, dashes=None, style_order=None, legend='brief', kind='scatter', height=5, aspect=1, facet_kws=None, **kwargs)

散点图更多特异参数参考:

seaborn.scatterplot(x=None, y=None, hue=None, style=None, size=None, data=None, palette=None, hue_order=None, hue_norm=None, sizes=None, size_order=None, size_norm=None, markers=True, style_order=None, x_bins=None, y_bins=None, units=None, estimator=None, ci=95, n_boot=1000, alpha='auto', x_jitter=None, y_jitter=None, legend='brief', ax=None, **kwargs)

sns.relplot(x='sepal length(cm)',y='sepal width(cm)',data=pd_iris,#绘图数据
            height=7,#图高
            palette=palettable.cartocolors.qualitative.Bold_9.mpl_colors[0],#palettable调色盘
           )
sns.set(style="darkgrid",font_scale=1.5)#设置绘图风格
sns.relplot(x='sepal length(cm)',y='sepal width(cm)',data=pd_iris,
            palette=palettable.cartocolors.qualitative.Bold_9.mpl_colors[:3],
            height=7,
            hue='class',#添加分类变量
            style='class',#添加不同类变量按照不同marker显示
            markers=['d','*','X'],#自定义marker形状,参考
            **dict(s=120),#传入词典,调用Matplotlib中的参数            
           )
sns.set(style="darkgrid",font_scale=1.5)
sns.relplot(x='sepal length(cm)',y='sepal width(cm)',data=pd_iris,
            palette=palettable.cartocolors.qualitative.Bold_9.mpl_colors[:3],
            height=7,
            hue='class',
            style='class',
            size='sepal length(cm)',#按照sepal length(cm)的长度显示marker的大小,越长点越大
            sizes=(50,200)#marker大小阈值
           )
sns.set(style="darkgrid",font_scale=1.5)
sns.relplot(x='sepal length(cm)',y='sepal width(cm)',data=pd_iris,
            palette='Greens',
            height=7,
            style='class',
            hue='sepal length(cm)',#按照sepal length(cm)的长度显示marker的大小及颜色深浅,越长点越大,颜色越深
            size='sepal length(cm)',
            sizes=(50, 200),
            
           )
sns.set(style="darkgrid",font_scale=1.5)
sns.relplot(x='sepal length(cm)',y='sepal width(cm)',data=pd_iris,
            palette='Greens',
            height=7,
            style='class',
            hue='sepal length(cm)',#按照sepal length(cm)的长度显示marker的大小及颜色深浅,越长点越大,颜色越深
            size='sepal length(cm)',
            sizes=(50, 200),
            legend='full',#图例设置,            
           )
sns.set(style="darkgrid",font_scale=1.2)
sns.relplot(x='sepal length(cm)',y='sepal width(cm)',data=pd_iris,
            palette=palettable.cartocolors.qualitative.Bold_9.mpl_colors[:3],
            height=7,
            hue='class',
            style='class',#添加不同类变量按照不同marker显示
            markers=['d','*','X'],#自定义marker形状,参考
            **dict(s=120),#传入词典,调用Matplotlib中的参数 ,更多可见:matplotlib.axes.Axes.plot() 
            legend='full'
            
           )
sns.set(style="darkgrid",font_scale=1.2)
g=sns.relplot(x='sepal length(cm)',y='sepal width(cm)',data=pd_iris,
            palette='Greens',
            height=10,
            style='class',
            hue='sepal length(cm)',
            size='sepal length(cm)',
            sizes=(50, 200), 
            col='class',#按变量分图绘制散点图
           )

sns.set(style='darkgrid', font='sans-serif', font_scale=4,)#设置text字体、大小

3、 relplot绘制折线图:kind="line"

折线图更多特异参数参考:

seaborn.lineplot(x=None, y=None, hue=None, size=None, style=None, data=None, palette=None, hue_order=None, hue_norm=None, sizes=None, size_order=None, size_norm=None, dashes=True, markers=None, style_order=None, units=None, estimator='mean', ci=95, n_boot=1000, seed=None, sort=True, err_style='band', err_kws=None, legend='brief', ax=None, **kwargs)

g=sns.relplot(x='sepal length(cm)',y='sepal width(cm)',data=pd_iris,#绘图数据
            kind='line',#当前绘制折线图,默认为scatter
            ci=95,#折线图上下阴影按照每个点的95%置信区间计算,默认为95,可选int or 'sd'or None,
           )
g.fig.set_size_inches(8,6)#seaborn图形大小
sns.set(style="darkgrid",font_scale=1.5)#文字大小
g=sns.relplot(x='sepal length(cm)',y='sepal width(cm)',data=pd_iris,
            kind='line',
            ci=None,#关闭置信区间
           )
g.fig.set_size_inches(10,8)
sns.set(style="darkgrid",font_scale=1.5)
g=sns.relplot(x='sepal length(cm)',y='sepal width(cm)',data=pd_iris,
            kind='line',
            ci=95,
            hue='class',#按类绘图
            palette='Set1',
            style='class',#不同类不同线型
            **dict(linewidth=2.5,)
            
           )
g.fig.set_size_inches(10,8)
sns.set(style="darkgrid",font_scale=1.5)
g=sns.relplot(x='sepal length(cm)',y='sepal width(cm)',data=pd_iris,
            kind='line',
            ci=95,
            hue='class', 
            palette='Set1',
            style='class',
            **dict(linewidth=2.5,),
            err_style='bars',#添加误差线,可选“band” or “bars”,
            lw=1,
            
           )
g.fig.set_size_inches(10,8)
sns.set(style="darkgrid",font_scale=1.5)
sns.relplot(x='sepal length(cm)',y='sepal width(cm)',data=pd_iris,
            kind='line',
            ci=95,
            hue='class', 
            palette='Set1',
            style='class',
            **dict(linewidth=2.5,),
            err_style='bars',
            col='class',#分开画            
           )
sns.set(style='darkgrid',font_scale=1.5)

参考资料:

欢迎微信搜索关注,pythonic生物人。
更好阅读体验:Python可视化20|Seaborn散点图&&折线图

上一篇下一篇

猜你喜欢

热点阅读