seaborn

版权声明:来一来,看一看,有钱的捧个人场,没钱的你不得捧个人场 https://blog.csdn.net/wait_for_eva/article/details/80441687

影响

seaborn与matlotlib同出一源,只是把matplotlib进行了封装,让许多方法调用时变得更加简便。

简单的操作就能够画出更加复杂的图像。由于seaborn是调用的matplotlib,在使用时,两个库可以进行互操作。

最通俗的样子就是

import seaborn as sns
import matplotlib.pyplot as plt

# 数据集
iris = sns.load_dataset('iris')
# seaborn进行绘图
sns.pairplot(iris)
# pyplot显示
plt.show()

习惯matplotlib绘图的,也不用改变习惯,可以用seaborn进行样式的调整,用matplot进行绘制

import seaborn as sns
import numpy as np
import matplotlib.pyplot as plt

# 数据集
x = np.linspace(-np.pi, np.pi, 100)
y = np.sin(x)
# seaborn设置样式
sns.set_style('whitegrid')
# pyplot 绘图
plt.plot(x, y)
# pyplot显示
plt.show()
两者并不是完全独立的,操作会相互影响,可以交互使用,都能生效。

模式

sns提供五种样式进行快速设置

import seaborn as sns
import numpy as np
import matplotlib.pyplot as plt

# 数据集
x = np.linspace(-np.pi, np.pi, 100)
y = np.sin(x)
# seaborn设置样式
# darkgfid
# whitegrid
# dark
# white
# ticks
sns.set_style('whitegrid')
# pyplot 绘图
plt.plot(x, y)
# pyplot显示
plt.show()

虽然我喜欢黑,但是不得不说白色更加清晰。

也可以局部with指定样式

import seaborn as sns
import numpy as np
import matplotlib.pyplot as plt

# 数据集
x = np.linspace(-np.pi, np.pi, 100)
y = np.sin(x)
# seaborn设置样式
# darkgfid
# whitegrid
# dark
# white
# ticks
with sns.axes_style('whitegrid'):
    # pyplot 绘图
    plt.plot(x, y)
# pyplot显示
plt.show()
这是总体的外观样式,对于图像内容来说,也提供几种样式
import seaborn as sns
import numpy as np
import matplotlib.pyplot as plt

# 数据集
x = np.linspace(-np.pi, np.pi, 100)
y = np.sin(x)
# seaborn设置样式
# darkgfid
# whitegrid
# dark
# white
# ticks
with sns.axes_style('whitegrid'):
    # context样式
    # paper
    # talk
    # poster
    # notebook
    # size: paper < talk < poster < notebook
    sns.set_context('paper')
    # pyplot 绘图
    plt.plot(x, y)
# pyplot显示
plt.show()
整体更细节样式的话,也可以如下进行设置
import seaborn as sns
import numpy as np
import matplotlib.pyplot as plt

# 不设置,采取默认策略
sns.set()
# 可以通过rc设置更多属性,也可以根据提示设置其他属性
sns.set(rc={'figure.figsize': (1, 8)}, stype='dark', color_codes=True)

调色

为了应对复杂的图像,seaborn也提供了丰富的调色

import seaborn as sns
import numpy as np
import matplotlib.pyplot as plt

# 色彩策略
# deep
# muted
# pastel
# bright
# dark
# colorblind
'''
palplot         : 绘制颜色
color_palette   : 调色板
'''
sns.palplot(sns.color_palette('deep'))
# 设置全局颜色策略
sns.set_color_codes(palette=sns.color_palette('dark'))
# 也可以指定单个图形
sns.boxplot(data, palette=sns.color_palette('hls', 8))

# hls
# hls   :调色办法
# 12    :颜色数量,默认六个
sns.palplot(sns.color_palette('hls', 12))
# 直接hls
# 8     :颜色数量
# l     :亮度
# s     :饱和度
sns.palplot(sns.hls_palette(8, l=1, s=3))

# 成对
# Paired    :成对
# 8         :颜色数量,也就是四对
sns.palplot(sns.color_palette('Paired', 8))

# blue      :颜色
# *         :默认六个,颜色从浅到深
sns.palplot(sns.color_palette("Blue"))
# blue_r    :_r反转颜色,从深到浅
sns.palplot(sns.color_paletter('Blue_r'))

# cuehelix  :线性变换
# 8         :数量
sns.palplot(sns.color_palette('cubehelix', 8))
# 线性
# start     :
# rot       :
sns.palplot(sns.color_palette(8, start=0.5, rot=-0.75))

# 明暗
# green     :颜色
# 顺序       :从浅到深
sns.palplot(sns.light_palette('green'))
# purple    :颜色
# reverse   :颠倒颜色顺序
# 默认有深到浅
sns.palplot(sns.dark_palette('purple', reverse=True))
'''
xkcd通过名称可以指定更多颜色
    sns.xkcd_palette
rgb,会调色的颜色更丰富
    sns.xkcd_rgb
'''

绘图

散点图

import seaborn as sns
import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(-np.pi, np.pi, 100)
y = np.sin(x)
plt.xticks(rotation=45)
sns.stripplot(x, y)
plt.show()

散点分布

import seaborn as sns
import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(-np.pi, np.pi, 100)
y = np.sin(x)
plt.xticks(rotation=45)
sns.jointplot(x, y)
plt.show()


同时把单维数据分布情况在周围进行统计

为了显示分布,用多边显示和颜色区分

import seaborn as sns
import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(-np.pi, np.pi, 100)
y = np.sin(x)
sns.jointplot(x, y, kind='hex')
plt.show()

核函数

import seaborn as sns
import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(-np.pi, np.pi, 100)
y = np.sin(x)
sns.jointplot(x, y, kind='kde')
plt.show()

自动成对关联显示分布

import seaborn as sns
import numpy as np
import matplotlib.pyplot as plt

data = sns.load_dataset('iris')
sns.pairplot(data)
plt.show()

回归

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

data = sns.load_dataset('iris')
print(data.info())
# 线性回归
# 一般传入DataFrame对象
# data     :DataFrame
# x        :X数据,DataFrame中名称指定即可
# y        :同x
sns.regplot(x='sepal_length', y='sepal_width', data=data)
# 也可以
# sns.regplot(x='sepal_length', y='sepal_width', data=data)
plt.show()

直方图

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

data = pd.read_csv('data.csv')
# data      :数据
# x         :x数据
# y         :y数据
# hue       :二次划分数据
sns.barplot(data=data, x='Sex', y='Age', hue='Embarked')
plt.show()

散点区分

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

data = pd.read_csv('data.csv')
# data      :数据
# x         :x数据
# y         :y数据
# hue       :二次划分数据
sns.stripplot(data=data, hue='Sex', y='Age', x='Embarked')
plt.show()

抖动

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

data = pd.read_csv('data.csv')
# data      :数据
# x         :x数据
# y         :y数据
# hue       :二次划分数据
sns.stripplot(data=data, hue='Sex', y='Age', x='Embarked', jitter=.05)
plt.show()

树状图避免交杂

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

data = pd.read_csv('data.csv')
# data      :数据
# x         :x数据
# y         :y数据
# hue       :二次划分数据
sns.swarmplot(data=data, hue='Sex', y='Age', x='Embarked', )
plt.show()

盒图

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

data = pd.read_csv('data.csv')
# data      :数据
# x         :x数据
# y         :y数据
# hue       :二次划分数据
sns.boxplot(data=data, hue='Sex', y='Age', x='Embarked', )
plt.show()

琴图

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

data = pd.read_csv('data.csv')
# data      :数据
# x         :x数据
# y         :y数据
# hue       :二次划分数据
sns.violinplot(data=data, hue='Sex', y='Age', x='Embarked', )
plt.show()

琴图合一

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

data = pd.read_csv('data.csv')
# data      :数据
# x         :x数据
# y         :y数据
# hue       :二次划分数据
sns.violinplot(data=data, hue='Sex', y='Age', x='Embarked', split=True)
plt.show()

分布

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

data = np.random.normal(1, 100, 100)
sns.distplot(data)
plt.show()

去柱

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

data = np.random.normal(1, 100, 100)
# kde       :核曲线
# hist      :柱子
sns.distplot(data, kde=True, hist=False)
plt.show()

阴影

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

data = np.random.normal(1, 100, 100)
# kde       :核曲线
# hist      :柱子
sns.kdeplot(data, shade=True, c='red')
plt.show()

热度

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

data = sns.load_dataset("flights")
# pivot     :DataFrame单列数据转化为二维阵
# 要求指定两个属性唯一确定一个参数值,否则会报错
# (x,y) => point
data = data.pivot("month", "year", "passengers")
# annot     :显示数值
# fmt       :整数
ax = sns.heatmap(data, annot=True, fmt="d")
plt.show()

封装

万能工厂

bar

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

data = pd.read_csv('data.csv')
sns.factorplot(x='Sex', y='Age', hue='Embarked', data=data, kind='bar')
plt.show()

box

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

data = pd.read_csv('data.csv')
sns.factorplot(x='Sex', y='Age', hue='Embarked', data=data, kind='box')
plt.show()

swram

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

data = pd.read_csv('data.csv')
sns.factorplot(x='Sex', y='Age', hue='Embarked', data=data, kind='swarm')
plt.show()

工厂画图,基本一键多变


多变画板

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

data = pd.read_csv('data.csv')
# 指定数据集创建画板
g = sns.FacetGrid(data=data, hue='Embarked')
# 指定图像类型和关键数据进行映射绘图
g.map(sns.swarmplot, 'Sex', 'Age')
# 默认不带图例
g.add_legend()
plt.show()

盒子

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

data = pd.read_csv('data.csv')
# 指定数据集创建画板
g = sns.FacetGrid(data=data)
# 指定图像类型和关键数据进行映射绘图
g.map(sns.boxplot, 'Sex', 'Age')
plt.show()


更多类型,更多参数用时详细查看,先了解一下大概。


猜你喜欢

转载自blog.csdn.net/wait_for_eva/article/details/80441687