Seaborn
详解seaborn,各种类型的图样!
Seaborn基本是一个建立于Matplotlib基础上的一个2D绘图库。Seaborn创建在Python核心可视化库Matplotlib的基础上,它旨在作为补充,而不是替代,但是,Seaborn具有一些非常重要的函数。让无涯教程在这里看到其中的一些。函数有助于:
- 内置用于设置matplotlib图形样式的主题
- 可视化单变量和双变量数据
- 拟合并可视化线性回归模型
- 绘制统计时间序列数据
- Seaborn与NumPy和Pandas数据结构配合良好
- 它带有用于为Matplotlib图形设置样式的内置主题
入门
导入库&数据集
1 | import pandas as pd |
- 默认情况下数据集作为Pandas DataFrame加载
1
2df=sb.load_dataset('tips')
print df.head() #可以输出列表 - 查看可用数据集:
1
print sb.get_dataset_names()
- DataFrame以矩形网络的形式存储数据,每一行都包含一个值,每一列都是一个向量,用于保存特定变量的数据。
行不需要包含相同数据类型的值!数字字符逻辑都可以。
简单的呈现代码!
1 | def sinplot(flip=1): |
Seaborn带有自定义主题和高级页面,用于自定义和控制外观。
注释后是默认Matplotlib图,注释前是Seaborn默认图。
displot & histplot
一个对于displot&histplot呈现方式的官方文档说明
displot
可以呈现直方图(histogram)和有层理的核密度估计图(KDE kernel density estimate),y轴是密度histplot
会展现一个更标准的计数直方图,y轴是计数- 默认情况下,
distplot
使用 Freedman-Diaconis 规则,但显示的条形图不超过 50 个。histplot
完全将二进制选择委托给 numpy 的 “自动 “默认设置,它可以根据数据特征使用不同的参考规则,并且可以在大型数据集中选择非常窄的条形宽度。您可能需要指定上限(bins=50),以完全重现以前的图表。 - 状态设置参考:
参数 类型 含义 hist
bool 是否使用直方图 xlabel
/ylabel
str x,y的坐标含义 kde
bool 是否启用核心密度估计,可以让直方图和曲线比较好地耦合,但是如果想要更好就写入 stat = "density"
;kde曲线会溢出直方图,只覆盖histplot中数据地实际范围,更宽的范围展示可以使用kde_kws = dict(cut=3)
rug
bool 是否添加底部阴影 stat
density 纵轴默认为count 设定后为密度 common_norm
cool 若为True,则直方图高度显示频率而非计数 `` - 一种直方图与曲线更好拟合的方法
1
2
3
4
5sns.histplot(
df["flipper_length_mm"], kde=True,
stat="density", kde_kws=dict(cut=3),
alpha=.4, edgecolor=(1, 1, 1, .4),
)
kdeplot
- 状态设置参考:
参数 类型 含义 shade
bool 是否添加曲线下阴影
界面样式设置
整体图的操作
操作 | 代码 | 可设定值 |
---|---|---|
主题样式 | .setstyle() |
(双引号引出)darkgrid/whitegrid/dark/white/ticks |
刻度删除 | sb.despine() |
|
缩放绘图元素、控制图比例 | set_context |
四个用于上下文的预设模板,基于相对大小,上下文命名:paper/notebook/talk/poster |
自定义样式 | 传参给set_style() |
print(sb.axes_style) |
输出如下: |
1 | {'axes.axisbelow' : False, |
示例:
1 | sb.set_style("darkgrid", {'axes.axisbelow': False}) |
调色板
color_palette()
可以直接为绘图赋予颜色并添加更多的美学价值1
seaborn.color_palette(palette=None, n_colors=None, desat=None)
n_colors
是调色板的颜色数,如果为None,则默认值取决于如何制定调色板,默认状态下为六种颜色。desat
指每种颜色去饱和的比例。- 返回值是RGB元组的列表
- 现成调色板:
Deep``muted``bright``pastel``dark``colorblind
seaborn.palplot()
将调色板绘制为水平阵列。
定性调色板
1 | current_palette=sb.color_palette() |
默认会看到六种颜色,可以给n_color
传参来查看所需颜色的数量
顺序调色板
顺序图适合于表示范围内从相对较低值到较高值的数据分布
给color参数上加一个“s”会绘制顺序图
1 | current_palette=sb.color_palette() |
分散调色板
不同的调色板使用两种不同的颜色,每种颜色代表值从任一方向上的公共点变化。
假定绘制范围为-1到1的数据,值-1到0代表一种颜色,0到+1代表另一种颜色。
默认情况下,值从零开始居中,您可以通过传递值来使用参数中心来控制它。
1 | current_palette=sb.color_palette() |
其中7表示调色板上有七种颜色。
设置默认调色板
函数 color_palette()
具有一个名为 set_palette()
的函数。
set_palette()
和 color_palette()
的参数相同,但默认的Matplotlib参数已更改,因此调色板可用于所有绘图
1 | def sinplot(flip=1): |
绘制单变量分布
seaborn可以帮助理解数据的单变量分布seaborn.sidtplot()
提供最快查看单变量分布的方法,可以绘制适合数据和密度估计的直方图。
参数 | remark |
---|---|
data |
一维数组或列表 |
bins |
hist bins 的规格 |
hist |
bool |
kde |
bool |
matplotlib画入pyqt5
1 | import sys |
ITK
VTK
1 | import numpy as np |
Vedo
Mesh
Mesh模型是一种用于描述三维物体表面的数学表示方法。它由一系列顶点(vertices)和连接这些顶点的线段或面片(faces)组成。每个顶点具有其在三维空间中的坐标位置,而每个面片则由一组顶点索引构成,定义了一个平面。
在Mesh模型中,可以使用不同的数据结构来表示顶点和面片之间的关系,常见的包括三角形网格(triangle mesh)和四边形网格(quadrilateral mesh)三角形网格是最常用的一种,它由三个顶点和一个法线向量(用于确定面片的朝向)组成。四边形网格则由四个顶点和一个法线向量构成。
除了顶点和面片信息,Mesh模型还可以包含其他属性,如颜色、纹理坐标、法线向量等。这些属性可以为模型添加更多的细节和真实感。
常使用.ply格式的文件存放mesh模型
一点报错
VTK
module ‘backend_interagg’ has no attribute ‘FigureCanvas’. Did you mean: ‘FigureCanvasAgg’?
解决:加入代码
1 | import matplotlib |
解释matplotlib.use('TkAgg')
这行代码是用于设置 Matplotlib 库的后端。后端是用于实现图形绘制和用户界面的库。Matplotlib 支持多种后端,例如 ‘TkAgg’
、‘Qt5Agg’
、‘GTK3Agg’
等。
在这行代码中,‘TkAgg’
是后端的名称,而 matplotlib.use()
函数用于指定使用哪种后端。在这个例子中,你告诉 Matplotlib 使用 ‘TkAgg’
后端。
Matplotlib 默认使用 ‘TkAgg’
后端,但有时你可能希望更改默认后端以利用特定 GUI 工具包的特性。例如,如果你希望使用 Qt5 而不是 Tkinter,你可以通过调用 matplotlib.use('Qt5Agg')
来实现。
需要注意的是,更改后端会影响所有后续的图形绘制,因此如果你在代码的不同部分使用不同的后端,你需要在每个需要使用特定后端的代码部分之前调用 matplotlib.use()
。
Vedo
AttributeError: ‘vtkmodules.vtkFiltersCore.vtkQuadricDecimation’ object has no attribute ‘MapPointDataOn’
1 | pip install -U git+https://github.com/marcomusy/vedo.git |
‘set’ object has no attribute ‘name’