Jupyter 中的科学绘图总结

Jupyter Notebook 是进行科学计算和数据可视化的强大工具。本文总结了 Jupyter 中常用的科学绘图方法,以及如何使用第三方库来改进图表的外观。

1. 基础绘图库

Jupyter 中最常用的科学绘图库是 Matplotlib 和 Seaborn。

  • Matplotlib:这是 Python 中最基础的绘图库,提供了丰富的 API 来生成各种类型的图表。它非常灵活,但默认样式相对基础。
    import matplotlib.pyplot as plt
    import numpy as np
    
    x = np.linspace(0, 10, 100)
    y = np.sin(x)
    
    plt.plot(x, y)
    plt.xlabel('X 值')
    plt.ylabel('Y 值')
    plt.title('简单的正弦函数图')
    plt.show()
    
  • Seaborn:Seaborn 基于 Matplotlib,提供了更高级的接口,可以方便地绘制统计图表,并且默认样式更加美观。
    import seaborn as sns
    import matplotlib.pyplot as plt
    
    sns.set(style='whitegrid')
    tips = sns.load_dataset('tips')
    sns.boxplot(x='day', y='total_bill', data=tips)
    plt.title('每日消费箱线图')
    plt.show()
    

2. 高级绘图与自定义样式

在进行科学绘图时,除了绘制数据之外,图表的美观性和可读性也非常重要。SciencePlots 是一个极其有用的第三方库,它提供了多种科学出版物风格的主题,使得生成的图表更符合出版物的要求。

SciencePlots 库介绍

SciencePlots 是一个为科学绘图而设计的 Matplotlib 样式库。它包含了一些非常适合科研和论文发表的主题,使得绘图更加专业。

要使用 SciencePlots,可以按以下步骤操作:

  1. 安装 SciencePlots

    pip install SciencePlots
    
  2. 使用 SciencePlots 的主题

    import matplotlib.pyplot as plt
    import numpy as np
    
    plt.style.use(['science', 'no-latex'])
    
    x = np.linspace(0, 10, 100)
    y = np.exp(-0.1 * x) * np.sin(x)
    
    plt.plot(x, y, label='阻尼正弦波')
    plt.xlabel('时间')
    plt.ylabel('幅值')
    plt.legend()
    plt.title('使用 SciencePlots 主题的绘图')
    plt.show()
    

    SciencePlots 提供了多种样式,例如 scienceieeenature 等,这些样式能够让绘图风格更加符合科学出版物的标准。

3. 化学科学绘图

在化学科学研究中,绘制高质量的分子结构和动力学数据也是非常重要的。以下介绍如何使用 OVITO 和 MDAnalysis 进行科学绘图。

3.1 使用 OVITO API 绘制高清图

OVITO 是一个强大的可视化工具,专门用于分子动力学(MD)和其他类型的科学数据的可视化。可以通过 OVITO 的 Python API 在 Jupyter 中绘制高清分子结构图。

  1. 安装 OVITO

    pip install ovito
    
  2. 使用 OVITO 绘制分子结构

    from ovito.io import import_file
    from ovito.vis import Viewport
    
    # 导入数据文件(如 LAMMPS dump 文件)
    pipeline = import_file('trajectory.dump')
    
    # 创建 Viewport 并设置图像大小
    vp = Viewport()
    vp.type = Viewport.Type.Perspective
    vp.render_image(filename='molecule_render.png', size=(800, 600), background=(1, 1, 1))
    

    通过 OVITO,用户可以轻松生成具有高清晰度和复杂可视化效果的分子结构图,非常适合用于科研论文或报告中。

3.2 使用 MDAnalysis 绘制动力学数据

MDAnalysis 是一个用于分析分子动力学轨迹的 Python 库,结合 Matplotlib 可以绘制分子动力学的分析结果。

  1. 安装 MDAnalysis

    pip install MDAnalysis
    
  2. 使用 MDAnalysis 绘制动力学数据

    import MDAnalysis as mda
    from MDAnalysis.analysis import rms
    import matplotlib.pyplot as plt
    
    # 导入轨迹和拓扑文件
    u = mda.Universe('topology.psf', 'trajectory.dcd')
    
    # 计算 RMSD
    R = rms.RMSD(u, select='protein and name CA')
    R.run()
    
    # 绘制 RMSD 随时间变化的曲线
    plt.plot(R.rmsd[:, 1], R.rmsd[:, 2])
    plt.xlabel('时间 (ps)')
    plt.ylabel('RMSD (Å)')
    plt.title('蛋白质 RMSD 随时间的变化')
    plt.show()
    

    MDAnalysis 提供了多种分析工具,可以方便地对分子动力学轨迹进行各种分析,并通过 Matplotlib 将结果可视化。

4. 小结

在 Jupyter Notebook 中,科学绘图可以通过 Matplotlib、Seaborn、OVITO 和 MDAnalysis 以及其他工具来实现。Matplotlib 提供了基础的绘图功能,Seaborn 则更加专注于统计图表,SciencePlots 为科学出版物提供了专业的绘图样式,而 OVITO 和 MDAnalysis 则为化学和分子动力学提供了高质量的可视化手段。通过结合这些工具,可以在科研工作中创建既美观又符合规范的图表和可视化效果。