版权声明:来一来,看一看,有钱的捧个人场,没钱的你不得捧个人场 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()
更多类型,更多参数用时详细查看,先了解一下大概。