File size: 2,966 Bytes
873af12
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "from bqplot import pyplot as plt\n",
    "import ipywidgets as widgets\n",
    "import numpy as np"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# generate some fake \n",
    "n = 2000\n",
    "x = np.linspace(0.0, 10.0, n)\n",
    "np.random.seed(0)\n",
    "y = np.cumsum(np.random.randn(n)*10).astype(int)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "fig_hist = plt.figure( title='Histogram')\n",
    "hist = plt.hist(y, bins=25)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "hist.bins = 10;"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "slider = widgets.IntSlider(description='Bins number', min=1, max=100, v_model=30)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "scrolled": false
   },
   "outputs": [],
   "source": [
    "widgets.link((hist, 'bins'), (slider, 'value'))\n",
    "\n",
    "fig_lines = plt.figure( title='Line Chart')\n",
    "lines = plt.plot(x, y)\n",
    "\n",
    "fig_lines.layout.width = 'auto'\n",
    "fig_lines.layout.height = 'auto'\n",
    "fig_hist.layout.width = 'auto'\n",
    "fig_hist.layout.height = 'auto'\n",
    "\n",
    "grid_layout = widgets.GridspecLayout(5, 3)\n",
    "\n",
    "grid_layout[:2, :] = fig_lines\n",
    "grid_layout[2:4, :] = fig_hist\n",
    "grid_layout[4, 1] = slider\n",
    "\n",
    "grid_layout.layout.height = '1000px'\n",
    "\n",
    "grid_layout"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "selector = plt.brush_int_selector()\n",
    "def update_range(*ignore):\n",
    "    if selector.selected is not None and len(selector.selected) == 2:\n",
    "        xmin, xmax = selector.selected\n",
    "        mask = (x > xmin) & (x < xmax)\n",
    "        hist.sample = y[mask]\n",
    "selector.observe(update_range, 'selected')        "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.3"
  },
  "widgets": {
   "application/vnd.jupyter.widget-state+json": {
    "state": {},
    "version_major": 2,
    "version_minor": 0
   }
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}