笔记本小组件

使用交互式小组件时,笔记本会变得生动起来。用户可以可视化和控制数据中的变化。学习将成为一种沉浸式、有趣的体验。研究人员可以轻松地看到,改变模型的输入如何影响结果。

ipyleaflet Binder 徽标 - ipyleaflet 示例 Binder GitHub 徽标 - ipyleaflet GitHub 存储库

一个用于创建简单交互式地图的库,具有平移和缩放功能,ipyleaflet 支持注释,例如多边形、标记,以及更通用的任何 geojson 编码的地理数据结构。

示例

from ipyleaflet import Map

Map(center=[34.6252978589571, -77.34580993652344], zoom=10)

安装

使用 conda
conda install -c conda-forge ipyleaflet
使用 pip
pip install ipyleaflet
如果你正在使用经典的 Jupyter Notebook < 5.3,你需要运行此额外命令
jupyter nbextension enable --py --sys-prefix ipyleaflet
如果你正在使用 JupyterLab ≤ 2,你需要安装 JupyterLab 扩展
jupyter labextension install @jupyter-widgets/jupyterlab-manager jupyter-leaflet
nglview Binder 徽标 - nglview 示例 Binder GitHub 徽标 - nglview Github 存储库

一个 Jupyter 小组件,用于交互式查看分子结构和轨迹。

示例

import pytraj as pt
import nglview as nv

traj = pt.load('sim.nc', top='sim.prmtop')
traj.strip(":TIP3")
view = nv.show_pytraj(traj)
view.clear()
view.add_cartoon('protein', color_scheme='residueindex')
view.add_ball_and_stick('not protein', opacity=0.5)
view

安装

使用 conda
conda install -c bioconda nglview
使用 pip
pip install nglview
jupyter nbextension enable --py --sys-prefix nglview
K3D-Jupyter GitHub 徽标 - K3D Jupyter GitHub 存储库

K3D 让你可以使用高级 API(曲面、等值面、体素、网格、云点、vtk 对象、体积渲染器、颜色图等)创建由 WebGL 支持的 3D 绘图。K3D-jupyter 的主要目的是易于作为 matplotlib 这样的独立包使用,但也可以与 VTK 等现有库进行互操作。ipywidgets 的强大功能也使其成为 HPC 计算(例如流体动力学)的快速高效的可视化工具。

展示库:https://k3d-jupyter.org/gallery/index.html

示例

import k3d
import numpy as np

lines = np.load('vertices.npy')
lines_attributes = np.load('attributes.npy')

plot = k3d.plot()

for l, a in zip(lines, lines_attributes):
    plot += k3d.line(l, attribute=a, width=0.0001,
                     color_map=k3d.matplotlib_color_maps.Inferno, color_range=[0,0.5], shader='mesh',
                     compression_level=9)
plot.display()

安装

使用 pip
pip install k3d
jupyter nbextension enable --py --sys-prefix k3d
如果你正在使用 JupyterLab,你需要安装 JupyterLab 扩展
jupyter labextension install @jupyter-widgets/jupyterlab-manager k3d
bqplot Binder 徽标 - bqplot 示例 Binder GitHub 徽标 - bqplot GitHub 存储库

一个 2-D 交互式数据可视化库,实现了图形语法结构,bqplot 提供了一个简单的 API,用于创建自定义用户交互。

示例

import numpy as np
import bqplot.pyplot as plt

size = 100

plt.figure(title='Scatter plot with colors')
plt.scatter(np.random.randn(size), np.random.randn(size), color=np.random.randn(size))
plt.show()

安装

使用 conda
conda install -c conda-forge bqplot
使用 pip
pip install bqplot
如果你正在使用经典的 Jupyter Notebook < 5.3,你需要运行此额外命令
jupyter nbextension enable --py --sys-prefix bqplot
如果你正在使用 JupyterLab ≤ 2,你需要安装 JupyterLab 扩展
jupyter labextension install @jupyter-widgets/jupyterlab-manager bqplot
pythreejs Binder 徽标 - pythreejs 示例 Binder GitHub 徽标 - pythreejs GitHub 存储库

一个 3-D 可视化库,在 Jupyter 中启用 GPU 加速计算机图形。

示例

from pythreejs import *

f = """
function f(origu,origv) {
    // scale u and v to the ranges I want: [0, 2*pi]
    var u = 2*Math.PI*origu;
    var v = 2*Math.PI*origv;

    var x = Math.sin(u);
    var y = Math.cos(v);
    var z = Math.cos(u+v);

    return new THREE.Vector3(x,y,z);
}
"""

surf_g = ParametricGeometry(func=f, slices=16, stacks=16)
surf = Mesh(geometry=surf_g, material=MeshLambertMaterial(color='green', side='FrontSide'))
surf2 = Mesh(geometry=surf_g, material=MeshLambertMaterial(color='yellow', side='BackSide'))
c = PerspectiveCamera(position=[5, 5, 3], up=[0, 0, 1],
                      children=[DirectionalLight(color='white',
                                                 position=[3, 5, 1],
                                                 intensity=0.6)])
scene = Scene(children=[surf, surf2, c, AmbientLight(intensity=0.5)])
Renderer(camera=c, scene=scene, controls=[OrbitControls(controlling=c)], width=400, height=400)

安装

使用 conda
conda install -c conda-forge pythreejs
使用 pip
pip install pythreejs
如果你正在使用经典的 Jupyter Notebook < 5.3,你需要运行此额外命令
jupyter nbextension enable --py --sys-prefix pythreejs
如果你正在使用 JupyterLab ≤ 2,你需要安装 JupyterLab 扩展
jupyter labextension install @jupyter-widgets/jupyterlab-manager jupyter-threejs
ipyvolume Binder 徽标 - ipyvolume 示例 Binder GitHub 徽标 - ipyvolume GitHub 存储库

基于使用 WebGL 的 IPython 小组件,为 Jupyter 笔记本中的 Python 提供 3-D 绘图。

示例

import ipyvolume.pylab as p3
import numpy as np

fig = p3.figure()
q = p3.quiver(*stream.data[:,0:50,:200], color="red", size=7)
p3.style.use("dark") # looks better
p3.animation_control(q, interval=200)
p3.show()

安装

使用 conda
conda install -c conda-forge ipyvolume
使用 pip
pip install ipyvolume
jupyter nbextension enable --py --sys-prefix ipyvolume
如果你正在使用 JupyterLab,你需要安装 JupyterLab 扩展
jupyter labextension install @jupyter-widgets/jupyterlab-manager jupyter-threejs ipyvolume
BeakerX GitHub 徽标 - BeakerX GitHub 存储库

BeakerX 包含用于交互式表格、绘图、表单、Apache Spark 等的小组件。表格小组件会自动识别 pandas 数据框,并允许您搜索、排序、拖动、筛选、格式化、选择、绘制图表、隐藏、固定和导出到 CSV 或剪贴板。这使得连接到电子表格变得快速而简单。

下面显示的表格小组件之所以如此快速,是因为它使用 PhosphorJS 数据网格(Jupyter Lab 架构的一部分)实现。

示例

import pandas as pd
from beakerx import *
pd.read_csv("UScity.csv")

安装

使用 conda
conda install -c conda-forge beakerx ipywidgets
使用 pip
pip install beakerx
beakerx-install
jupyter-gmaps GitHub 徽标 - jupyter-gmaps GitHub 存储库

Gmaps 允许您将交互式 Google 地图嵌入 Jupyter 笔记本中。使用热图、GeoJSON、符号和标记可视化您的数据,或绘制方向、交通或自行车路线。允许用户在地图上绘制并捕获他们放置的标记或多边形的坐标,以完全使用 Python 构建交互式应用程序。

示例

import gmaps
import gmaps.datasets
gmaps.configure(api_key="AI...")  # Your Google API key

locations = gmaps.datasets.load_dataset("taxi_rides")

fig = gmaps.figure()

# locations could be an array, a dataframe or just a Python iterable
fig.add_layer(gmaps.heatmap_layer(locations))

fig

安装

使用 conda
conda install -c conda-forge gmaps
使用 pip
pip install gmaps
jupyter nbextension enable --py --sys-prefix gmaps
如果你正在使用 JupyterLab,你需要安装 JupyterLab 扩展
jupyter labextension install @jupyter-widgets/jupyterlab-manager
小组件 cookiecutters GitHub 徽标 - widget-cookiecutter GitHub 存储库 GitHub 徽标 - widget-ts-cookiecutter GitHub 存储库

Jupyter 小组件框架具有可扩展性,使开发人员能够创建自定义小组件库和 JavaScript 和 TypeScript 生态系统的可视化库绑定。

cookiecutter 项目帮助小组件作者快速了解 Jupyter 交互式小组件的打包和分发,包括 JavaScriptTypeScript

它们根据当前最佳实践生成 Jupyter 交互式小组件库的基础项目。提供占位符“Hello World”小组件的实现。遵循这些实践将帮助您的自定义小组件在静态网页(如本页面的示例)中工作,并与 Jupyter 的未来版本兼容。

perspective GitHub 徽标 - perspective GitHub 存储库

Perspective 是一个交互式可视化组件,适用于大型实时数据集。Perspective 最初是为摩根大通的交易业务开发的,它简化了完全在浏览器中或与 Python 和/或 Jupyterlab 结合构建实时和用户可配置分析的过程。

Perspective 可用于创建报告、仪表盘、笔记本和应用程序,并通过 Apache Arrow 提供静态数据或流更新。