Mixing ipyvolume with bqplot¶
This example shows how the selection from a ipyvolume quiver plot can be controlled with a bqplot scatter plot and it’s selection tools. We first get a small dataset from vaex
In [5]:
import numpy as np
import vaex
In [6]:
ds = vaex.example()
N = 2000 # for performance reasons we only do a subset
x, y, z, vx, vy, vz, Lz, E = [ds.columns[k][:N] for k in "x y z vx vy vz Lz E".split()]
bqplot scatter plot¶
And create a scatter plot with bqplot
In [7]:
import bqplot.pyplot as plt
In [8]:
plt.figure(1, title="E Lz space")
scatter = plt.scatter(Lz, E,
selected_style={'opacity': 0.2, 'size':1, 'stroke': 'red'},
unselected_style={'opacity': 0.2, 'size':1, 'stroke': 'blue'},
default_size=1,
)
plt.brush_selector()
plt.show()
Ipyvolume quiver plot¶
And use ipyvolume to create a quiver plot
In [9]:
import ipyvolume.pylab as p3
In [10]:
p3.clear()
quiver = p3.quiver(x, y, z, vx, vy, vz, size=2, size_selected=5, color_selected="blue")
p3.show()
Linking ipyvolume and bqplot¶
Using jslink, we link the selected
properties of both widgets, and
we display them next to eachother using a VBox.
In [11]:
from ipywidgets import jslink, VBox
In [12]:
jslink((scatter, 'selected'), (quiver, 'selected'))
In [13]:
hbox = VBox([p3.current.container, plt.figure(1)])
hbox
Embedding¶
We embed the two widgets in an html file, creating a standlone plot.
In [14]:
import ipyvolume.embed
# if we don't do this, the bqplot will be really tiny in the standalone html
bqplot_layout = hbox.children[1].layout
bqplot_layout.min_width = "400px"
In [15]:
ipyvolume.embed.embed_html("bqplot.html", hbox)
In [ ]: