Welcome to our Support Center
TOC
< All

Data Visualization Using PyNanoLab

 

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

绘图框架

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

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

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

Figure对象设置:

file

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

Axes对象设置:

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

(1). Frame设置面板:

file

如图所示,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). 坐标轴设置面板:

file

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

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

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

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

file

  • "AutoLocator": 自动设置

  • "LinearLocator": 线性定位器,可以设置固定个数的刻度,配合xlim参数使用可以准确确定刻度。

  • "MultipleLocator": 线性定位器,可以设置数字是几的倍数,例如:设置2,则选择坐标范围内所有2的倍数显示。

  • "MaxNLocator": 线性定位器,自动设置,控制最多显示多少个刻度。

  • "LogLocator": 对数刻度,

  • "SymmetricalLogLocator": 双对数刻度。

  • "NullLocator": 隐藏所有刻度

  • "StrCategoryLocator": 字符串刻度,根据图形类型自动生成,不可设置, 例如以字符串为X轴的柱状图。

  • "FixedLocator": 固定坐标,根据图形类型自动生成,不可设置。

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

  • "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列。
    file

  • Y-OFFSET 曲线图
    适合绘制光谱序列数据等,一个X轴具有多个Y轴的数据。
    file

  • 堆叠图
    file

  • Stem 图
    file

  • X/Y 共辅助轴曲线
    两组数据共享坐标轴
    file

  • 共X轴曲线
    多个坐标系数据共享一个X轴
    file

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

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

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

  • 回归曲线图
    绘制曲线的线性回归曲线。
    file

2. 饼形图:

file

3. 散点图:
  • 散点图
    file

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

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

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

  • 密度散点图+直方图
    彩色气泡散点图和边缘直方图的合并体。
    file

  • 散点图+置信区间
    使用scikit-learn 评估散点图的置信区间
    file

3. 柱状图:
  • 柱状图
    可以设置Y误差
    file

  • 条形图
    file

  • 堆叠柱状图
    file

  • 堆叠条形图
    file

4. 分布图:

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

  • 直方图
    file

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

  • 核密度分布图
    file

  • 小提琴图
    file

  • 箱型图
    file

  • 事件图
    file

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

  • 2D直方图
    使用hist2d计算并绘制散点数据,类似于核密度散点图。
    file

5. 热图:
  • colormesh图
    file

  • heatmap图
    file

  • 显示图像
    使用imshow绘制,具有更好的性能。
    file

  • 地形图
    file

  • 填充地形图
    地形图的填充版本
    file

6. seaborn:

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

  • seaborn 分布图
    file

  • seaborn 小提琴图
    file

7. 3D图:

目前只适合绘制简单的3D图

  • 3D 曲线图
    file

  • 3D 散点图
    file

  • 3D 线框图
    file

  • 3D 曲面图
    file

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

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

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

file

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

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

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

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