使用PyNanoLab进行数据可视化

PyNanoLab通过matplotlib绘图库构建了一套完整的绘图工具,结合pandas构建的表格工具,实现了matplotlib绘图库的gui交互式绘图,可以通过gui界面实现对图形任意参数的设置、保存和重载,无需任何代码。目前已实现曲线图、散点图、柱状图、分布图、地形图等多种图形的数据可视化。

绘图框架


如上图所示,matplotlib 的2D 绘图分为三个层次:

  • Figure :
    Figure 表示一张画布上的绘图区域,一张画布可以有一个或多个,相同或者不同类型的坐标系,是所有绘图元素的顶级容器。一般通过plt.Figure()​创建一张图片。
  • Axes:
    Axes表示一张图片上的坐标系系统,在一张画布上可以同时有多个坐标系,每个坐标系包含x、y轴,每一个坐标轴上又有对应的ticks,tickslable和坐标轴标签。PyNanoLab 的所有2D图使用同一类型的坐标系系统,可以控制所有坐标轴属性的设置。
  • Artist:
    Artist表示坐标系上具体绘制的对象,例如曲线、散点、图形等,使用不同的Artist最终就可以绘制不同类型的数据图。

PyNanoLab 构建了统一的图形设置界面,自动为每一种Artist生成独立的设置界面,实时修改图形的参数:

Figure对象设置:

图片

Figure设置面板主要设置图像的整体参数,包括图片的尺寸和背景颜色。subplots控制坐标系与图形边框的距离,其参数定义为左下角坐标为(0,0)右上角为(1,1),设置的参数取0-1之间的绝对值。当有多个坐标系存在时,可以使用width_ratios参数设置多个坐标系宽度的比值。

Axes对象设置:

Axes对象主要控制绘图的坐标系,PyNanoLab的设置面板主要包括Frame和XY坐标轴。其中Frame面板控制坐标轴的整体设置,XY坐标轴具有相同的设置接口,主要控制坐标轴的显示、tick、ticklabels和坐标轴标签。

(1). Frame设置面板:
图片
如图所示,Frame面板主要包括:
Title: 设置该坐标系的名称,及其对应的字体、颜色和坐标系的背景色, 对应代码:ax.set_title(**parm)​。PyNanoLab 图形设置窗口的所有文本都支持Latex 语法绘制复杂的数学公式,只需要在关键字两个”$$”之间使用Laxtex 语法即可,具体可参考文档。

Spines: 设置坐标系的边框的显示、位置,线宽和线的类型。其中复选框设置是否显示该该边框;下拉列表和对应的值设置边框在坐标系中的位置。outward:表示边框距离数据区域以外的像素点数。data:表示对应坐标系上的值,例如将上、右边框隐藏,将下和左边框选择为data,值设为0,就可以构建一个始于原点的标准空间坐标系系统。axes:表示在坐标系中的比例(0-1),例如设置为0.5 就可以将边框置于坐标系中间。具体可参考文档。

Legend: 设置图例,图例将会根据Artist的类型自动生成,包括是否显示、位置、行列数、是否显示阴影框、字体和颜色。其中选择best将会根据图形自动选择最佳的位置,Legend也可以直接使用鼠标拖曳放置位置。其他loc参数可参考文档。

Grid: 设置网格,包括是否显示、网格线宽、曲线类型和颜色。对应代码ax.grid(**parm)​.

(2). 坐标轴设置面板:图片

Xlabel: 设置坐标轴标签的文字、位置、字体、颜色和距离,支持latex语法,该标签使用表格的name和unit参数生成,格式为:”name (unit)”.

Xlim: 设置坐标轴的数据范围,反转该值可以反转坐标轴。

Tick style: 设置如图中橙色的tick线的位置、风格、颜色、宽度、长度和距离。

Locator: 设置坐标轴刻度的位置和风格,如图所示,具体可参考文档图片

  • “LinearLocator”: 线性定位器,可以设置固定个数的刻度,配合xlim参数使用可以准确确定刻度。
  • “MultipleLocator”: 线性定位器,可以设置数字是几的倍数,例如:设置2,则选择坐标范围内所有2的倍数显示。
  • “MaxNLocator”: 线性定位器,自动设置,控制最多显示多少个刻度。
  • “LogLocator”: 对数刻度,
  • “SymmetricalLogLocator”: 双对数刻度。
  • “NullLocator”: 隐藏所有刻度
  • “StrCategoryLocator”:字符串刻度,根据图形类型自动生成,不可设置, 例如以字符串为X轴的柱状图。
  • “FixedLocator”:固定坐标,根据图形类型自动生成,不可设置。

Formater: 设置坐标轴刻度标签文字的显示风格,如图所示,具体可参考文档。图片

  • “ScalarFormatter”: 数字刻度,默认格式。
  • “NullFormatter”: 隐藏所有坐标
  • “StrMethodFormatter”: 格式化字符串刻度, 使用python的format格式化字符串语法 x变量可以引用刻度的数值。例如:原始数字30.0 使用 “# {x:.3} mg “,可以将当前刻度的数字格式化为 “#30.000 mg”
  • “EngFormatter”: 类似于格式化字符串刻度。
  • “PercentFormatter”: 百分比显示刻度
  • “StrCategoryFormatter”: 字符串刻度标签,根据图形类型自动生成,不可设置。
  • “LogFormatterSciNotation”: 对数字符串,显示底数和指数,
  • “LogFormatterMathtext”:对数字符串,只显示指数,
  • “LogFormatterExponent”: 对数字符串, ,只显示自然指数,
  • “FuncFormatter”: 自定义函数刻度字符串, 目前只添加了scaled 函数,显示为当前值*设置值,用于缩放坐标轴 。
  • “FixedFormatter”: 固定左边,自动生成。

至此,axes的设置完成,可以使用 apply to all axes 将当前坐标系的参数应用到该图的所有坐标系。

图形绘制:

1. 曲线图:

曲线图

如图所示,在表格中先设置绘图列的数据标签,曲线图可以选择多条曲线,可以有多个Y列,但至少要有一个X列。
图片

Y-OFFSET 曲线图

适合绘制光谱序列数据等,一个X轴具有多个Y轴的数据。
图片

堆叠图

图片

Stem 图

图片

X/Y 共辅助轴曲线

两组数据共享坐标轴
图片

共X轴曲线

多个坐标系数据共享一个X轴
图片

误差线图

为曲线绘制误差,需要在表格中设置误差列。
图片

误差带图

为曲线绘制误差,当曲线点数很多时,避免误差线过于密集而不可视。
图片

曲线图+直方图

为曲线绘制直方图,可以设置直方图的柱子的个数、宽度和范围。
图片

回归曲线图

绘制曲线的线性回归曲线。
图片

2. 饼形图:

图片

3. 散点图类:

散点图

图片

彩色气泡散点图

使用颜色表示散点图的密度,同时可以为每一个散点设置大小(可选项)。实现在散点上表达四维信息。如果不选择颜色列,则使用gaussian_KDE 算法自动计算密度值。
图片

标签散点图

根据每个散点的标签绘制颜色,适合聚类数据的可视化。
图片

散点图+直方图

又称为边缘直方图,在散点图的上绘制直方图分布。
图片

密度散点图+直方图

彩色气泡散点图和边缘直方图的合并体。
图片

散点图+置信区间

使用scikit-learn 评估散点图的置信区间
图片

3. 柱状图类

柱状图

图片

条形图

图片

堆叠柱状图

图片

堆叠条形图

图片

4. 分布图:

分布图类为一维图,因此通常无需设置数据标签(加权直方图)。

直方图

图片

加权直方图

为直方图的每一类添加权重列,需要设置Y列和weights列
图片

核密度分布图

图片

小提琴图

图片

箱型图

图片

事件图

图片

时间序列直方图

假设每一列数据为不同时刻采集的数据,为每一列数据绘制直方图观察数据分布随时间的变化
图片

2D直方图

使用hist2d计算并绘制散点数据,类似于核密度散点图。
图片

5. 热图:

colormesh图

图片

heatmap图

图片

Image Show

使用imshow绘制,具有更好的性能。
图片

地形图

图片

填充地形图

图片

6. seaborn:
使用seaborn绘图库绘图,需要特殊组织的Long-form 表格数据才能发挥最大优势。通常行数据为一个采样的获得不同类型,例如每一行是一个采样对象的名称、年龄、身高|体重等数据。

seaborn 分布图

图片

seaborn 小提琴图

图片

7. 3D图

3D 曲线图

图片

3D 散点图

图片

3D 线框图

图片

3D 曲面图

图片

3D 坐标系里的2D柱状图

图片

8. 添加文字注释和修饰图形:

PyNanoLab支持在任意位置添加文字,使用鼠标双击即可在坐标系中添加文本,一类是普通文本,一类是带箭头的注释文本。
使用右键菜单,可以在画布上添加直线和矩形方框。文本和修饰图形删除方法:鼠标左键选中保持,按DEL键删除。

图片

图片的导出、保存和重载:

PyNanoLab 在每个绘图窗口上都有导出按钮,可以导出单个图片,如下图所示:

图片

同时,也可以在Figure items窗口勾选要导出的图片批量导出。也可以导出整个图片文件夹。其中。.pnlfig 格式是PyNanoLab的私有格式,可以重新导入到PyNanoLab中还原上次的绘图设置;也可以将所有绘图和数据一起保存在工程文件中(推荐用法)。

上述所有图像已内置于PyNanoLab的所有版本中,点击工具栏的工具→打开内置模型按钮即可预览所有内置绘图。
此外,工具栏的工具→设置绘图风格工具,也可以为PyNanoLab设置默认的绘图风格。

相较于Original Lab等传统软件,PyNanoLab 绘图更简单直接,绘图风格更美观,且永久免费,欢迎下载使用。