|
3 | 3 | {
|
4 | 4 | "cell_type": "code",
|
5 | 5 | "execution_count": null,
|
6 |
| - "metadata": { |
7 |
| - "collapsed": false |
8 |
| - }, |
| 6 | + "metadata": {}, |
9 | 7 | "outputs": [],
|
10 | 8 | "source": [
|
11 | 9 | "from imp import reload"
|
|
23 | 21 | {
|
24 | 22 | "cell_type": "code",
|
25 | 23 | "execution_count": null,
|
26 |
| - "metadata": { |
27 |
| - "collapsed": false |
28 |
| - }, |
| 24 | + "metadata": {}, |
29 | 25 | "outputs": [],
|
30 | 26 | "source": [
|
31 | 27 | "import matplotlib\n",
|
|
49 | 45 | {
|
50 | 46 | "cell_type": "code",
|
51 | 47 | "execution_count": null,
|
52 |
| - "metadata": { |
53 |
| - "collapsed": false |
54 |
| - }, |
| 48 | + "metadata": {}, |
55 | 49 | "outputs": [],
|
56 | 50 | "source": [
|
57 | 51 | "import matplotlib.backends.backend_webagg_core\n",
|
|
78 | 72 | {
|
79 | 73 | "cell_type": "code",
|
80 | 74 | "execution_count": null,
|
81 |
| - "metadata": { |
82 |
| - "collapsed": false |
83 |
| - }, |
| 75 | + "metadata": {}, |
84 | 76 | "outputs": [],
|
85 | 77 | "source": [
|
86 | 78 | "plt.plot([3, 2, 1])\n",
|
|
99 | 91 | {
|
100 | 92 | "cell_type": "code",
|
101 | 93 | "execution_count": null,
|
102 |
| - "metadata": { |
103 |
| - "collapsed": false |
104 |
| - }, |
| 94 | + "metadata": {}, |
105 | 95 | "outputs": [],
|
106 | 96 | "source": [
|
107 | 97 | "print(matplotlib.backends.backend_nbagg.connection_info())"
|
|
119 | 109 | {
|
120 | 110 | "cell_type": "code",
|
121 | 111 | "execution_count": null,
|
122 |
| - "metadata": { |
123 |
| - "collapsed": false |
124 |
| - }, |
| 112 | + "metadata": {}, |
125 | 113 | "outputs": [],
|
126 | 114 | "source": [
|
127 |
| - "plt.close(fig1)" |
| 115 | + "plt.close(fig1)\n", |
| 116 | + "plt.close('all')" |
128 | 117 | ]
|
129 | 118 | },
|
130 | 119 | {
|
|
140 | 129 | {
|
141 | 130 | "cell_type": "code",
|
142 | 131 | "execution_count": null,
|
143 |
| - "metadata": { |
144 |
| - "collapsed": false |
145 |
| - }, |
| 132 | + "metadata": {}, |
146 | 133 | "outputs": [],
|
147 | 134 | "source": [
|
148 | 135 | "plt.plot(range(10))"
|
|
160 | 147 | {
|
161 | 148 | "cell_type": "code",
|
162 | 149 | "execution_count": null,
|
163 |
| - "metadata": { |
164 |
| - "collapsed": false |
165 |
| - }, |
| 150 | + "metadata": {}, |
166 | 151 | "outputs": [],
|
167 | 152 | "source": [
|
168 | 153 | "print(matplotlib.backends.backend_nbagg.connection_info())"
|
|
180 | 165 | {
|
181 | 166 | "cell_type": "code",
|
182 | 167 | "execution_count": null,
|
183 |
| - "metadata": { |
184 |
| - "collapsed": false |
185 |
| - }, |
| 168 | + "metadata": {}, |
186 | 169 | "outputs": [],
|
187 | 170 | "source": [
|
188 | 171 | "plt.show()\n",
|
|
203 | 186 | {
|
204 | 187 | "cell_type": "code",
|
205 | 188 | "execution_count": null,
|
206 |
| - "metadata": { |
207 |
| - "collapsed": false |
208 |
| - }, |
| 189 | + "metadata": {}, |
209 | 190 | "outputs": [],
|
210 | 191 | "source": [
|
211 | 192 | "plt.interactive(True)\n",
|
|
223 | 204 | {
|
224 | 205 | "cell_type": "code",
|
225 | 206 | "execution_count": null,
|
226 |
| - "metadata": { |
227 |
| - "collapsed": false |
228 |
| - }, |
| 207 | + "metadata": {}, |
229 | 208 | "outputs": [],
|
230 | 209 | "source": [
|
231 | 210 | "plt.plot(range(3))"
|
|
241 | 220 | {
|
242 | 221 | "cell_type": "code",
|
243 | 222 | "execution_count": null,
|
244 |
| - "metadata": { |
245 |
| - "collapsed": false |
246 |
| - }, |
| 223 | + "metadata": {}, |
247 | 224 | "outputs": [],
|
248 | 225 | "source": [
|
249 | 226 | "print(matplotlib.backends.backend_nbagg.connection_info())"
|
|
259 | 236 | {
|
260 | 237 | "cell_type": "code",
|
261 | 238 | "execution_count": null,
|
262 |
| - "metadata": { |
263 |
| - "collapsed": false |
264 |
| - }, |
| 239 | + "metadata": {}, |
265 | 240 | "outputs": [],
|
266 | 241 | "source": [
|
267 | 242 | "plt.interactive(False)"
|
|
279 | 254 | {
|
280 | 255 | "cell_type": "code",
|
281 | 256 | "execution_count": null,
|
282 |
| - "metadata": { |
283 |
| - "collapsed": false |
284 |
| - }, |
| 257 | + "metadata": {}, |
285 | 258 | "outputs": [],
|
286 | 259 | "source": [
|
287 | 260 | "plt.gcf().canvas.manager.reshow()"
|
|
310 | 283 | {
|
311 | 284 | "cell_type": "code",
|
312 | 285 | "execution_count": null,
|
313 |
| - "metadata": { |
314 |
| - "collapsed": false |
315 |
| - }, |
| 286 | + "metadata": {}, |
316 | 287 | "outputs": [],
|
317 | 288 | "source": [
|
318 | 289 | "fig = plt.figure()\n",
|
|
335 | 306 | {
|
336 | 307 | "cell_type": "code",
|
337 | 308 | "execution_count": null,
|
338 |
| - "metadata": { |
339 |
| - "collapsed": false |
340 |
| - }, |
| 309 | + "metadata": {}, |
341 | 310 | "outputs": [],
|
342 | 311 | "source": [
|
343 | 312 | "from matplotlib.backends.backend_nbagg import new_figure_manager,show\n",
|
|
361 | 330 | {
|
362 | 331 | "cell_type": "code",
|
363 | 332 | "execution_count": null,
|
364 |
| - "metadata": { |
365 |
| - "collapsed": false |
366 |
| - }, |
| 333 | + "metadata": {}, |
367 | 334 | "outputs": [],
|
368 | 335 | "source": [
|
369 | 336 | "import matplotlib.animation as animation\n",
|
|
384 | 351 | " return line,\n",
|
385 | 352 | "\n",
|
386 | 353 | "ani = animation.FuncAnimation(fig, animate, np.arange(1, 200), init_func=init,\n",
|
387 |
| - " interval=32., blit=True)\n", |
| 354 | + " interval=100., blit=True)\n", |
388 | 355 | "plt.show()"
|
389 | 356 | ]
|
390 | 357 | },
|
| 358 | + { |
| 359 | + "cell_type": "code", |
| 360 | + "execution_count": null, |
| 361 | + "metadata": {}, |
| 362 | + "outputs": [], |
| 363 | + "source": [ |
| 364 | + "ani.event_source.stop()" |
| 365 | + ] |
| 366 | + }, |
391 | 367 | {
|
392 | 368 | "cell_type": "markdown",
|
393 | 369 | "metadata": {},
|
|
404 | 380 | {
|
405 | 381 | "cell_type": "code",
|
406 | 382 | "execution_count": null,
|
407 |
| - "metadata": { |
408 |
| - "collapsed": false |
409 |
| - }, |
| 383 | + "metadata": {}, |
410 | 384 | "outputs": [],
|
411 | 385 | "source": [
|
412 | 386 | "import matplotlib\n",
|
|
430 | 404 | {
|
431 | 405 | "cell_type": "code",
|
432 | 406 | "execution_count": null,
|
433 |
| - "metadata": { |
434 |
| - "collapsed": false |
435 |
| - }, |
| 407 | + "metadata": {}, |
436 | 408 | "outputs": [],
|
437 | 409 | "source": [
|
438 | 410 | "import itertools\n",
|
|
477 | 449 | {
|
478 | 450 | "cell_type": "code",
|
479 | 451 | "execution_count": null,
|
480 |
| - "metadata": { |
481 |
| - "collapsed": false |
482 |
| - }, |
| 452 | + "metadata": {}, |
483 | 453 | "outputs": [],
|
484 | 454 | "source": [
|
485 | 455 | "import time\n",
|
|
506 | 476 | {
|
507 | 477 | "cell_type": "code",
|
508 | 478 | "execution_count": null,
|
509 |
| - "metadata": { |
510 |
| - "collapsed": false |
511 |
| - }, |
| 479 | + "metadata": {}, |
512 | 480 | "outputs": [],
|
513 | 481 | "source": [
|
514 | 482 | "fig, ax = plt.subplots()\n",
|
|
531 | 499 | {
|
532 | 500 | "cell_type": "code",
|
533 | 501 | "execution_count": null,
|
534 |
| - "metadata": { |
535 |
| - "collapsed": false |
536 |
| - }, |
| 502 | + "metadata": {}, |
537 | 503 | "outputs": [],
|
538 | 504 | "source": [
|
539 | 505 | "fig, ax = plt.subplots()\n",
|
|
549 | 515 | {
|
550 | 516 | "cell_type": "code",
|
551 | 517 | "execution_count": null,
|
552 |
| - "metadata": { |
553 |
| - "collapsed": false |
554 |
| - }, |
| 518 | + "metadata": {}, |
555 | 519 | "outputs": [],
|
556 | 520 | "source": [
|
557 | 521 | "fig, ax = plt.subplots()\n",
|
|
569 | 533 | "cell_type": "markdown",
|
570 | 534 | "metadata": {},
|
571 | 535 | "source": [
|
572 |
| - "### UAT17 - stopping figure when removed from DOM\n", |
| 536 | + "### UAT 18 - stopping figure when removed from DOM\n", |
573 | 537 | "\n",
|
574 | 538 | "When the div that contains from the figure is removed from the DOM the figure should shut down it's comm, and if the python-side figure has no more active comms, it should destroy the figure. Repeatedly running the cell below should always have the same figure number"
|
575 | 539 | ]
|
576 | 540 | },
|
577 | 541 | {
|
578 | 542 | "cell_type": "code",
|
579 | 543 | "execution_count": null,
|
580 |
| - "metadata": { |
581 |
| - "collapsed": false |
582 |
| - }, |
| 544 | + "metadata": {}, |
583 | 545 | "outputs": [],
|
584 | 546 | "source": [
|
585 | 547 | "fig, ax = plt.subplots()\n",
|
|
597 | 559 | {
|
598 | 560 | "cell_type": "code",
|
599 | 561 | "execution_count": null,
|
600 |
| - "metadata": { |
601 |
| - "collapsed": false |
602 |
| - }, |
| 562 | + "metadata": {}, |
603 | 563 | "outputs": [],
|
604 | 564 | "source": [
|
605 | 565 | "fig.canvas.manager.reshow()"
|
606 | 566 | ]
|
607 | 567 | },
|
608 | 568 | {
|
609 |
| - "cell_type": "code", |
610 |
| - "execution_count": null, |
| 569 | + "cell_type": "markdown", |
611 | 570 | "metadata": {
|
612 | 571 | "collapsed": true
|
613 | 572 | },
|
| 573 | + "source": [ |
| 574 | + "### UAT 19 - Blitting\n", |
| 575 | + "\n", |
| 576 | + "Clicking on the figure should plot a green horizontal line moving up the axes." |
| 577 | + ] |
| 578 | + }, |
| 579 | + { |
| 580 | + "cell_type": "code", |
| 581 | + "execution_count": null, |
| 582 | + "metadata": {}, |
| 583 | + "outputs": [], |
| 584 | + "source": [ |
| 585 | + "import itertools\n", |
| 586 | + "\n", |
| 587 | + "cnt = itertools.count()\n", |
| 588 | + "bg = None\n", |
| 589 | + "\n", |
| 590 | + "def onclick_handle(event):\n", |
| 591 | + " \"\"\"Should draw elevating green line on each mouse click\"\"\"\n", |
| 592 | + " global bg\n", |
| 593 | + " if bg is None:\n", |
| 594 | + " bg = ax.figure.canvas.copy_from_bbox(ax.bbox) \n", |
| 595 | + " ax.figure.canvas.restore_region(bg)\n", |
| 596 | + "\n", |
| 597 | + " cur_y = (next(cnt) % 10) * 0.1\n", |
| 598 | + " ln.set_ydata([cur_y, cur_y])\n", |
| 599 | + " ax.draw_artist(ln)\n", |
| 600 | + " ax.figure.canvas.blit(ax.bbox)\n", |
| 601 | + "\n", |
| 602 | + "\n", |
| 603 | + "fig, ax = plt.subplots()\n", |
| 604 | + "ax.plot([0, 1], [0, 1], 'r')\n", |
| 605 | + "ln, = ax.plot([0, 1], [0, 0], 'g', animated=True)\n", |
| 606 | + "plt.show()\n", |
| 607 | + "ax.figure.canvas.draw()\n", |
| 608 | + "\n", |
| 609 | + "ax.figure.canvas.mpl_connect('button_press_event', onclick_handle)" |
| 610 | + ] |
| 611 | + }, |
| 612 | + { |
| 613 | + "cell_type": "code", |
| 614 | + "execution_count": null, |
| 615 | + "metadata": {}, |
614 | 616 | "outputs": [],
|
615 | 617 | "source": []
|
616 | 618 | }
|
|
631 | 633 | "name": "python",
|
632 | 634 | "nbconvert_exporter": "python",
|
633 | 635 | "pygments_lexer": "ipython3",
|
634 |
| - "version": "3.4.3" |
| 636 | + "version": "3.8.5" |
635 | 637 | }
|
636 | 638 | },
|
637 | 639 | "nbformat": 4,
|
638 |
| - "nbformat_minor": 0 |
| 640 | + "nbformat_minor": 1 |
639 | 641 | }
|
0 commit comments