From f540dc98850f6411794435fbc29014d170e714e5 Mon Sep 17 00:00:00 2001 From: Shuhui Bu Date: Sun, 14 Oct 2018 11:23:01 +0800 Subject: [PATCH] Add dnn tips, rearrange dir structures --- .../README.md | 0 .../bokeh_tutorial.ipynb | 893 ++++++++++++++++++ .../example.png | Bin .../ipython_notebook.ipynb | 0 .../matplotlib_ani.ipynb | 0 .../matplotlib_ani.py | 0 .../matplotlib_full.ipynb | 0 .../matplotlib_simple_tutorial.ipynb | 0 .../matplotlib_simple_tutorial.py | 0 .../numpy_tutorial.ipynb | 0 .../scipy_tutorial.ipynb | 0 .../stockholm_td_adj.dat | 0 .../sympy_tutorial.ipynb | 0 .../utils_git.ipynb | 0 .../utils_git_advanced.ipynb | 0 .../utils_shell.ipynb | 0 {1_knn => 2_knn}/images/knn.png | Bin {1_knn => 2_knn}/knn_classification.ipynb | 0 {1_knn => 2_knn}/knn_classification.py | 0 .../ClusteringAlgorithms.ipynb | 0 .../ClusteringAlgorithms.py | 0 {1_kmeans => 3_kmeans}/README.md | 0 {1_kmeans => 3_kmeans}/download_iris.py | 0 {1_kmeans => 3_kmeans}/images/ARI_ct.png | Bin {1_kmeans => 3_kmeans}/images/ARI_define.png | Bin {1_kmeans => 3_kmeans}/images/data_0.png | Bin {1_kmeans => 3_kmeans}/images/data_1.png | Bin {1_kmeans => 3_kmeans}/images/data_2.png | Bin {1_kmeans => 3_kmeans}/iris.csv | 0 {1_kmeans => 3_kmeans}/k-means.ipynb | 0 {1_kmeans => 3_kmeans}/k-means.py | 0 {1_kmeans => 3_kmeans}/kmeans-color-vq.ipynb | 0 .../Least_squares.ipynb | 0 .../Least_squares.py | 0 .../Logistic_regression.ipynb | 0 .../Logistic_regression.py | 0 .../PCA_and_Logistic_Regression.ipynb | 0 .../PCA_and_Logistic_Regression.py | 0 .../images/eq_logloss.png | Bin .../images/eq_logloss_diff.png | Bin .../images/eq_loss.png | Bin .../images/fig1.gif | Bin .../images/fig2.gif | Bin .../images/fig3.gif | Bin .../images/gd_stepsize.png | Bin .../images/gradient_descent.png | Bin {1_nn => 5_nn}/Perceptron.ipynb | 0 {1_nn => 5_nn}/Perceptron.py | 0 {1_nn => 5_nn}/images/L_b.png | Bin {1_nn => 5_nn}/images/L_w.png | Bin {1_nn => 5_nn}/images/bp_loss.png | Bin {1_nn => 5_nn}/images/bp_weight_update.png | Bin {1_nn => 5_nn}/images/cross_entropy_loss.png | Bin {1_nn => 5_nn}/images/eqn_13_16.png | Bin {1_nn => 5_nn}/images/eqn_17_20.png | Bin {1_nn => 5_nn}/images/eqn_21_22.png | Bin {1_nn => 5_nn}/images/eqn_23_25.png | Bin {1_nn => 5_nn}/images/eqn_26.png | Bin {1_nn => 5_nn}/images/eqn_27_29.png | Bin {1_nn => 5_nn}/images/eqn_30_31.png | Bin {1_nn => 5_nn}/images/eqn_32_34.png | Bin {1_nn => 5_nn}/images/eqn_35_40.png | Bin {1_nn => 5_nn}/images/eqn_3_4.png | Bin {1_nn => 5_nn}/images/eqn_5_6.png | Bin {1_nn => 5_nn}/images/eqn_7_12.png | Bin {1_nn => 5_nn}/images/eqn_delta_hidden.png | Bin {1_nn => 5_nn}/images/eqn_delta_j.png | Bin {1_nn => 5_nn}/images/eqn_ed_net_j.png | Bin {1_nn => 5_nn}/images/eqn_hidden_units.png | Bin {1_nn => 5_nn}/images/eqn_matrix1.png | Bin {1_nn => 5_nn}/images/eqn_w41_update.png | Bin {1_nn => 5_nn}/images/eqn_w4b_update.png | Bin {1_nn => 5_nn}/images/eqn_w84_update.png | Bin {1_nn => 5_nn}/images/formular_2.png | Bin {1_nn => 5_nn}/images/formular_3.png | Bin {1_nn => 5_nn}/images/formular_4.png | Bin {1_nn => 5_nn}/images/formular_5.png | Bin {1_nn => 5_nn}/images/forumlar_delta4.png | Bin {1_nn => 5_nn}/images/forumlar_delta8.png | Bin {1_nn => 5_nn}/images/neuron.gif | Bin {1_nn => 5_nn}/images/neuron.png | Bin {1_nn => 5_nn}/images/nn1.jpeg | Bin {1_nn => 5_nn}/images/nn2.png | Bin {1_nn => 5_nn}/images/nn3.png | Bin {1_nn => 5_nn}/images/nn_parameters_demo.png | Bin {1_nn => 5_nn}/images/perceptron_2.PNG | Bin .../images/perceptron_geometry_def.png | Bin {1_nn => 5_nn}/images/sigmod.jpg | Bin {1_nn => 5_nn}/images/sign.png | Bin {1_nn => 5_nn}/images/softmax.png | Bin {1_nn => 5_nn}/images/softmax_demo.png | Bin {1_nn => 5_nn}/images/softmax_neuron.png | Bin .../images/softmax_neuron_output2_eqn.png | Bin .../images/softmax_neuron_output_eqn.png | Bin {1_nn => 5_nn}/mlp_bp.ipynb | 0 {1_nn => 5_nn}/mlp_bp.py | 0 {1_nn => 5_nn}/note.txt | 0 {1_nn => 5_nn}/softmax_ce.ipynb | 0 {1_nn => 5_nn}/softmax_ce.py | 0 .../0_basic/Tensor-and-Variable.ipynb | 0 .../0_basic/autograd.ipynb | 0 {2_pytorch => 6_pytorch}/0_basic/autograd.py | 0 .../0_basic/dynamic-graph.ipynb | 0 .../0_basic/imgs/autograd_Variable.png | Bin .../0_basic/imgs/autograd_Variable.svg | 0 .../0_basic/imgs/com_graph.svg | 0 .../0_basic/imgs/com_graph_backward.svg | 0 .../0_basic/imgs/tensor_data_structure.svg | 0 .../0_basic/ref_Autograd.ipynb | 0 .../0_basic/ref_Tensor.ipynb | 0 {2_pytorch => 6_pytorch}/1_NN/bp.ipynb | 0 {2_pytorch => 6_pytorch}/1_NN/data.txt | 0 {2_pytorch => 6_pytorch}/1_NN/deep-nn.ipynb | 0 {2_pytorch => 6_pytorch}/1_NN/deep-nn.py | 0 {2_pytorch => 6_pytorch}/1_NN/imgs/ResNet.png | Bin {2_pytorch => 6_pytorch}/1_NN/imgs/lena.png | Bin {2_pytorch => 6_pytorch}/1_NN/imgs/lena3.png | Bin .../1_NN/imgs/lena512.png | Bin .../1_NN/imgs/multi_perceptron.png | Bin .../1_NN/imgs/residual.png | Bin .../1_NN/imgs/resnet1.png | Bin .../1_NN/imgs/trans.bkp.PNG | Bin .../linear-regression-gradient-descend.ipynb | 0 .../linear-regression-gradient-descend.py | 0 .../1_NN/logistic-regression.ipynb | 0 .../1_NN/logistic-regression.py | 0 .../1_NN/nn-sequential-module.ipynb | 0 .../1_NN/nn_summary.ipynb | 0 .../1_NN/optimizer/adadelta.ipynb | 0 .../1_NN/optimizer/adadelta.py | 0 .../1_NN/optimizer/adagrad.ipynb | 18 +- .../1_NN/optimizer/adam.ipynb | 0 .../1_NN/optimizer/adam.py | 0 .../1_NN/optimizer/momentum.ipynb | 0 .../1_NN/optimizer/momentum.py | 0 .../1_NN/optimizer/rmsprop.ipynb | 0 .../1_NN/optimizer/rmsprop.py | 0 .../1_NN/optimizer/sgd.ipynb | 0 .../1_NN/optimizer/sgd.py | 0 .../1_NN/param_initialize.ipynb | 0 .../2_CNN/basic_conv.ipynb | 0 {2_pytorch => 6_pytorch}/2_CNN/basic_conv.py | 0 .../2_CNN/batch-normalization.ipynb | 0 .../2_CNN/batch-normalization.py | 0 {2_pytorch => 6_pytorch}/2_CNN/cat.png | Bin .../2_CNN/data-augumentation.ipynb | 0 .../2_CNN/data-augumentation.py | 0 {2_pytorch => 6_pytorch}/2_CNN/densenet.ipynb | 0 {2_pytorch => 6_pytorch}/2_CNN/densenet.py | 0 .../2_CNN/googlenet.ipynb | 0 {2_pytorch => 6_pytorch}/2_CNN/googlenet.py | 0 {2_pytorch => 6_pytorch}/2_CNN/lr-decay.ipynb | 0 {2_pytorch => 6_pytorch}/2_CNN/lr-decay.py | 0 .../2_CNN/regularization.ipynb | 0 .../2_CNN/regularization.py | 0 {2_pytorch => 6_pytorch}/2_CNN/resnet.ipynb | 0 {2_pytorch => 6_pytorch}/2_CNN/resnet.py | 0 {2_pytorch => 6_pytorch}/2_CNN/utils.py | 0 {2_pytorch => 6_pytorch}/2_CNN/vgg.ipynb | 0 {2_pytorch => 6_pytorch}/2_CNN/vgg.py | 0 .../3_RNN/nlp/n-gram.ipynb | 0 .../3_RNN/nlp/seq-lstm.ipynb | 0 .../3_RNN/nlp/word-embedding.ipynb | 0 .../3_RNN/pytorch-rnn.ipynb | 0 .../3_RNN/rnn-for-image.ipynb | 0 .../3_RNN/time-series/data.csv | 0 .../3_RNN/time-series/lstm-time-series.ipynb | 0 .../3_RNN/time-series/lstm-time-series.py | 0 {2_pytorch => 6_pytorch}/3_RNN/utils.py | 0 .../4_GAN/autoencoder.ipynb | 0 {2_pytorch => 6_pytorch}/4_GAN/autoencoder.py | 0 {2_pytorch => 6_pytorch}/4_GAN/gan.ipynb | 0 {2_pytorch => 6_pytorch}/4_GAN/gan.py | 0 {2_pytorch => 6_pytorch}/4_GAN/vae.ipynb | 0 {2_pytorch => 6_pytorch}/4_GAN/vae.py | 0 6_pytorch/5_NLP/README.md | 8 + .../PyTorch_quick_intro.ipynb | 0 {2_pytorch => 6_pytorch}/README.md | 0 .../imgs/Ipython-auto.png | Bin .../imgs/Ipython-help.png | Bin .../imgs/Jupyter主页面.png | Bin .../imgs/Notebook主界面.png | Bin .../imgs/autograd_Variable.png | Bin .../imgs/autograd_Variable.svg | 0 {2_pytorch => 6_pytorch}/imgs/del/img1.png | Bin {2_pytorch => 6_pytorch}/imgs/del/img2.png | Bin {2_pytorch => 6_pytorch}/imgs/install-1.png | Bin {2_pytorch => 6_pytorch}/imgs/install-2.png | Bin {2_pytorch => 6_pytorch}/imgs/nn_lenet.png | Bin README.md | 86 +- tips/InstallPython.md | 22 +- tips/images/dnn_tips_01.jpeg | Bin 0 -> 22371 bytes tips/images/dnn_tips_02.jpeg | Bin 0 -> 15676 bytes tips/images/dnn_tips_03.jpeg | Bin 0 -> 18863 bytes tips/images/dnn_tips_04.jpeg | Bin 0 -> 19867 bytes tips/images/dnn_tips_05.jpeg | Bin 0 -> 17230 bytes tips/images/dnn_tips_06.jpeg | Bin 0 -> 24483 bytes tips/images/dnn_tips_07.jpeg | Bin 0 -> 20158 bytes ...深度神经网络的一些实战建议.md | 103 ++ 199 files changed, 1076 insertions(+), 54 deletions(-) rename {0_numpy_matplotlib_scipy_sympy => 1_numpy_matplotlib_scipy_sympy}/README.md (100%) create mode 100644 1_numpy_matplotlib_scipy_sympy/bokeh_tutorial.ipynb rename {0_numpy_matplotlib_scipy_sympy => 1_numpy_matplotlib_scipy_sympy}/example.png (100%) rename {0_numpy_matplotlib_scipy_sympy => 1_numpy_matplotlib_scipy_sympy}/ipython_notebook.ipynb (100%) rename {0_numpy_matplotlib_scipy_sympy => 1_numpy_matplotlib_scipy_sympy}/matplotlib_ani.ipynb (100%) rename {0_numpy_matplotlib_scipy_sympy => 1_numpy_matplotlib_scipy_sympy}/matplotlib_ani.py (100%) rename {0_numpy_matplotlib_scipy_sympy => 1_numpy_matplotlib_scipy_sympy}/matplotlib_full.ipynb (100%) rename {0_numpy_matplotlib_scipy_sympy => 1_numpy_matplotlib_scipy_sympy}/matplotlib_simple_tutorial.ipynb (100%) rename {0_numpy_matplotlib_scipy_sympy => 1_numpy_matplotlib_scipy_sympy}/matplotlib_simple_tutorial.py (100%) rename {0_numpy_matplotlib_scipy_sympy => 1_numpy_matplotlib_scipy_sympy}/numpy_tutorial.ipynb (100%) rename {0_numpy_matplotlib_scipy_sympy => 1_numpy_matplotlib_scipy_sympy}/scipy_tutorial.ipynb (100%) rename {0_numpy_matplotlib_scipy_sympy => 1_numpy_matplotlib_scipy_sympy}/stockholm_td_adj.dat (100%) rename {0_numpy_matplotlib_scipy_sympy => 1_numpy_matplotlib_scipy_sympy}/sympy_tutorial.ipynb (100%) rename {0_numpy_matplotlib_scipy_sympy => 1_numpy_matplotlib_scipy_sympy}/utils_git.ipynb (100%) rename {0_numpy_matplotlib_scipy_sympy => 1_numpy_matplotlib_scipy_sympy}/utils_git_advanced.ipynb (100%) rename {0_numpy_matplotlib_scipy_sympy => 1_numpy_matplotlib_scipy_sympy}/utils_shell.ipynb (100%) rename {1_knn => 2_knn}/images/knn.png (100%) rename {1_knn => 2_knn}/knn_classification.ipynb (100%) rename {1_knn => 2_knn}/knn_classification.py (100%) rename {1_kmeans => 3_kmeans}/ClusteringAlgorithms.ipynb (100%) rename {1_kmeans => 3_kmeans}/ClusteringAlgorithms.py (100%) rename {1_kmeans => 3_kmeans}/README.md (100%) rename {1_kmeans => 3_kmeans}/download_iris.py (100%) rename {1_kmeans => 3_kmeans}/images/ARI_ct.png (100%) rename {1_kmeans => 3_kmeans}/images/ARI_define.png (100%) rename {1_kmeans => 3_kmeans}/images/data_0.png (100%) rename {1_kmeans => 3_kmeans}/images/data_1.png (100%) rename {1_kmeans => 3_kmeans}/images/data_2.png (100%) rename {1_kmeans => 3_kmeans}/iris.csv (100%) rename {1_kmeans => 3_kmeans}/k-means.ipynb (100%) rename {1_kmeans => 3_kmeans}/k-means.py (100%) rename {1_kmeans => 3_kmeans}/kmeans-color-vq.ipynb (100%) rename {1_logistic_regression => 4_logistic_regression}/Least_squares.ipynb (100%) rename {1_logistic_regression => 4_logistic_regression}/Least_squares.py (100%) rename {1_logistic_regression => 4_logistic_regression}/Logistic_regression.ipynb (100%) rename {1_logistic_regression => 4_logistic_regression}/Logistic_regression.py (100%) rename {1_logistic_regression => 4_logistic_regression}/PCA_and_Logistic_Regression.ipynb (100%) rename {1_logistic_regression => 4_logistic_regression}/PCA_and_Logistic_Regression.py (100%) rename {1_logistic_regression => 4_logistic_regression}/images/eq_logloss.png (100%) rename {1_logistic_regression => 4_logistic_regression}/images/eq_logloss_diff.png (100%) rename {1_logistic_regression => 4_logistic_regression}/images/eq_loss.png (100%) rename {1_logistic_regression => 4_logistic_regression}/images/fig1.gif (100%) rename {1_logistic_regression => 4_logistic_regression}/images/fig2.gif (100%) rename {1_logistic_regression => 4_logistic_regression}/images/fig3.gif (100%) rename {1_logistic_regression => 4_logistic_regression}/images/gd_stepsize.png (100%) rename {1_logistic_regression => 4_logistic_regression}/images/gradient_descent.png (100%) rename {1_nn => 5_nn}/Perceptron.ipynb (100%) rename {1_nn => 5_nn}/Perceptron.py (100%) rename {1_nn => 5_nn}/images/L_b.png (100%) rename {1_nn => 5_nn}/images/L_w.png (100%) rename {1_nn => 5_nn}/images/bp_loss.png (100%) rename {1_nn => 5_nn}/images/bp_weight_update.png (100%) rename {1_nn => 5_nn}/images/cross_entropy_loss.png (100%) rename {1_nn => 5_nn}/images/eqn_13_16.png (100%) rename {1_nn => 5_nn}/images/eqn_17_20.png (100%) rename {1_nn => 5_nn}/images/eqn_21_22.png (100%) rename {1_nn => 5_nn}/images/eqn_23_25.png (100%) rename {1_nn => 5_nn}/images/eqn_26.png (100%) rename {1_nn => 5_nn}/images/eqn_27_29.png (100%) rename {1_nn => 5_nn}/images/eqn_30_31.png (100%) rename {1_nn => 5_nn}/images/eqn_32_34.png (100%) rename {1_nn => 5_nn}/images/eqn_35_40.png (100%) rename {1_nn => 5_nn}/images/eqn_3_4.png (100%) rename {1_nn => 5_nn}/images/eqn_5_6.png (100%) rename {1_nn => 5_nn}/images/eqn_7_12.png (100%) rename {1_nn => 5_nn}/images/eqn_delta_hidden.png (100%) rename {1_nn => 5_nn}/images/eqn_delta_j.png (100%) rename {1_nn => 5_nn}/images/eqn_ed_net_j.png (100%) rename {1_nn => 5_nn}/images/eqn_hidden_units.png (100%) rename {1_nn => 5_nn}/images/eqn_matrix1.png (100%) rename {1_nn => 5_nn}/images/eqn_w41_update.png (100%) rename {1_nn => 5_nn}/images/eqn_w4b_update.png (100%) rename {1_nn => 5_nn}/images/eqn_w84_update.png (100%) rename {1_nn => 5_nn}/images/formular_2.png (100%) rename {1_nn => 5_nn}/images/formular_3.png (100%) rename {1_nn => 5_nn}/images/formular_4.png (100%) rename {1_nn => 5_nn}/images/formular_5.png (100%) rename {1_nn => 5_nn}/images/forumlar_delta4.png (100%) rename {1_nn => 5_nn}/images/forumlar_delta8.png (100%) rename {1_nn => 5_nn}/images/neuron.gif (100%) rename {1_nn => 5_nn}/images/neuron.png (100%) rename {1_nn => 5_nn}/images/nn1.jpeg (100%) rename {1_nn => 5_nn}/images/nn2.png (100%) rename {1_nn => 5_nn}/images/nn3.png (100%) rename {1_nn => 5_nn}/images/nn_parameters_demo.png (100%) rename {1_nn => 5_nn}/images/perceptron_2.PNG (100%) rename {1_nn => 5_nn}/images/perceptron_geometry_def.png (100%) rename {1_nn => 5_nn}/images/sigmod.jpg (100%) rename {1_nn => 5_nn}/images/sign.png (100%) rename {1_nn => 5_nn}/images/softmax.png (100%) rename {1_nn => 5_nn}/images/softmax_demo.png (100%) rename {1_nn => 5_nn}/images/softmax_neuron.png (100%) rename {1_nn => 5_nn}/images/softmax_neuron_output2_eqn.png (100%) rename {1_nn => 5_nn}/images/softmax_neuron_output_eqn.png (100%) rename {1_nn => 5_nn}/mlp_bp.ipynb (100%) rename {1_nn => 5_nn}/mlp_bp.py (100%) rename {1_nn => 5_nn}/note.txt (100%) rename {1_nn => 5_nn}/softmax_ce.ipynb (100%) rename {1_nn => 5_nn}/softmax_ce.py (100%) rename {2_pytorch => 6_pytorch}/0_basic/Tensor-and-Variable.ipynb (100%) rename {2_pytorch => 6_pytorch}/0_basic/autograd.ipynb (100%) rename {2_pytorch => 6_pytorch}/0_basic/autograd.py (100%) rename {2_pytorch => 6_pytorch}/0_basic/dynamic-graph.ipynb (100%) rename {2_pytorch => 6_pytorch}/0_basic/imgs/autograd_Variable.png (100%) rename {2_pytorch => 6_pytorch}/0_basic/imgs/autograd_Variable.svg (100%) rename {2_pytorch => 6_pytorch}/0_basic/imgs/com_graph.svg (100%) rename {2_pytorch => 6_pytorch}/0_basic/imgs/com_graph_backward.svg (100%) rename {2_pytorch => 6_pytorch}/0_basic/imgs/tensor_data_structure.svg (100%) rename {2_pytorch => 6_pytorch}/0_basic/ref_Autograd.ipynb (100%) rename {2_pytorch => 6_pytorch}/0_basic/ref_Tensor.ipynb (100%) rename {2_pytorch => 6_pytorch}/1_NN/bp.ipynb (100%) rename {2_pytorch => 6_pytorch}/1_NN/data.txt (100%) rename {2_pytorch => 6_pytorch}/1_NN/deep-nn.ipynb (100%) rename {2_pytorch => 6_pytorch}/1_NN/deep-nn.py (100%) rename {2_pytorch => 6_pytorch}/1_NN/imgs/ResNet.png (100%) rename {2_pytorch => 6_pytorch}/1_NN/imgs/lena.png (100%) rename {2_pytorch => 6_pytorch}/1_NN/imgs/lena3.png (100%) rename {2_pytorch => 6_pytorch}/1_NN/imgs/lena512.png (100%) rename {2_pytorch => 6_pytorch}/1_NN/imgs/multi_perceptron.png (100%) rename {2_pytorch => 6_pytorch}/1_NN/imgs/residual.png (100%) rename {2_pytorch => 6_pytorch}/1_NN/imgs/resnet1.png (100%) rename {2_pytorch => 6_pytorch}/1_NN/imgs/trans.bkp.PNG (100%) rename {2_pytorch => 6_pytorch}/1_NN/linear-regression-gradient-descend.ipynb (100%) rename {2_pytorch => 6_pytorch}/1_NN/linear-regression-gradient-descend.py (100%) rename {2_pytorch => 6_pytorch}/1_NN/logistic-regression.ipynb (100%) rename {2_pytorch => 6_pytorch}/1_NN/logistic-regression.py (100%) rename {2_pytorch => 6_pytorch}/1_NN/nn-sequential-module.ipynb (100%) rename {2_pytorch => 6_pytorch}/1_NN/nn_summary.ipynb (100%) rename {2_pytorch => 6_pytorch}/1_NN/optimizer/adadelta.ipynb (100%) rename {2_pytorch => 6_pytorch}/1_NN/optimizer/adadelta.py (100%) rename {2_pytorch => 6_pytorch}/1_NN/optimizer/adagrad.ipynb (99%) rename {2_pytorch => 6_pytorch}/1_NN/optimizer/adam.ipynb (100%) rename {2_pytorch => 6_pytorch}/1_NN/optimizer/adam.py (100%) rename {2_pytorch => 6_pytorch}/1_NN/optimizer/momentum.ipynb (100%) rename {2_pytorch => 6_pytorch}/1_NN/optimizer/momentum.py (100%) rename {2_pytorch => 6_pytorch}/1_NN/optimizer/rmsprop.ipynb (100%) rename {2_pytorch => 6_pytorch}/1_NN/optimizer/rmsprop.py (100%) rename {2_pytorch => 6_pytorch}/1_NN/optimizer/sgd.ipynb (100%) rename {2_pytorch => 6_pytorch}/1_NN/optimizer/sgd.py (100%) rename {2_pytorch => 6_pytorch}/1_NN/param_initialize.ipynb (100%) rename {2_pytorch => 6_pytorch}/2_CNN/basic_conv.ipynb (100%) rename {2_pytorch => 6_pytorch}/2_CNN/basic_conv.py (100%) rename {2_pytorch => 6_pytorch}/2_CNN/batch-normalization.ipynb (100%) rename {2_pytorch => 6_pytorch}/2_CNN/batch-normalization.py (100%) rename {2_pytorch => 6_pytorch}/2_CNN/cat.png (100%) rename {2_pytorch => 6_pytorch}/2_CNN/data-augumentation.ipynb (100%) rename {2_pytorch => 6_pytorch}/2_CNN/data-augumentation.py (100%) rename {2_pytorch => 6_pytorch}/2_CNN/densenet.ipynb (100%) rename {2_pytorch => 6_pytorch}/2_CNN/densenet.py (100%) rename {2_pytorch => 6_pytorch}/2_CNN/googlenet.ipynb (100%) rename {2_pytorch => 6_pytorch}/2_CNN/googlenet.py (100%) rename {2_pytorch => 6_pytorch}/2_CNN/lr-decay.ipynb (100%) rename {2_pytorch => 6_pytorch}/2_CNN/lr-decay.py (100%) rename {2_pytorch => 6_pytorch}/2_CNN/regularization.ipynb (100%) rename {2_pytorch => 6_pytorch}/2_CNN/regularization.py (100%) rename {2_pytorch => 6_pytorch}/2_CNN/resnet.ipynb (100%) rename {2_pytorch => 6_pytorch}/2_CNN/resnet.py (100%) rename {2_pytorch => 6_pytorch}/2_CNN/utils.py (100%) rename {2_pytorch => 6_pytorch}/2_CNN/vgg.ipynb (100%) rename {2_pytorch => 6_pytorch}/2_CNN/vgg.py (100%) rename {2_pytorch => 6_pytorch}/3_RNN/nlp/n-gram.ipynb (100%) rename {2_pytorch => 6_pytorch}/3_RNN/nlp/seq-lstm.ipynb (100%) rename {2_pytorch => 6_pytorch}/3_RNN/nlp/word-embedding.ipynb (100%) rename {2_pytorch => 6_pytorch}/3_RNN/pytorch-rnn.ipynb (100%) rename {2_pytorch => 6_pytorch}/3_RNN/rnn-for-image.ipynb (100%) rename {2_pytorch => 6_pytorch}/3_RNN/time-series/data.csv (100%) rename {2_pytorch => 6_pytorch}/3_RNN/time-series/lstm-time-series.ipynb (100%) rename {2_pytorch => 6_pytorch}/3_RNN/time-series/lstm-time-series.py (100%) rename {2_pytorch => 6_pytorch}/3_RNN/utils.py (100%) rename {2_pytorch => 6_pytorch}/4_GAN/autoencoder.ipynb (100%) rename {2_pytorch => 6_pytorch}/4_GAN/autoencoder.py (100%) rename {2_pytorch => 6_pytorch}/4_GAN/gan.ipynb (100%) rename {2_pytorch => 6_pytorch}/4_GAN/gan.py (100%) rename {2_pytorch => 6_pytorch}/4_GAN/vae.ipynb (100%) rename {2_pytorch => 6_pytorch}/4_GAN/vae.py (100%) create mode 100644 6_pytorch/5_NLP/README.md rename {2_pytorch => 6_pytorch}/PyTorch_quick_intro.ipynb (100%) rename {2_pytorch => 6_pytorch}/README.md (100%) rename {2_pytorch => 6_pytorch}/imgs/Ipython-auto.png (100%) rename {2_pytorch => 6_pytorch}/imgs/Ipython-help.png (100%) rename {2_pytorch => 6_pytorch}/imgs/Jupyter主页面.png (100%) rename {2_pytorch => 6_pytorch}/imgs/Notebook主界面.png (100%) rename {2_pytorch => 6_pytorch}/imgs/autograd_Variable.png (100%) rename {2_pytorch => 6_pytorch}/imgs/autograd_Variable.svg (100%) rename {2_pytorch => 6_pytorch}/imgs/del/img1.png (100%) rename {2_pytorch => 6_pytorch}/imgs/del/img2.png (100%) rename {2_pytorch => 6_pytorch}/imgs/install-1.png (100%) rename {2_pytorch => 6_pytorch}/imgs/install-2.png (100%) rename {2_pytorch => 6_pytorch}/imgs/nn_lenet.png (100%) create mode 100644 tips/images/dnn_tips_01.jpeg create mode 100644 tips/images/dnn_tips_02.jpeg create mode 100644 tips/images/dnn_tips_03.jpeg create mode 100644 tips/images/dnn_tips_04.jpeg create mode 100644 tips/images/dnn_tips_05.jpeg create mode 100644 tips/images/dnn_tips_06.jpeg create mode 100644 tips/images/dnn_tips_07.jpeg create mode 100644 tips/构建深度神经网络的一些实战建议.md diff --git a/0_numpy_matplotlib_scipy_sympy/README.md b/1_numpy_matplotlib_scipy_sympy/README.md similarity index 100% rename from 0_numpy_matplotlib_scipy_sympy/README.md rename to 1_numpy_matplotlib_scipy_sympy/README.md diff --git a/1_numpy_matplotlib_scipy_sympy/bokeh_tutorial.ipynb b/1_numpy_matplotlib_scipy_sympy/bokeh_tutorial.ipynb new file mode 100644 index 0000000..00fd6b4 --- /dev/null +++ b/1_numpy_matplotlib_scipy_sympy/bokeh_tutorial.ipynb @@ -0,0 +1,893 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "\n", + "
\n", + "\n", + "# Bokeh 5-minute Overview\n", + "\n", + "Bokeh is a Python interactive visualization library that targets modern web browsers for presentation. Its goal is to provide elegant, concise construction of novel graphics in the style of D3.js, and to extend this capability with high-performance interactivity over very large or streaming datasets. Bokeh can help anyone who would like to quickly and easily create interactive plots, dashboards, and data applications." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Simple Example\n", + "\n", + "Here is a simple first example. First we'll import the [`figure`](https://bokeh.pydata.org/en/latest/docs/reference/plotting.html#bokeh.plotting.figure.figure) function from [`bokeh.plotting`](https://bokeh.pydata.org/en/latest/docs/user_guide/plotting.html), which will let us create all sorts of interesting plots easily. We also import the `show` and `ouptut_notebook` functions from `bokeh.io` — these let us display our results inline in the notebook." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "from bokeh.plotting import figure \n", + "from bokeh.io import output_notebook, show" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Next, we'll tell Bokeh to display its plots directly into the notebook.\n", + "This will cause all of the Javascript and data to be embedded directly\n", + "into the HTML of the notebook itself.\n", + "(Bokeh can output straight to HTML files, or use a server, which we'll\n", + "look at later.)" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "
\n", + " \n", + " Loading BokehJS ...\n", + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/javascript": [ + "\n", + "(function(root) {\n", + " function now() {\n", + " return new Date();\n", + " }\n", + "\n", + " var force = true;\n", + "\n", + " if (typeof (root._bokeh_onload_callbacks) === \"undefined\" || force === true) {\n", + " root._bokeh_onload_callbacks = [];\n", + " root._bokeh_is_loading = undefined;\n", + " }\n", + "\n", + " var JS_MIME_TYPE = 'application/javascript';\n", + " var HTML_MIME_TYPE = 'text/html';\n", + " var EXEC_MIME_TYPE = 'application/vnd.bokehjs_exec.v0+json';\n", + " var CLASS_NAME = 'output_bokeh rendered_html';\n", + "\n", + " /**\n", + " * Render data to the DOM node\n", + " */\n", + " function render(props, node) {\n", + " var script = document.createElement(\"script\");\n", + " node.appendChild(script);\n", + " }\n", + "\n", + " /**\n", + " * Handle when an output is cleared or removed\n", + " */\n", + " function handleClearOutput(event, handle) {\n", + " var cell = handle.cell;\n", + "\n", + " var id = cell.output_area._bokeh_element_id;\n", + " var server_id = cell.output_area._bokeh_server_id;\n", + " // Clean up Bokeh references\n", + " if (id != null && id in Bokeh.index) {\n", + " Bokeh.index[id].model.document.clear();\n", + " delete Bokeh.index[id];\n", + " }\n", + "\n", + " if (server_id !== undefined) {\n", + " // Clean up Bokeh references\n", + " var cmd = \"from bokeh.io.state import curstate; print(curstate().uuid_to_server['\" + server_id + \"'].get_sessions()[0].document.roots[0]._id)\";\n", + " cell.notebook.kernel.execute(cmd, {\n", + " iopub: {\n", + " output: function(msg) {\n", + " var id = msg.content.text.trim();\n", + " if (id in Bokeh.index) {\n", + " Bokeh.index[id].model.document.clear();\n", + " delete Bokeh.index[id];\n", + " }\n", + " }\n", + " }\n", + " });\n", + " // Destroy server and session\n", + " var cmd = \"import bokeh.io.notebook as ion; ion.destroy_server('\" + server_id + \"')\";\n", + " cell.notebook.kernel.execute(cmd);\n", + " }\n", + " }\n", + "\n", + " /**\n", + " * Handle when a new output is added\n", + " */\n", + " function handleAddOutput(event, handle) {\n", + " var output_area = handle.output_area;\n", + " var output = handle.output;\n", + "\n", + " // limit handleAddOutput to display_data with EXEC_MIME_TYPE content only\n", + " if ((output.output_type != \"display_data\") || (!output.data.hasOwnProperty(EXEC_MIME_TYPE))) {\n", + " return\n", + " }\n", + "\n", + " var toinsert = output_area.element.find(\".\" + CLASS_NAME.split(' ')[0]);\n", + "\n", + " if (output.metadata[EXEC_MIME_TYPE][\"id\"] !== undefined) {\n", + " toinsert[toinsert.length - 1].firstChild.textContent = output.data[JS_MIME_TYPE];\n", + " // store reference to embed id on output_area\n", + " output_area._bokeh_element_id = output.metadata[EXEC_MIME_TYPE][\"id\"];\n", + " }\n", + " if (output.metadata[EXEC_MIME_TYPE][\"server_id\"] !== undefined) {\n", + " var bk_div = document.createElement(\"div\");\n", + " bk_div.innerHTML = output.data[HTML_MIME_TYPE];\n", + " var script_attrs = bk_div.children[0].attributes;\n", + " for (var i = 0; i < script_attrs.length; i++) {\n", + " toinsert[toinsert.length - 1].firstChild.setAttribute(script_attrs[i].name, script_attrs[i].value);\n", + " }\n", + " // store reference to server id on output_area\n", + " output_area._bokeh_server_id = output.metadata[EXEC_MIME_TYPE][\"server_id\"];\n", + " }\n", + " }\n", + "\n", + " function register_renderer(events, OutputArea) {\n", + "\n", + " function append_mime(data, metadata, element) {\n", + " // create a DOM node to render to\n", + " var toinsert = this.create_output_subarea(\n", + " metadata,\n", + " CLASS_NAME,\n", + " EXEC_MIME_TYPE\n", + " );\n", + " this.keyboard_manager.register_events(toinsert);\n", + " // Render to node\n", + " var props = {data: data, metadata: metadata[EXEC_MIME_TYPE]};\n", + " render(props, toinsert[toinsert.length - 1]);\n", + " element.append(toinsert);\n", + " return toinsert\n", + " }\n", + "\n", + " /* Handle when an output is cleared or removed */\n", + " events.on('clear_output.CodeCell', handleClearOutput);\n", + " events.on('delete.Cell', handleClearOutput);\n", + "\n", + " /* Handle when a new output is added */\n", + " events.on('output_added.OutputArea', handleAddOutput);\n", + "\n", + " /**\n", + " * Register the mime type and append_mime function with output_area\n", + " */\n", + " OutputArea.prototype.register_mime_type(EXEC_MIME_TYPE, append_mime, {\n", + " /* Is output safe? */\n", + " safe: true,\n", + " /* Index of renderer in `output_area.display_order` */\n", + " index: 0\n", + " });\n", + " }\n", + "\n", + " // register the mime type if in Jupyter Notebook environment and previously unregistered\n", + " if (root.Jupyter !== undefined) {\n", + " var events = require('base/js/events');\n", + " var OutputArea = require('notebook/js/outputarea').OutputArea;\n", + "\n", + " if (OutputArea.prototype.mime_types().indexOf(EXEC_MIME_TYPE) == -1) {\n", + " register_renderer(events, OutputArea);\n", + " }\n", + " }\n", + "\n", + " \n", + " if (typeof (root._bokeh_timeout) === \"undefined\" || force === true) {\n", + " root._bokeh_timeout = Date.now() + 5000;\n", + " root._bokeh_failed_load = false;\n", + " }\n", + "\n", + " var NB_LOAD_WARNING = {'data': {'text/html':\n", + " \"
\\n\"+\n", + " \"

\\n\"+\n", + " \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n", + " \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n", + " \"

\\n\"+\n", + " \"\\n\"+\n", + " \"\\n\"+\n", + " \"from bokeh.resources import INLINE\\n\"+\n", + " \"output_notebook(resources=INLINE)\\n\"+\n", + " \"\\n\"+\n", + " \"
\"}};\n", + "\n", + " function display_loaded() {\n", + " var el = document.getElementById(\"8cd0437f-c78b-4d3f-afb8-1b008f84052d\");\n", + " if (el != null) {\n", + " el.textContent = \"BokehJS is loading...\";\n", + " }\n", + " if (root.Bokeh !== undefined) {\n", + " if (el != null) {\n", + " el.textContent = \"BokehJS \" + root.Bokeh.version + \" successfully loaded.\";\n", + " }\n", + " } else if (Date.now() < root._bokeh_timeout) {\n", + " setTimeout(display_loaded, 100)\n", + " }\n", + " }\n", + "\n", + "\n", + " function run_callbacks() {\n", + " try {\n", + " root._bokeh_onload_callbacks.forEach(function(callback) { callback() });\n", + " }\n", + " finally {\n", + " delete root._bokeh_onload_callbacks\n", + " }\n", + " console.info(\"Bokeh: all callbacks have finished\");\n", + " }\n", + "\n", + " function load_libs(js_urls, callback) {\n", + " root._bokeh_onload_callbacks.push(callback);\n", + " if (root._bokeh_is_loading > 0) {\n", + " console.log(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n", + " return null;\n", + " }\n", + " if (js_urls == null || js_urls.length === 0) {\n", + " run_callbacks();\n", + " return null;\n", + " }\n", + " console.log(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n", + " root._bokeh_is_loading = js_urls.length;\n", + " for (var i = 0; i < js_urls.length; i++) {\n", + " var url = js_urls[i];\n", + " var s = document.createElement('script');\n", + " s.src = url;\n", + " s.async = false;\n", + " s.onreadystatechange = s.onload = function() {\n", + " root._bokeh_is_loading--;\n", + " if (root._bokeh_is_loading === 0) {\n", + " console.log(\"Bokeh: all BokehJS libraries loaded\");\n", + " run_callbacks()\n", + " }\n", + " };\n", + " s.onerror = function() {\n", + " console.warn(\"failed to load library \" + url);\n", + " };\n", + " console.log(\"Bokeh: injecting script tag for BokehJS library: \", url);\n", + " document.getElementsByTagName(\"head\")[0].appendChild(s);\n", + " }\n", + " };var element = document.getElementById(\"8cd0437f-c78b-4d3f-afb8-1b008f84052d\");\n", + " if (element == null) {\n", + " console.log(\"Bokeh: ERROR: autoload.js configured with elementid '8cd0437f-c78b-4d3f-afb8-1b008f84052d' but no matching script tag was found. \")\n", + " return false;\n", + " }\n", + "\n", + " var js_urls = [\"https://cdn.pydata.org/bokeh/release/bokeh-0.13.0.min.js\", \"https://cdn.pydata.org/bokeh/release/bokeh-widgets-0.13.0.min.js\", \"https://cdn.pydata.org/bokeh/release/bokeh-tables-0.13.0.min.js\", \"https://cdn.pydata.org/bokeh/release/bokeh-gl-0.13.0.min.js\"];\n", + "\n", + " var inline_js = [\n", + " function(Bokeh) {\n", + " Bokeh.set_log_level(\"info\");\n", + " },\n", + " \n", + " function(Bokeh) {\n", + " \n", + " },\n", + " function(Bokeh) {\n", + " console.log(\"Bokeh: injecting CSS: https://cdn.pydata.org/bokeh/release/bokeh-0.13.0.min.css\");\n", + " Bokeh.embed.inject_css(\"https://cdn.pydata.org/bokeh/release/bokeh-0.13.0.min.css\");\n", + " console.log(\"Bokeh: injecting CSS: https://cdn.pydata.org/bokeh/release/bokeh-widgets-0.13.0.min.css\");\n", + " Bokeh.embed.inject_css(\"https://cdn.pydata.org/bokeh/release/bokeh-widgets-0.13.0.min.css\");\n", + " console.log(\"Bokeh: injecting CSS: https://cdn.pydata.org/bokeh/release/bokeh-tables-0.13.0.min.css\");\n", + " Bokeh.embed.inject_css(\"https://cdn.pydata.org/bokeh/release/bokeh-tables-0.13.0.min.css\");\n", + " }\n", + " ];\n", + "\n", + " function run_inline_js() {\n", + " \n", + " if ((root.Bokeh !== undefined) || (force === true)) {\n", + " for (var i = 0; i < inline_js.length; i++) {\n", + " inline_js[i].call(root, root.Bokeh);\n", + " }if (force === true) {\n", + " display_loaded();\n", + " }} else if (Date.now() < root._bokeh_timeout) {\n", + " setTimeout(run_inline_js, 100);\n", + " } else if (!root._bokeh_failed_load) {\n", + " console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n", + " root._bokeh_failed_load = true;\n", + " } else if (force !== true) {\n", + " var cell = $(document.getElementById(\"8cd0437f-c78b-4d3f-afb8-1b008f84052d\")).parents('.cell').data().cell;\n", + " cell.output_area.append_execute_result(NB_LOAD_WARNING)\n", + " }\n", + "\n", + " }\n", + "\n", + " if (root._bokeh_is_loading === 0) {\n", + " console.log(\"Bokeh: BokehJS loaded, going straight to plotting\");\n", + " run_inline_js();\n", + " } else {\n", + " load_libs(js_urls, function() {\n", + " console.log(\"Bokeh: BokehJS plotting callback run at\", now());\n", + " run_inline_js();\n", + " });\n", + " }\n", + "}(window));" + ], + "application/vnd.bokehjs_load.v0+json": "\n(function(root) {\n function now() {\n return new Date();\n }\n\n var force = true;\n\n if (typeof (root._bokeh_onload_callbacks) === \"undefined\" || force === true) {\n root._bokeh_onload_callbacks = [];\n root._bokeh_is_loading = undefined;\n }\n\n \n\n \n if (typeof (root._bokeh_timeout) === \"undefined\" || force === true) {\n root._bokeh_timeout = Date.now() + 5000;\n root._bokeh_failed_load = false;\n }\n\n var NB_LOAD_WARNING = {'data': {'text/html':\n \"
\\n\"+\n \"

\\n\"+\n \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n \"

\\n\"+\n \"\\n\"+\n \"\\n\"+\n \"from bokeh.resources import INLINE\\n\"+\n \"output_notebook(resources=INLINE)\\n\"+\n \"\\n\"+\n \"
\"}};\n\n function display_loaded() {\n var el = document.getElementById(\"8cd0437f-c78b-4d3f-afb8-1b008f84052d\");\n if (el != null) {\n el.textContent = \"BokehJS is loading...\";\n }\n if (root.Bokeh !== undefined) {\n if (el != null) {\n el.textContent = \"BokehJS \" + root.Bokeh.version + \" successfully loaded.\";\n }\n } else if (Date.now() < root._bokeh_timeout) {\n setTimeout(display_loaded, 100)\n }\n }\n\n\n function run_callbacks() {\n try {\n root._bokeh_onload_callbacks.forEach(function(callback) { callback() });\n }\n finally {\n delete root._bokeh_onload_callbacks\n }\n console.info(\"Bokeh: all callbacks have finished\");\n }\n\n function load_libs(js_urls, callback) {\n root._bokeh_onload_callbacks.push(callback);\n if (root._bokeh_is_loading > 0) {\n console.log(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n return null;\n }\n if (js_urls == null || js_urls.length === 0) {\n run_callbacks();\n return null;\n }\n console.log(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n root._bokeh_is_loading = js_urls.length;\n for (var i = 0; i < js_urls.length; i++) {\n var url = js_urls[i];\n var s = document.createElement('script');\n s.src = url;\n s.async = false;\n s.onreadystatechange = s.onload = function() {\n root._bokeh_is_loading--;\n if (root._bokeh_is_loading === 0) {\n console.log(\"Bokeh: all BokehJS libraries loaded\");\n run_callbacks()\n }\n };\n s.onerror = function() {\n console.warn(\"failed to load library \" + url);\n };\n console.log(\"Bokeh: injecting script tag for BokehJS library: \", url);\n document.getElementsByTagName(\"head\")[0].appendChild(s);\n }\n };var element = document.getElementById(\"8cd0437f-c78b-4d3f-afb8-1b008f84052d\");\n if (element == null) {\n console.log(\"Bokeh: ERROR: autoload.js configured with elementid '8cd0437f-c78b-4d3f-afb8-1b008f84052d' but no matching script tag was found. \")\n return false;\n }\n\n var js_urls = [\"https://cdn.pydata.org/bokeh/release/bokeh-0.13.0.min.js\", \"https://cdn.pydata.org/bokeh/release/bokeh-widgets-0.13.0.min.js\", \"https://cdn.pydata.org/bokeh/release/bokeh-tables-0.13.0.min.js\", \"https://cdn.pydata.org/bokeh/release/bokeh-gl-0.13.0.min.js\"];\n\n var inline_js = [\n function(Bokeh) {\n Bokeh.set_log_level(\"info\");\n },\n \n function(Bokeh) {\n \n },\n function(Bokeh) {\n console.log(\"Bokeh: injecting CSS: https://cdn.pydata.org/bokeh/release/bokeh-0.13.0.min.css\");\n Bokeh.embed.inject_css(\"https://cdn.pydata.org/bokeh/release/bokeh-0.13.0.min.css\");\n console.log(\"Bokeh: injecting CSS: https://cdn.pydata.org/bokeh/release/bokeh-widgets-0.13.0.min.css\");\n Bokeh.embed.inject_css(\"https://cdn.pydata.org/bokeh/release/bokeh-widgets-0.13.0.min.css\");\n console.log(\"Bokeh: injecting CSS: https://cdn.pydata.org/bokeh/release/bokeh-tables-0.13.0.min.css\");\n Bokeh.embed.inject_css(\"https://cdn.pydata.org/bokeh/release/bokeh-tables-0.13.0.min.css\");\n }\n ];\n\n function run_inline_js() {\n \n if ((root.Bokeh !== undefined) || (force === true)) {\n for (var i = 0; i < inline_js.length; i++) {\n inline_js[i].call(root, root.Bokeh);\n }if (force === true) {\n display_loaded();\n }} else if (Date.now() < root._bokeh_timeout) {\n setTimeout(run_inline_js, 100);\n } else if (!root._bokeh_failed_load) {\n console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n root._bokeh_failed_load = true;\n } else if (force !== true) {\n var cell = $(document.getElementById(\"8cd0437f-c78b-4d3f-afb8-1b008f84052d\")).parents('.cell').data().cell;\n cell.output_area.append_execute_result(NB_LOAD_WARNING)\n }\n\n }\n\n if (root._bokeh_is_loading === 0) {\n console.log(\"Bokeh: BokehJS loaded, going straight to plotting\");\n run_inline_js();\n } else {\n load_libs(js_urls, function() {\n console.log(\"Bokeh: BokehJS plotting callback run at\", now());\n run_inline_js();\n });\n }\n}(window));" + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "output_notebook()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Next, we'll import NumPy and create some simple data." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "from numpy import cos, linspace\n", + "x = linspace(-6, 6, 100)\n", + "y = cos(x)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we'll call Bokeh's `figure` functtion to create a plot `p`. Then we call the `circle()` method of the plot to render a red circle at each of the points in x and y.\n", + "\n", + "We can immediately interact with the plot:\n", + "\n", + " * click-drag will pan the plot around.\n", + " * mousewheel will zoom in and out (after enabling in the toolbar)\n", + " \n", + "The toolbar below is the default one that is available for all plots. It can be configured further via the `tools` keyword argument." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/javascript": [ + "(function(root) {\n", + " function embed_document(root) {\n", + " \n", + " var docs_json = {\"aeec4543-46cd-4f87-acc1-ea2ed28b7ada\":{\"roots\":{\"references\":[{\"attributes\":{},\"id\":\"19a960da-3ecb-49d2-8914-05175c249c33\",\"type\":\"SaveTool\"},{\"attributes\":{\"callback\":null},\"id\":\"998a2381-ee7b-46a7-b853-09d40d089995\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"53392765-3d99-45d9-97d1-140fc6c5753f\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_inspect\":\"auto\",\"active_multi\":null,\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"6c55e725-22bb-438e-962c-a0db2ba7d35f\",\"type\":\"PanTool\"},{\"id\":\"f4c3e2cd-6db9-4969-a779-0bda76a138fa\",\"type\":\"WheelZoomTool\"},{\"id\":\"0fd28e7e-70b7-4324-91df-daac982d3e89\",\"type\":\"BoxZoomTool\"},{\"id\":\"19a960da-3ecb-49d2-8914-05175c249c33\",\"type\":\"SaveTool\"},{\"id\":\"6f3ae219-e17f-4090-bc5f-58f57871982b\",\"type\":\"ResetTool\"},{\"id\":\"ac9ec22e-099e-4580-a1f4-acf92de985e2\",\"type\":\"HelpTool\"}]},\"id\":\"53571765-f31b-4722-ac3d-640d3112b764\",\"type\":\"Toolbar\"},{\"attributes\":{\"dimension\":1,\"plot\":{\"id\":\"b11d1b46-0b08-44c8-bb16-8304513e3d15\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"abcd0a1b-9994-4fed-9ea3-4de28a6854db\",\"type\":\"BasicTicker\"}},\"id\":\"b2505cf9-c6de-47f2-977e-2c2517af633c\",\"type\":\"Grid\"},{\"attributes\":{\"plot\":null,\"text\":\"\"},\"id\":\"c8374353-3064-42eb-b0f9-1f316dcf5dd9\",\"type\":\"Title\"},{\"attributes\":{},\"id\":\"6f3ae219-e17f-4090-bc5f-58f57871982b\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"c5a3f469-ba65-4d45-958a-37fdb58305cc\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"callback\":null},\"id\":\"79fb852e-118b-4e78-a208-3f774ed8dcc6\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"6c55e725-22bb-438e-962c-a0db2ba7d35f\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"cc7498d8-81ed-4e36-a3bc-2d259b9571a4\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"874619d4-301d-4963-96a5-84de42cdf4da\",\"type\":\"LinearScale\"},{\"attributes\":{\"plot\":{\"id\":\"b11d1b46-0b08-44c8-bb16-8304513e3d15\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"57c20150-54f5-4d18-8aa3-c2eae2efad00\",\"type\":\"BasicTicker\"}},\"id\":\"b526a813-5c7d-4fbf-a459-1ed59fcd7c69\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"f4c3e2cd-6db9-4969-a779-0bda76a138fa\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"formatter\":{\"id\":\"53392765-3d99-45d9-97d1-140fc6c5753f\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"b11d1b46-0b08-44c8-bb16-8304513e3d15\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"57c20150-54f5-4d18-8aa3-c2eae2efad00\",\"type\":\"BasicTicker\"}},\"id\":\"6d2d1f76-0b1f-4c09-8091-c8f58da65e88\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"ac9ec22e-099e-4580-a1f4-acf92de985e2\",\"type\":\"HelpTool\"},{\"attributes\":{\"below\":[{\"id\":\"6d2d1f76-0b1f-4c09-8091-c8f58da65e88\",\"type\":\"LinearAxis\"}],\"left\":[{\"id\":\"78750af8-5fe4-4cd7-b68b-4b31ae1ceb65\",\"type\":\"LinearAxis\"}],\"plot_height\":500,\"plot_width\":500,\"renderers\":[{\"id\":\"6d2d1f76-0b1f-4c09-8091-c8f58da65e88\",\"type\":\"LinearAxis\"},{\"id\":\"b526a813-5c7d-4fbf-a459-1ed59fcd7c69\",\"type\":\"Grid\"},{\"id\":\"78750af8-5fe4-4cd7-b68b-4b31ae1ceb65\",\"type\":\"LinearAxis\"},{\"id\":\"b2505cf9-c6de-47f2-977e-2c2517af633c\",\"type\":\"Grid\"},{\"id\":\"1d120b68-24b8-4860-9bfc-f1afaa2022bd\",\"type\":\"BoxAnnotation\"},{\"id\":\"3a34f9aa-3e96-4184-9572-c1d9738fd25b\",\"type\":\"GlyphRenderer\"}],\"title\":{\"id\":\"c8374353-3064-42eb-b0f9-1f316dcf5dd9\",\"type\":\"Title\"},\"toolbar\":{\"id\":\"53571765-f31b-4722-ac3d-640d3112b764\",\"type\":\"Toolbar\"},\"x_range\":{\"id\":\"998a2381-ee7b-46a7-b853-09d40d089995\",\"type\":\"DataRange1d\"},\"x_scale\":{\"id\":\"8fe96ad8-d60d-4a19-ac19-122ea130038d\",\"type\":\"LinearScale\"},\"y_range\":{\"id\":\"79fb852e-118b-4e78-a208-3f774ed8dcc6\",\"type\":\"DataRange1d\"},\"y_scale\":{\"id\":\"874619d4-301d-4963-96a5-84de42cdf4da\",\"type\":\"LinearScale\"}},\"id\":\"b11d1b46-0b08-44c8-bb16-8304513e3d15\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.5},\"fill_color\":{\"value\":\"firebrick\"},\"line_alpha\":{\"value\":0.5},\"line_color\":{\"value\":\"firebrick\"},\"size\":{\"units\":\"screen\",\"value\":7},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"8cc9453d-fde9-4ab3-8464-0806c9be544d\",\"type\":\"Circle\"},{\"attributes\":{},\"id\":\"abcd0a1b-9994-4fed-9ea3-4de28a6854db\",\"type\":\"BasicTicker\"},{\"attributes\":{\"source\":{\"id\":\"911af4b9-51ba-45de-89ad-8cf208411bb5\",\"type\":\"ColumnDataSource\"}},\"id\":\"7f0c4e1d-90fb-4029-b77a-b4600ebea1de\",\"type\":\"CDSView\"},{\"attributes\":{\"overlay\":{\"id\":\"1d120b68-24b8-4860-9bfc-f1afaa2022bd\",\"type\":\"BoxAnnotation\"}},\"id\":\"0fd28e7e-70b7-4324-91df-daac982d3e89\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"callback\":null,\"data\":{\"x\":{\"__ndarray__\":\"AAAAAAAAGMCEDz744IMXwAgffPDBBxfAjC666KKLFsAQPvjggw8WwJNNNtlkkxXAF1100UUXFcCbbLLJJpsUwB988MEHHxTAo4suuuiiE8Anm2yyySYTwKqqqqqqqhLALrrooosuEsCyySabbLIRwDbZZJNNNhHAuuiiiy66EMA++OCDDz4QwIQPPvjggw/AjC666KKLDsCTTTbZZJMNwJtssskmmwzAo4suuuiiC8CqqqqqqqoKwLLJJptssgnAuuiiiy66CMDCBx988MEHwMomm2yyyQbA0UUXXXTRBcDZZJNNNtkEwOGDDz744APA6KKLLrroAsDwwQcffPABwPjggw8++ADAAAAAAAAAAMAQPvjggw/+vyB88MEHH/y/MLrooosu+r88+OCDDz74v0w22WSTTfa/XHTRRRdd9L9ssskmm2zyv3zwwQcffPC/GF100UUX7b842WSTTTbpv1BVVVVVVeW/cNFFF1104b8gm2yyySbbv2CTTTbZZNO/QBdddNFFx78AH3zwwQevvwAffPDBB68/QBdddNFFxz9gk0022WTTPzCbbLLJJts/eNFFF1104T9YVVVVVVXlPzjZZJNNNuk/GF100UUX7T988MEHH3zwP2yyySabbPI/YHTRRRdd9D9QNtlkk032P0D44IMPPvg/MLrooosu+j8gfPDBBx/8PxA++OCDD/4/AAAAAAAAAED44IMPPvgAQPDBBx988AFA6KKLLrroAkDggw8++OADQNhkk0022QRA0EUXXXTRBUDMJptssskGQMQHH3zwwQdAvOiiiy66CEC0ySabbLIJQKyqqqqqqgpApIsuuuiiC0CcbLLJJpsMQJRNNtlkkw1AjC666KKLDkCEDz744IMPQD744IMPPhBAuuiiiy66EEA22WSTTTYRQLLJJptsshFALrrooosuEkCsqqqqqqoSQCibbLLJJhNApIsuuuiiE0AgfPDBBx8UQJxssskmmxRAGF100UUXFUCUTTbZZJMVQBA++OCDDxZAjC666KKLFkAIH3zwwQcXQIQPPvjggxdAAAAAAAAAGEA=\",\"dtype\":\"float64\",\"shape\":[100]},\"y\":{\"__ndarray__\":\"9SJ4Cbe57j8JY+r+OmvtP60Tvck6rus/WLzTHz6J6T/x0bJaUwTnP6I1+zPxKOQ/oScYONMB4T8ZPFzpojXbP8HygfRnAdQ/fGjcYAsEyT8z6888mk6zP+5YV8fTZqe/pYFip7xExb9PFf407y/Svy7Wz2Mtedm/GSzA6Fwx4L8zrWZ2Tmnjv1uZMxdUWOa/yEpIeGjz6L+BKUaewTDrv4rmZKv1B+2/pq/Cehpy7r9tKDKa32nvv7My8UCi6++/lWFJ+Hr1779ggMrCRIfvv13mP6edou6//JJWneBK7b/O+cbyGIXrv36TXFjvV+m/wpQK3pDL5r8HDQc8kOnjv6yITtzBvOC/BXJTVyai2r/ACBWWu2bTv4h0TibdxMe/sSQZ5fDFsL8tuK+mtnmsP79vCY4VhcY//tyFCJLL0j9AaSfs/Q3aPzoevIFEd+A/HBvGyK6p4z+ZiDpMO5LmPxkpbAr9Jek/+alUikVb6z85RlM6ySntP8nZq5m+iu4/fMS1t/d47z+hS/Ko9fDvP6FL8qj18O8/fMS1t/d47z/J2auZvoruPzZGUzrJKe0/9KlUikVb6z8UKWwK/SXpP5mIOkw7kuY/HBvGyK6p4z86HryBRHfgP0BpJ+z9Ddo/79yFCJLL0j+fbwmOFYXGP623r6a2eaw/sSQZ5fDFsL+IdE4m3cTHv8AIFZa7ZtO/BXJTVyai2r+siE7cwbzgvwcNBzyQ6eO/wpQK3pDL5r98k1xY71fpv8z5xvIYheu/+pJWneBK7b9f5j+nnaLuv2KAysJEh++/lWFJ+Hr177+zMvFAouvvv2soMprfae+/pK/Cehpy7r+I5mSr9Qftv38pRp7BMOu/yEpIeGjz6L9bmTMXVFjmvzOtZnZOaeO/GSzA6Fwx4L8u1s9jLXnZv08V/jTvL9K/pYFip7xExb/uV1fH02anv3PrzzyaTrM/nGjcYAsEyT/Q8oH0ZwHUPyc8XOmiNds/qCcYONMB4T+oNfsz8SjkP/HRslpTBOc/WLzTHz6J6T+tE73JOq7rPwlj6v46a+0/9SJ4Cbe57j8=\",\"dtype\":\"float64\",\"shape\":[100]}},\"selected\":{\"id\":\"7ea9693c-ead2-4bff-8434-ff171d29d97c\",\"type\":\"Selection\"},\"selection_policy\":{\"id\":\"cc7498d8-81ed-4e36-a3bc-2d259b9571a4\",\"type\":\"UnionRenderers\"}},\"id\":\"911af4b9-51ba-45de-89ad-8cf208411bb5\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"57c20150-54f5-4d18-8aa3-c2eae2efad00\",\"type\":\"BasicTicker\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"#1f77b4\"},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"size\":{\"units\":\"screen\",\"value\":7},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2654344b-316e-44fc-80f5-1d58ed2c9508\",\"type\":\"Circle\"},{\"attributes\":{},\"id\":\"8fe96ad8-d60d-4a19-ac19-122ea130038d\",\"type\":\"LinearScale\"},{\"attributes\":{\"bottom_units\":\"screen\",\"fill_alpha\":{\"value\":0.5},\"fill_color\":{\"value\":\"lightgrey\"},\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":{\"value\":1.0},\"line_color\":{\"value\":\"black\"},\"line_dash\":[4,4],\"line_width\":{\"value\":2},\"plot\":null,\"render_mode\":\"css\",\"right_units\":\"screen\",\"top_units\":\"screen\"},\"id\":\"1d120b68-24b8-4860-9bfc-f1afaa2022bd\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"7ea9693c-ead2-4bff-8434-ff171d29d97c\",\"type\":\"Selection\"},{\"attributes\":{\"formatter\":{\"id\":\"c5a3f469-ba65-4d45-958a-37fdb58305cc\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"b11d1b46-0b08-44c8-bb16-8304513e3d15\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"abcd0a1b-9994-4fed-9ea3-4de28a6854db\",\"type\":\"BasicTicker\"}},\"id\":\"78750af8-5fe4-4cd7-b68b-4b31ae1ceb65\",\"type\":\"LinearAxis\"},{\"attributes\":{\"data_source\":{\"id\":\"911af4b9-51ba-45de-89ad-8cf208411bb5\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"8cc9453d-fde9-4ab3-8464-0806c9be544d\",\"type\":\"Circle\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"2654344b-316e-44fc-80f5-1d58ed2c9508\",\"type\":\"Circle\"},\"selection_glyph\":null,\"view\":{\"id\":\"7f0c4e1d-90fb-4029-b77a-b4600ebea1de\",\"type\":\"CDSView\"}},\"id\":\"3a34f9aa-3e96-4184-9572-c1d9738fd25b\",\"type\":\"GlyphRenderer\"}],\"root_ids\":[\"b11d1b46-0b08-44c8-bb16-8304513e3d15\"]},\"title\":\"Bokeh Application\",\"version\":\"0.13.0\"}};\n", + " var render_items = [{\"docid\":\"aeec4543-46cd-4f87-acc1-ea2ed28b7ada\",\"roots\":{\"b11d1b46-0b08-44c8-bb16-8304513e3d15\":\"94f2184c-4368-4600-a460-84eec19a94b9\"}}];\n", + " root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n", + "\n", + " }\n", + " if (root.Bokeh !== undefined) {\n", + " embed_document(root);\n", + " } else {\n", + " var attempts = 0;\n", + " var timer = setInterval(function(root) {\n", + " if (root.Bokeh !== undefined) {\n", + " embed_document(root);\n", + " clearInterval(timer);\n", + " }\n", + " attempts++;\n", + " if (attempts > 100) {\n", + " console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\")\n", + " clearInterval(timer);\n", + " }\n", + " }, 10, root)\n", + " }\n", + "})(window);" + ], + "application/vnd.bokehjs_exec.v0+json": "" + }, + "metadata": { + "application/vnd.bokehjs_exec.v0+json": { + "id": "b11d1b46-0b08-44c8-bb16-8304513e3d15" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "p = figure(width=500, height=500)\n", + "p.circle(x, y, size=7, color=\"firebrick\", alpha=0.5)\n", + "show(p)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Bar Plot Example\n", + "\n", + "\n", + "Bokeh's core display model relies on *composing graphical primitives* which are bound to data series. This is similar in spirit to Protovis and D3, and different than most other Python plotting libraries.\n", + "\n", + "A slightly more sophisticated example demonstrates this idea.\n", + "\n", + "Bokeh ships with a small set of interesting \"sample data\" in the `bokeh.sampledata` package. We'll load up some historical automobile mileage data, which is returned as a Pandas `DataFrame`." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "from bokeh.sampledata.autompg import autompg\n", + "\n", + "grouped = autompg.groupby(\"yr\")\n", + "\n", + "mpg = grouped.mpg\n", + "avg, std = mpg.mean(), mpg.std()\n", + "years = list(grouped.groups)\n", + "american = autompg[autompg[\"origin\"]==1]\n", + "japanese = autompg[autompg[\"origin\"]==3]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "For each year, we want to plot the distribution of MPG within that year." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/javascript": [ + "(function(root) {\n", + " function embed_document(root) {\n", + " \n", + " var docs_json = {\"bad1f4b5-c81b-4fc1-872b-70166b3d66a6\":{\"roots\":{\"references\":[{\"attributes\":{\"bottom\":{\"field\":\"bottom\"},\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"#1f77b4\"},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"top\":{\"field\":\"top\"},\"width\":{\"value\":0.8},\"x\":{\"field\":\"x\"}},\"id\":\"1de74a0b-8e49-49f1-aa66-f6afc5dafeed\",\"type\":\"VBar\"},{\"attributes\":{\"bottom\":{\"field\":\"bottom\"},\"fill_alpha\":{\"value\":0.2},\"fill_color\":{\"value\":\"#1f77b4\"},\"line_color\":{\"value\":null},\"top\":{\"field\":\"top\"},\"width\":{\"value\":0.8},\"x\":{\"field\":\"x\"}},\"id\":\"cd33895a-6a48-4d01-959b-775e51030e93\",\"type\":\"VBar\"},{\"attributes\":{},\"id\":\"f49d1841-eed7-4f3b-b6b4-349e109bb6c9\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"557f2278-14a2-47d1-88c5-96fbc488748a\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"3f9a981e-eaaf-413f-b424-0a9f6ff67052\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"plot\":{\"id\":\"42a1e000-ac23-4612-97b0-2fded48d2234\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"8746336a-c725-44a0-9b9d-808e295d5fe0\",\"type\":\"BasicTicker\"}},\"id\":\"6f34509e-4b27-4a3f-9248-b86c22682096\",\"type\":\"Grid\"},{\"attributes\":{\"items\":[{\"id\":\"ef96f6cf-cee8-43f9-a0fb-889a804321bc\",\"type\":\"LegendItem\"},{\"id\":\"c3b5d73d-f1d7-483b-a110-76201f47499b\",\"type\":\"LegendItem\"},{\"id\":\"de093522-d125-418f-bbb5-99465d6efe7e\",\"type\":\"LegendItem\"}],\"location\":\"top_left\",\"plot\":{\"id\":\"42a1e000-ac23-4612-97b0-2fded48d2234\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"b8c5c1fe-3e58-4014-bd93-1a8a62e79b51\",\"type\":\"Legend\"},{\"attributes\":{\"callback\":null,\"data\":{\"x\":[70,70,71,71,71,71,72,72,72,72,72,73,73,73,73,74,74,74,74,74,74,75,75,75,75,76,76,76,76,77,77,77,77,77,77,78,78,78,78,78,78,78,78,79,79,80,80,80,80,80,80,80,80,80,80,80,80,80,81,81,81,81,81,81,81,81,81,81,81,81,82,82,82,82,82,82,82,82,82],\"y\":{\"__ndarray__\":\"AAAAAAAAOEAAAAAAAAA7QAAAAAAAADtAAAAAAAAAOUAAAAAAAAA/QAAAAAAAgEFAAAAAAAAAOEAAAAAAAAAzQAAAAAAAADxAAAAAAAAAN0AAAAAAAAA7QAAAAAAAADRAAAAAAAAANkAAAAAAAAAyQAAAAAAAADRAAAAAAAAAP0AAAAAAAABAQAAAAAAAAD9AAAAAAAAAQEAAAAAAAAA4QAAAAAAAADpAAAAAAAAAPUAAAAAAAAA4QAAAAAAAADhAAAAAAACAQEAAAAAAAIBAQAAAAAAAAEBAAAAAAAAAPEAAAAAAAAAzQAAAAAAAgD9AAAAAAADAQEAAAAAAAAA6QAAAAAAAAD5AAAAAAAAANkAAAAAAAIA1QGZmZmZmZkBAMzMzMzOzQ0DNzMzMzAxCQAAAAAAAgDtAMzMzMzMzO0CamZmZmRk1QGZmZmZm5jdAAAAAAACAPUDNzMzMzAxBQM3MzMzMzD9AzczMzMwMQ0CamZmZmZlCQM3MzMzMzD1AzczMzMxMP0AAAAAAAIBCQJqZmZmZGUBAzczMzMxMR0BmZmZmZmZEQM3MzMzMTEZAZmZmZmbmQECamZmZmVlAQDMzMzMzszdAMzMzMzMzQEDNzMzMzIxDQM3MzMzMjEFAZmZmZmYmQEAAAAAAAIBCQJqZmZmZ2UJAzczMzMwMQUCamZmZmdlAQDMzMzMzM0BAMzMzMzNzQECamZmZmZk/QGZmZmZmZjlAMzMzMzMzOEAAAAAAAIBCQAAAAAAAAD9AAAAAAAAAQkAAAAAAAABCQAAAAAAAAEFAAAAAAAAAQ0AAAAAAAABAQAAAAAAAAENAAAAAAAAAQEA=\",\"dtype\":\"float64\",\"shape\":[79]}},\"selected\":{\"id\":\"a5104717-6199-4dfb-bc90-88e74528a50b\",\"type\":\"Selection\"},\"selection_policy\":{\"id\":\"def5aedb-6ec4-43b2-8d55-8785d71697a3\",\"type\":\"UnionRenderers\"}},\"id\":\"997753a2-3562-43cc-9e39-f9a6aaf35341\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"formatter\":{\"id\":\"cea30ce4-aa3c-497c-8e1b-7bb25d9ecf04\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"42a1e000-ac23-4612-97b0-2fded48d2234\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"8746336a-c725-44a0-9b9d-808e295d5fe0\",\"type\":\"BasicTicker\"}},\"id\":\"d84a39a9-6b2c-442c-b62c-e89b9f6c76fe\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"b0018d60-14d1-40f2-9dea-5170ab264a96\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"overlay\":{\"id\":\"71febb92-34b9-4d8c-9385-c2e1d097b0f1\",\"type\":\"BoxAnnotation\"}},\"id\":\"1d467055-1174-4ab4-b5f5-71c546d5fba2\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"3e823cb1-245a-4f30-960b-a3b743b68c46\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"def5aedb-6ec4-43b2-8d55-8785d71697a3\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"0fd54d4d-3ef6-4a7b-bbd9-e5fadd3ac336\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"2112f18f-5e3b-4d48-85de-8f3bde518be4\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"data_source\":{\"id\":\"93bee0ab-0c38-4997-a136-9ab57f418dc4\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"396318f8-8c68-4c82-8aa4-4cb51beb704e\",\"type\":\"Triangle\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"690d5c34-3a3b-4585-afb7-1348fbf8be40\",\"type\":\"Triangle\"},\"selection_glyph\":null,\"view\":{\"id\":\"dac11c80-2b69-4011-87aa-a3ed97d9ddc7\",\"type\":\"CDSView\"}},\"id\":\"8bb09451-0a47-4db0-ba55-731985ffc439\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"data_source\":{\"id\":\"b416c1a0-4a14-4f1f-9893-faf3ea38806c\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"cd33895a-6a48-4d01-959b-775e51030e93\",\"type\":\"VBar\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"1de74a0b-8e49-49f1-aa66-f6afc5dafeed\",\"type\":\"VBar\"},\"selection_glyph\":null,\"view\":{\"id\":\"85be5f7b-6e27-4891-8097-aea939802587\",\"type\":\"CDSView\"}},\"id\":\"31d1fce5-a6e2-4eb1-8760-57a4b845d35e\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"#1f77b4\"},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"size\":{\"units\":\"screen\",\"value\":10},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"690d5c34-3a3b-4585-afb7-1348fbf8be40\",\"type\":\"Triangle\"},{\"attributes\":{\"callback\":null,\"data\":{\"bottom\":{\"__ndarray__\":\"gvFgx2qzKECcKci59t4sQJZdRzm5jipAzvVtn6zMKECki7kXNjswQIpnc6D2pi5ApAV4qVNeL0DtFQi6+rIwQBxLQL6+KTFAWBwW2YNMMkBnDzEy+Oo6QAq856zmjDhAfzfsSXnEOkA=\",\"dtype\":\"float64\",\"shape\":[13]},\"top\":{\"__ndarray__\":\"55jlF2UHN0DAzlQxaMk7QBEIyj5aJjhATTh849zMNUD6TNCFok49QMPUTjgNNTlA1KLp0Ht2O0AT6vdFBQ0+QNr+XjaL9T5AVt48aCfjP0AojYptQ1hEQPSsO6IX6UFAQOQJW8OdQkA=\",\"dtype\":\"float64\",\"shape\":[13]},\"x\":[70,71,72,73,74,75,76,77,78,79,80,81,82]},\"selected\":{\"id\":\"401a863a-51d7-4731-8006-4f63dc274b44\",\"type\":\"Selection\"},\"selection_policy\":{\"id\":\"2112f18f-5e3b-4d48-85de-8f3bde518be4\",\"type\":\"UnionRenderers\"}},\"id\":\"b416c1a0-4a14-4f1f-9893-faf3ea38806c\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"dimension\":1,\"plot\":{\"id\":\"42a1e000-ac23-4612-97b0-2fded48d2234\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"385effe2-ece0-4140-9bb6-2affa39a2f09\",\"type\":\"BasicTicker\"}},\"id\":\"bd948bd1-94ce-4bb4-8b2a-f5d0275f0545\",\"type\":\"Grid\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.5},\"fill_color\":{\"value\":\"red\"},\"line_alpha\":{\"value\":0.5},\"line_color\":{\"value\":\"red\"},\"size\":{\"units\":\"screen\",\"value\":10},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"35d1fbce-767b-40b4-bde1-3758144fd230\",\"type\":\"Circle\"},{\"attributes\":{\"callback\":null,\"data\":{\"x\":[70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,74,74,74,74,74,74,74,74,74,74,74,74,74,74,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,80,80,80,80,80,80,81,81,81,81,81,81,81,81,81,81,81,81,81,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82],\"y\":{\"__ndarray__\":\"AAAAAAAAMkAAAAAAAAAuQAAAAAAAADJAAAAAAAAAMEAAAAAAAAAxQAAAAAAAAC5AAAAAAAAALEAAAAAAAAAsQAAAAAAAACxAAAAAAAAALkAAAAAAAAAuQAAAAAAAACxAAAAAAAAALkAAAAAAAAAsQAAAAAAAADZAAAAAAAAAMkAAAAAAAAA1QAAAAAAAADVAAAAAAAAAJEAAAAAAAAAkQAAAAAAAACZAAAAAAAAAIkAAAAAAAAA8QAAAAAAAADNAAAAAAAAAMEAAAAAAAAAxQAAAAAAAADNAAAAAAAAAMkAAAAAAAAAsQAAAAAAAACxAAAAAAAAALEAAAAAAAAAsQAAAAAAAAChAAAAAAAAAKkAAAAAAAAAqQAAAAAAAADJAAAAAAAAANkAAAAAAAAAzQAAAAAAAADJAAAAAAAAAN0AAAAAAAAA6QAAAAAAAADlAAAAAAAAANEAAAAAAAAA1QAAAAAAAACpAAAAAAAAALEAAAAAAAAAuQAAAAAAAACxAAAAAAAAAMUAAAAAAAAAmQAAAAAAAACpAAAAAAAAAKEAAAAAAAAAqQAAAAAAAAC5AAAAAAAAAKkAAAAAAAAAqQAAAAAAAACxAAAAAAAAANkAAAAAAAAA8QAAAAAAAACpAAAAAAAAALEAAAAAAAAAqQAAAAAAAACxAAAAAAAAALkAAAAAAAAAoQAAAAAAAACpAAAAAAAAAKkAAAAAAAAAsQAAAAAAAACpAAAAAAAAAKEAAAAAAAAAqQAAAAAAAADJAAAAAAAAAMEAAAAAAAAAyQAAAAAAAADJAAAAAAAAAN0AAAAAAAAAmQAAAAAAAAChAAAAAAAAAKkAAAAAAAAAoQAAAAAAAADJAAAAAAAAANUAAAAAAAAAzQAAAAAAAADVAAAAAAAAALkAAAAAAAAAwQAAAAAAAAC5AAAAAAAAAJkAAAAAAAAA0QAAAAAAAADNAAAAAAAAALkAAAAAAAAA6QAAAAAAAADlAAAAAAAAAMEAAAAAAAAAwQAAAAAAAADJAAAAAAAAAMEAAAAAAAAAqQAAAAAAAACxAAAAAAAAALEAAAAAAAAAsQAAAAAAAADxAAAAAAAAAM0AAAAAAAAAyQAAAAAAAAC5AAAAAAAAALkAAAAAAAAAwQAAAAAAAAC5AAAAAAAAAMEAAAAAAAAAsQAAAAAAAADFAAAAAAAAAMEAAAAAAAAAuQAAAAAAAADJAAAAAAAAANUAAAAAAAAA0QAAAAAAAACpAAAAAAAAAN0AAAAAAAAA0QAAAAAAAADdAAAAAAAAAMkAAAAAAAAAzQAAAAAAAADlAAAAAAAAAOkAAAAAAAIAxQAAAAAAAADBAAAAAAAAAL0AAAAAAAAAtQAAAAAAAADZAAAAAAAAANkAAAAAAAAA4QAAAAAAAgDZAAAAAAAAAPUAAAAAAAIA4QAAAAAAAADRAAAAAAAAAMkAAAAAAAIAyQAAAAAAAgDFAAAAAAACAOkAAAAAAAAAqQAAAAAAAgDBAAAAAAAAAKkAAAAAAAAAqQAAAAAAAACpAAAAAAAAAPkAAAAAAAIA5QAAAAAAAgDFAAAAAAAAAMUAAAAAAAAAvQAAAAAAAAC5AAAAAAACAMUAAAAAAAIA0QAAAAAAAADNAAAAAAACAMkAAAAAAAAAwQAAAAAAAAC9AAAAAAAAAL0AAAAAAAAAwQAAAAAAAgDhAAAAAAACAOUAAAAAAAIA+QAAAAAAAwEBAzczMzMwMQkBmZmZmZuYzQGZmZmZmZjNAMzMzMzMzNEAzMzMzMzMzQAAAAAAAgDRAMzMzMzMzNECamZmZmRk5QAAAAAAAgDRAZmZmZmZmM0CamZmZmZk0QM3MzMzMzDRAmpmZmZmZMkCamZmZmRkyQDMzMzMzMzNAMzMzMzOzMUCamZmZmRkyQAAAAAAAgDFAAAAAAAAAPkBmZmZmZuY+QDMzMzMzMzdAzczMzMzMN0AAAAAAAIA1QM3MzMzMzDNAzczMzMxMNkAzMzMzMzM0QJqZmZmZmTRAAAAAAAAAMUCamZmZmZkxQAAAAAAAgDBAMzMzMzMzMkBmZmZmZuYwQAAAAAAAAC9AMzMzMzMzM0AAAAAAAIAyQJqZmZmZ2UFAZmZmZmZmO0AAAAAAAAA3QGZmZmZm5jdAmpmZmZkZQUAAAAAAAEBBQGZmZmZmZjxAzczMzMzMPEDNzMzMzMw6QAAAAAAAwEBAzczMzMwMQEAAAAAAAAA8QGZmZmZmZjpAzczMzMxMOECamZmZmRkzQGZmZmZm5jtAMzMzMzMzO0CamZmZmZk6QM3MzMzMzDlAAAAAAACAN0AAAAAAAAA+QAAAAAAAgENAmpmZmZlZQUAzMzMzMzNBQGZmZmZm5j1AZmZmZmZmNkCamZmZmZk6QDMzMzMzMzRAmpmZmZmZMUAAAAAAAAA8QAAAAAAAADtAAAAAAAAAQUAAAAAAAAA/QAAAAAAAAD1AAAAAAAAAO0AAAAAAAAA4QAAAAAAAAENAAAAAAAAAQkAAAAAAAAA5QAAAAAAAAENAAAAAAAAAOkAAAAAAAAA2QAAAAAAAAEJAAAAAAAAAO0AAAAAAAAA7QAAAAAAAAEBAAAAAAAAAPEAAAAAAAAA/QA==\",\"dtype\":\"float64\",\"shape\":[245]}},\"selected\":{\"id\":\"0fd54d4d-3ef6-4a7b-bbd9-e5fadd3ac336\",\"type\":\"Selection\"},\"selection_policy\":{\"id\":\"3f9a981e-eaaf-413f-b424-0a9f6ff67052\",\"type\":\"UnionRenderers\"}},\"id\":\"93bee0ab-0c38-4997-a136-9ab57f418dc4\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"a56687e4-8676-4c80-9542-a2b7e28d2f10\",\"type\":\"LinearScale\"},{\"attributes\":{\"formatter\":{\"id\":\"f49d1841-eed7-4f3b-b6b4-349e109bb6c9\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"42a1e000-ac23-4612-97b0-2fded48d2234\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"385effe2-ece0-4140-9bb6-2affa39a2f09\",\"type\":\"BasicTicker\"}},\"id\":\"c92afa04-98bd-406a-85fe-17af36d4a2d5\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"f746c554-6103-46d0-bcf0-ae1c95da3bd1\",\"type\":\"SaveTool\"},{\"attributes\":{\"source\":{\"id\":\"997753a2-3562-43cc-9e39-f9a6aaf35341\",\"type\":\"ColumnDataSource\"}},\"id\":\"89a54986-4256-4767-9631-1ee70d64908d\",\"type\":\"CDSView\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"#1f77b4\"},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"size\":{\"units\":\"screen\",\"value\":10},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"5bad126c-2e3a-4af3-8b79-079e6b26272f\",\"type\":\"Circle\"},{\"attributes\":{\"data_source\":{\"id\":\"997753a2-3562-43cc-9e39-f9a6aaf35341\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"35d1fbce-767b-40b4-bde1-3758144fd230\",\"type\":\"Circle\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"5bad126c-2e3a-4af3-8b79-079e6b26272f\",\"type\":\"Circle\"},\"selection_glyph\":null,\"view\":{\"id\":\"89a54986-4256-4767-9631-1ee70d64908d\",\"type\":\"CDSView\"}},\"id\":\"d0ce224a-b212-42c4-b185-7149c62326b5\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"source\":{\"id\":\"93bee0ab-0c38-4997-a136-9ab57f418dc4\",\"type\":\"ColumnDataSource\"}},\"id\":\"dac11c80-2b69-4011-87aa-a3ed97d9ddc7\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"401a863a-51d7-4731-8006-4f63dc274b44\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"cea30ce4-aa3c-497c-8e1b-7bb25d9ecf04\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"label\":{\"value\":\"MPG 1 stddev\"},\"renderers\":[{\"id\":\"31d1fce5-a6e2-4eb1-8760-57a4b845d35e\",\"type\":\"GlyphRenderer\"}]},\"id\":\"ef96f6cf-cee8-43f9-a0fb-889a804321bc\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"a5104717-6199-4dfb-bc90-88e74528a50b\",\"type\":\"Selection\"},{\"attributes\":{\"plot\":null,\"text\":\"MPG by Year (Japan and US)\"},\"id\":\"12b675db-3ffc-4717-a6e7-7ede284243d2\",\"type\":\"Title\"},{\"attributes\":{\"label\":{\"value\":\"American\"},\"renderers\":[{\"id\":\"8bb09451-0a47-4db0-ba55-731985ffc439\",\"type\":\"GlyphRenderer\"}]},\"id\":\"de093522-d125-418f-bbb5-99465d6efe7e\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"385effe2-ece0-4140-9bb6-2affa39a2f09\",\"type\":\"BasicTicker\"},{\"attributes\":{\"below\":[{\"id\":\"d84a39a9-6b2c-442c-b62c-e89b9f6c76fe\",\"type\":\"LinearAxis\"}],\"left\":[{\"id\":\"c92afa04-98bd-406a-85fe-17af36d4a2d5\",\"type\":\"LinearAxis\"}],\"renderers\":[{\"id\":\"d84a39a9-6b2c-442c-b62c-e89b9f6c76fe\",\"type\":\"LinearAxis\"},{\"id\":\"6f34509e-4b27-4a3f-9248-b86c22682096\",\"type\":\"Grid\"},{\"id\":\"c92afa04-98bd-406a-85fe-17af36d4a2d5\",\"type\":\"LinearAxis\"},{\"id\":\"bd948bd1-94ce-4bb4-8b2a-f5d0275f0545\",\"type\":\"Grid\"},{\"id\":\"71febb92-34b9-4d8c-9385-c2e1d097b0f1\",\"type\":\"BoxAnnotation\"},{\"id\":\"b8c5c1fe-3e58-4014-bd93-1a8a62e79b51\",\"type\":\"Legend\"},{\"id\":\"31d1fce5-a6e2-4eb1-8760-57a4b845d35e\",\"type\":\"GlyphRenderer\"},{\"id\":\"d0ce224a-b212-42c4-b185-7149c62326b5\",\"type\":\"GlyphRenderer\"},{\"id\":\"8bb09451-0a47-4db0-ba55-731985ffc439\",\"type\":\"GlyphRenderer\"}],\"title\":{\"id\":\"12b675db-3ffc-4717-a6e7-7ede284243d2\",\"type\":\"Title\"},\"toolbar\":{\"id\":\"dac28597-e94b-4e2c-b66b-577683171a87\",\"type\":\"Toolbar\"},\"x_range\":{\"id\":\"60ff39d0-7b63-42b2-b966-7efe4880b1f1\",\"type\":\"DataRange1d\"},\"x_scale\":{\"id\":\"a56687e4-8676-4c80-9542-a2b7e28d2f10\",\"type\":\"LinearScale\"},\"y_range\":{\"id\":\"0eb3873c-b17e-4aec-8267-76dda47638fc\",\"type\":\"DataRange1d\"},\"y_scale\":{\"id\":\"25cac6a0-7c17-4fbe-bf97-07056d72f12f\",\"type\":\"LinearScale\"}},\"id\":\"42a1e000-ac23-4612-97b0-2fded48d2234\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"source\":{\"id\":\"b416c1a0-4a14-4f1f-9893-faf3ea38806c\",\"type\":\"ColumnDataSource\"}},\"id\":\"85be5f7b-6e27-4891-8097-aea939802587\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"25cac6a0-7c17-4fbe-bf97-07056d72f12f\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"8746336a-c725-44a0-9b9d-808e295d5fe0\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"d7886736-f66f-4f46-9203-221e3ff7da46\",\"type\":\"HelpTool\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_inspect\":\"auto\",\"active_multi\":null,\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"3e823cb1-245a-4f30-960b-a3b743b68c46\",\"type\":\"PanTool\"},{\"id\":\"b0018d60-14d1-40f2-9dea-5170ab264a96\",\"type\":\"WheelZoomTool\"},{\"id\":\"1d467055-1174-4ab4-b5f5-71c546d5fba2\",\"type\":\"BoxZoomTool\"},{\"id\":\"f746c554-6103-46d0-bcf0-ae1c95da3bd1\",\"type\":\"SaveTool\"},{\"id\":\"557f2278-14a2-47d1-88c5-96fbc488748a\",\"type\":\"ResetTool\"},{\"id\":\"d7886736-f66f-4f46-9203-221e3ff7da46\",\"type\":\"HelpTool\"}]},\"id\":\"dac28597-e94b-4e2c-b66b-577683171a87\",\"type\":\"Toolbar\"},{\"attributes\":{\"callback\":null},\"id\":\"0eb3873c-b17e-4aec-8267-76dda47638fc\",\"type\":\"DataRange1d\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.3},\"fill_color\":{\"value\":\"blue\"},\"line_alpha\":{\"value\":0.3},\"line_color\":{\"value\":\"blue\"},\"size\":{\"units\":\"screen\",\"value\":10},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"396318f8-8c68-4c82-8aa4-4cb51beb704e\",\"type\":\"Triangle\"},{\"attributes\":{\"label\":{\"value\":\"Japanese\"},\"renderers\":[{\"id\":\"d0ce224a-b212-42c4-b185-7149c62326b5\",\"type\":\"GlyphRenderer\"}]},\"id\":\"c3b5d73d-f1d7-483b-a110-76201f47499b\",\"type\":\"LegendItem\"},{\"attributes\":{\"callback\":null},\"id\":\"60ff39d0-7b63-42b2-b966-7efe4880b1f1\",\"type\":\"DataRange1d\"},{\"attributes\":{\"bottom_units\":\"screen\",\"fill_alpha\":{\"value\":0.5},\"fill_color\":{\"value\":\"lightgrey\"},\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":{\"value\":1.0},\"line_color\":{\"value\":\"black\"},\"line_dash\":[4,4],\"line_width\":{\"value\":2},\"plot\":null,\"render_mode\":\"css\",\"right_units\":\"screen\",\"top_units\":\"screen\"},\"id\":\"71febb92-34b9-4d8c-9385-c2e1d097b0f1\",\"type\":\"BoxAnnotation\"}],\"root_ids\":[\"42a1e000-ac23-4612-97b0-2fded48d2234\"]},\"title\":\"Bokeh Application\",\"version\":\"0.13.0\"}};\n", + " var render_items = [{\"docid\":\"bad1f4b5-c81b-4fc1-872b-70166b3d66a6\",\"roots\":{\"42a1e000-ac23-4612-97b0-2fded48d2234\":\"92409529-2443-4698-83d8-8ad84ee19e96\"}}];\n", + " root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n", + "\n", + " }\n", + " if (root.Bokeh !== undefined) {\n", + " embed_document(root);\n", + " } else {\n", + " var attempts = 0;\n", + " var timer = setInterval(function(root) {\n", + " if (root.Bokeh !== undefined) {\n", + " embed_document(root);\n", + " clearInterval(timer);\n", + " }\n", + " attempts++;\n", + " if (attempts > 100) {\n", + " console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\")\n", + " clearInterval(timer);\n", + " }\n", + " }, 10, root)\n", + " }\n", + "})(window);" + ], + "application/vnd.bokehjs_exec.v0+json": "" + }, + "metadata": { + "application/vnd.bokehjs_exec.v0+json": { + "id": "42a1e000-ac23-4612-97b0-2fded48d2234" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "p = figure(title=\"MPG by Year (Japan and US)\")\n", + "\n", + "p.vbar(x=years, bottom=avg-std, top=avg+std, width=0.8, \n", + " fill_alpha=0.2, line_color=None, legend=\"MPG 1 stddev\")\n", + "\n", + "p.circle(x=japanese[\"yr\"], y=japanese[\"mpg\"], size=10, alpha=0.5,\n", + " color=\"red\", legend=\"Japanese\")\n", + "\n", + "p.triangle(x=american[\"yr\"], y=american[\"mpg\"], size=10, alpha=0.3,\n", + " color=\"blue\", legend=\"American\")\n", + "\n", + "p.legend.location = \"top_left\"\n", + "show(p)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**This kind of approach can be used to generate other kinds of interesting plots. See many more examples in the [Bokeh Documentation Gallery](https://bokeh.pydata.org/en/latest/docs/gallery.html). **" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Linked Brushing\n", + "\n", + "To link plots together at a data level, we can explicitly wrap the data in a `ColumnDataSource`. This allows us to reference columns by name.\n", + "\n", + "We can use a \"select\" tool to select points on one plot, and the linked points on the other plots will highlight." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/javascript": [ + "(function(root) {\n", + " function embed_document(root) {\n", + " \n", + " var docs_json = {\"ebe9aadd-28b2-446b-8080-884f2d424dfc\":{\"roots\":{\"references\":[{\"attributes\":{\"tools\":[{\"id\":\"46e47af1-f0b8-4b5c-8c9d-ef05aba18974\",\"type\":\"PanTool\"},{\"id\":\"07c613ba-492a-4f54-8412-a80b047da384\",\"type\":\"WheelZoomTool\"},{\"id\":\"5df2e44a-78e3-4a99-95dc-4d00680979bd\",\"type\":\"BoxZoomTool\"},{\"id\":\"4df93f3b-5965-4df4-bb03-777f0190091b\",\"type\":\"BoxSelectTool\"},{\"id\":\"1fde3b6a-4f8c-4fb1-8592-7c1127caf135\",\"type\":\"LassoSelectTool\"},{\"id\":\"7055d611-7ffa-41d5-8073-8ffd5caee9fe\",\"type\":\"PanTool\"},{\"id\":\"bb251479-cd93-4715-b49a-1fb4d08036aa\",\"type\":\"WheelZoomTool\"},{\"id\":\"a432bd36-6556-4cc9-aa2a-9b95dac7b538\",\"type\":\"BoxZoomTool\"},{\"id\":\"70407e69-128d-4da0-a2a6-40289af24f5e\",\"type\":\"BoxSelectTool\"},{\"id\":\"e0e1c06e-c125-45b8-bf9c-9ad4f35247f2\",\"type\":\"LassoSelectTool\"},{\"id\":\"815ee431-91c4-4a81-a98a-2743d2e0364d\",\"type\":\"PanTool\"},{\"id\":\"3a39e97d-41a1-4f95-9c74-6fa6613080bb\",\"type\":\"WheelZoomTool\"},{\"id\":\"50f4878c-0841-473a-b7a3-e5a8af0319e2\",\"type\":\"BoxZoomTool\"},{\"id\":\"23e320ad-9dd7-450c-9181-780842fbfffc\",\"type\":\"BoxSelectTool\"},{\"id\":\"eacfcb3f-8321-4ea9-93f6-707acc6dc073\",\"type\":\"LassoSelectTool\"}]},\"id\":\"2a93a995-357f-4110-b02b-36b13bcc4057\",\"type\":\"ProxyToolbar\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_inspect\":\"auto\",\"active_multi\":null,\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"46e47af1-f0b8-4b5c-8c9d-ef05aba18974\",\"type\":\"PanTool\"},{\"id\":\"07c613ba-492a-4f54-8412-a80b047da384\",\"type\":\"WheelZoomTool\"},{\"id\":\"5df2e44a-78e3-4a99-95dc-4d00680979bd\",\"type\":\"BoxZoomTool\"},{\"id\":\"4df93f3b-5965-4df4-bb03-777f0190091b\",\"type\":\"BoxSelectTool\"},{\"id\":\"1fde3b6a-4f8c-4fb1-8592-7c1127caf135\",\"type\":\"LassoSelectTool\"}]},\"id\":\"b3ff8cf1-e078-4e96-8533-bfcbe29b7521\",\"type\":\"Toolbar\"},{\"attributes\":{},\"id\":\"d2bd386f-c6d9-4f30-afa1-0022dae3bdb6\",\"type\":\"BasicTicker\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.5},\"fill_color\":{\"value\":\"lightgrey\"},\"level\":\"overlay\",\"line_alpha\":{\"value\":1.0},\"line_color\":{\"value\":\"black\"},\"line_dash\":[4,4],\"line_width\":{\"value\":2},\"plot\":null,\"xs_units\":\"screen\",\"ys_units\":\"screen\"},\"id\":\"4f72e8c0-f80b-463c-a6d1-67943de202f5\",\"type\":\"PolyAnnotation\"},{\"attributes\":{},\"id\":\"c5410e18-bdcf-4e8b-b07e-4d4d5d07947d\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"below\":[{\"id\":\"ba8964da-5c1f-4fa7-a25a-7f222b1261e2\",\"type\":\"LinearAxis\"}],\"left\":[{\"id\":\"12582152-7b9c-4b13-9438-11955f25af4f\",\"type\":\"LinearAxis\"}],\"plot_height\":300,\"plot_width\":300,\"renderers\":[{\"id\":\"ba8964da-5c1f-4fa7-a25a-7f222b1261e2\",\"type\":\"LinearAxis\"},{\"id\":\"d1c51ecf-7a16-4028-8b66-690e53521228\",\"type\":\"Grid\"},{\"id\":\"12582152-7b9c-4b13-9438-11955f25af4f\",\"type\":\"LinearAxis\"},{\"id\":\"a35fecc1-f190-42f8-b777-68cf551a13e0\",\"type\":\"Grid\"},{\"id\":\"e98124fe-e8b3-4e19-9439-ed4a1aee5e3b\",\"type\":\"BoxAnnotation\"},{\"id\":\"07653174-3d27-4cc5-a495-672ad6721b6e\",\"type\":\"BoxAnnotation\"},{\"id\":\"4f72e8c0-f80b-463c-a6d1-67943de202f5\",\"type\":\"PolyAnnotation\"},{\"id\":\"393b89d2-306f-4f0f-ab25-ee9d8bcb0985\",\"type\":\"GlyphRenderer\"}],\"title\":{\"id\":\"d196ef01-482f-4a4c-a0f5-040c1ada86c3\",\"type\":\"Title\"},\"toolbar\":{\"id\":\"b3ff8cf1-e078-4e96-8533-bfcbe29b7521\",\"type\":\"Toolbar\"},\"toolbar_location\":null,\"x_range\":{\"id\":\"a3951156-7088-43d3-b550-5e113cc73ca1\",\"type\":\"DataRange1d\"},\"x_scale\":{\"id\":\"4c5e947f-7b93-4633-a72d-e917077268a2\",\"type\":\"LinearScale\"},\"y_range\":{\"id\":\"fd0a6cfc-5f64-4903-90a9-0ac2a13fbbb1\",\"type\":\"DataRange1d\"},\"y_scale\":{\"id\":\"aca98ba7-6222-4652-9682-956845fe66dc\",\"type\":\"LinearScale\"}},\"id\":\"5b45f574-705b-4dbe-aa1c-b754111dbc88\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"fill_color\":{\"value\":\"green\"},\"line_color\":{\"value\":\"green\"},\"x\":{\"field\":\"hp\"},\"y\":{\"field\":\"displ\"}},\"id\":\"8c72aeb2-0523-4b89-a151-386237977740\",\"type\":\"Circle\"},{\"attributes\":{\"plot\":null,\"text\":\"MPG vs. Displacement\"},\"id\":\"fd43b49d-7ee4-4a08-86ea-8718e22f326e\",\"type\":\"Title\"},{\"attributes\":{\"formatter\":{\"id\":\"536d57be-f9c9-44dc-825a-4d80b9b42a0e\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"108a9df1-c7dc-4dd8-93f4-6ef11a764c62\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"c257bb12-da72-426d-953f-e5f517815c19\",\"type\":\"BasicTicker\"}},\"id\":\"77cae6d1-effd-4db5-86b8-e38c0d6d2ff2\",\"type\":\"LinearAxis\"},{\"attributes\":{\"callback\":null},\"id\":\"25c6b4ba-eb58-4714-9cc0-95175ed36ebf\",\"type\":\"DataRange1d\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"#1f77b4\"},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"field\":\"yr\"},\"y\":{\"field\":\"mpg\"}},\"id\":\"d49044d6-4b2a-47bd-8ab2-8203136e66c7\",\"type\":\"Circle\"},{\"attributes\":{\"bottom_units\":\"screen\",\"fill_alpha\":{\"value\":0.5},\"fill_color\":{\"value\":\"lightgrey\"},\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":{\"value\":1.0},\"line_color\":{\"value\":\"black\"},\"line_dash\":[4,4],\"line_width\":{\"value\":2},\"plot\":null,\"render_mode\":\"css\",\"right_units\":\"screen\",\"top_units\":\"screen\"},\"id\":\"07653174-3d27-4cc5-a495-672ad6721b6e\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"dimension\":1,\"plot\":{\"id\":\"3492d33f-6a3b-4723-ac3c-e81be9d5dbcb\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"9df7caee-63be-487a-8913-2ff7069943ff\",\"type\":\"BasicTicker\"}},\"id\":\"a3ef9039-d5be-4058-95bc-a2f2d346218e\",\"type\":\"Grid\"},{\"attributes\":{\"toolbar\":{\"id\":\"2a93a995-357f-4110-b02b-36b13bcc4057\",\"type\":\"ProxyToolbar\"}},\"id\":\"d34aee21-dae8-455d-aacf-73ba965381a8\",\"type\":\"ToolbarBox\"},{\"attributes\":{\"fill_color\":{\"value\":null},\"line_color\":{\"value\":\"red\"},\"size\":{\"field\":\"cyl\",\"units\":\"screen\"},\"x\":{\"field\":\"mpg\"},\"y\":{\"field\":\"displ\"}},\"id\":\"7b1a0db5-1529-443d-a214-b6281e1f053a\",\"type\":\"Circle\"},{\"attributes\":{\"plot\":{\"id\":\"5b45f574-705b-4dbe-aa1c-b754111dbc88\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"41b93bd7-373f-414f-bd0a-f298bf00a8fb\",\"type\":\"BasicTicker\"}},\"id\":\"d1c51ecf-7a16-4028-8b66-690e53521228\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"7d7b3400-2ebb-4d24-b2fd-ec8adad9fd5f\",\"type\":\"Selection\"},{\"attributes\":{\"data_source\":{\"id\":\"d974326b-33fb-4552-84c2-6177e9453f85\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"7b1a0db5-1529-443d-a214-b6281e1f053a\",\"type\":\"Circle\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"21c6e380-be49-4543-904a-cd03275d3334\",\"type\":\"Circle\"},\"selection_glyph\":null,\"view\":{\"id\":\"69d7b488-7878-44bf-b686-f828b2f69c15\",\"type\":\"CDSView\"}},\"id\":\"2f9f1d17-8932-4255-9613-580940d08043\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"plot\":{\"id\":\"3492d33f-6a3b-4723-ac3c-e81be9d5dbcb\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"29aef531-4694-4067-8508-6ae30049a81e\",\"type\":\"BasicTicker\"}},\"id\":\"e2b43aec-7295-4ce1-99f0-c57bfc19d3ea\",\"type\":\"Grid\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.5},\"fill_color\":{\"value\":\"lightgrey\"},\"level\":\"overlay\",\"line_alpha\":{\"value\":1.0},\"line_color\":{\"value\":\"black\"},\"line_dash\":[4,4],\"line_width\":{\"value\":2},\"plot\":null,\"xs_units\":\"screen\",\"ys_units\":\"screen\"},\"id\":\"662ac094-01cf-48d8-bf22-7bfec7210826\",\"type\":\"PolyAnnotation\"},{\"attributes\":{\"dimension\":1,\"plot\":{\"id\":\"5b45f574-705b-4dbe-aa1c-b754111dbc88\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"d2bd386f-c6d9-4f30-afa1-0022dae3bdb6\",\"type\":\"BasicTicker\"}},\"id\":\"a35fecc1-f190-42f8-b777-68cf551a13e0\",\"type\":\"Grid\"},{\"attributes\":{\"formatter\":{\"id\":\"fc997f8c-65d0-4946-b797-70aecafda14b\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"108a9df1-c7dc-4dd8-93f4-6ef11a764c62\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"a6316d45-4b2d-47eb-be52-6cd3ab84e396\",\"type\":\"BasicTicker\"}},\"id\":\"4913db13-fbfa-46fb-97ea-8dab52923318\",\"type\":\"LinearAxis\"},{\"attributes\":{\"formatter\":{\"id\":\"eb2f0e7a-d367-4d03-a9ee-e0b01200a9eb\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"3492d33f-6a3b-4723-ac3c-e81be9d5dbcb\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"29aef531-4694-4067-8508-6ae30049a81e\",\"type\":\"BasicTicker\"}},\"id\":\"2937c708-30bd-4325-9dd4-cd2a00ec7a1c\",\"type\":\"LinearAxis\"},{\"attributes\":{\"callback\":null},\"id\":\"5997a9ec-e438-4658-b7d0-3071b2064e06\",\"type\":\"DataRange1d\"},{\"attributes\":{\"bottom_units\":\"screen\",\"fill_alpha\":{\"value\":0.5},\"fill_color\":{\"value\":\"lightgrey\"},\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":{\"value\":1.0},\"line_color\":{\"value\":\"black\"},\"line_dash\":[4,4],\"line_width\":{\"value\":2},\"plot\":null,\"render_mode\":\"css\",\"right_units\":\"screen\",\"top_units\":\"screen\"},\"id\":\"e98124fe-e8b3-4e19-9439-ed4a1aee5e3b\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"children\":[{\"id\":\"5ca5d37a-32c6-4327-943a-4040d936d035\",\"type\":\"Column\"},{\"id\":\"d34aee21-dae8-455d-aacf-73ba965381a8\",\"type\":\"ToolbarBox\"}]},\"id\":\"f45a8a50-7184-4c9f-a979-e5d77e1eecef\",\"type\":\"Row\"},{\"attributes\":{},\"id\":\"1565d7a4-2965-42a2-8a8c-645fa20c3180\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"formatter\":{\"id\":\"c5410e18-bdcf-4e8b-b07e-4d4d5d07947d\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"3492d33f-6a3b-4723-ac3c-e81be9d5dbcb\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"9df7caee-63be-487a-8913-2ff7069943ff\",\"type\":\"BasicTicker\"}},\"id\":\"40befc8c-8064-4ae1-bd88-511ff3cb6dff\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"1782d61c-8b69-4d37-bbfa-1d61c97b1fe7\",\"type\":\"LinearScale\"},{\"attributes\":{\"callback\":null,\"overlay\":{\"id\":\"cfeb145f-52db-4ae5-9a2a-0ec0d4561415\",\"type\":\"BoxAnnotation\"}},\"id\":\"23e320ad-9dd7-450c-9181-780842fbfffc\",\"type\":\"BoxSelectTool\"},{\"attributes\":{},\"id\":\"bb251479-cd93-4715-b49a-1fb4d08036aa\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"a6316d45-4b2d-47eb-be52-6cd3ab84e396\",\"type\":\"BasicTicker\"},{\"attributes\":{\"plot\":null,\"text\":\"MPG by Year\"},\"id\":\"d196ef01-482f-4a4c-a0f5-040c1ada86c3\",\"type\":\"Title\"},{\"attributes\":{\"children\":[{\"id\":\"5b45f574-705b-4dbe-aa1c-b754111dbc88\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"id\":\"3492d33f-6a3b-4723-ac3c-e81be9d5dbcb\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"id\":\"108a9df1-c7dc-4dd8-93f4-6ef11a764c62\",\"subtype\":\"Figure\",\"type\":\"Plot\"}]},\"id\":\"5ec13a8e-cbce-47cf-bc29-6af0b87685e2\",\"type\":\"Row\"},{\"attributes\":{\"below\":[{\"id\":\"4913db13-fbfa-46fb-97ea-8dab52923318\",\"type\":\"LinearAxis\"}],\"left\":[{\"id\":\"77cae6d1-effd-4db5-86b8-e38c0d6d2ff2\",\"type\":\"LinearAxis\"}],\"plot_height\":300,\"plot_width\":300,\"renderers\":[{\"id\":\"4913db13-fbfa-46fb-97ea-8dab52923318\",\"type\":\"LinearAxis\"},{\"id\":\"7c437abe-0069-4d6e-8454-2bf5a61780b2\",\"type\":\"Grid\"},{\"id\":\"77cae6d1-effd-4db5-86b8-e38c0d6d2ff2\",\"type\":\"LinearAxis\"},{\"id\":\"d625609a-f0e4-4471-b285-5f0ca15c1eaf\",\"type\":\"Grid\"},{\"id\":\"49328a09-eab9-48eb-ad97-d1c61c9ae948\",\"type\":\"BoxAnnotation\"},{\"id\":\"cfeb145f-52db-4ae5-9a2a-0ec0d4561415\",\"type\":\"BoxAnnotation\"},{\"id\":\"662ac094-01cf-48d8-bf22-7bfec7210826\",\"type\":\"PolyAnnotation\"},{\"id\":\"2f9f1d17-8932-4255-9613-580940d08043\",\"type\":\"GlyphRenderer\"}],\"title\":{\"id\":\"fd43b49d-7ee4-4a08-86ea-8718e22f326e\",\"type\":\"Title\"},\"toolbar\":{\"id\":\"97dc1320-8901-4f56-9f58-77937028c23b\",\"type\":\"Toolbar\"},\"toolbar_location\":null,\"x_range\":{\"id\":\"5997a9ec-e438-4658-b7d0-3071b2064e06\",\"type\":\"DataRange1d\"},\"x_scale\":{\"id\":\"8caaa54b-8cf7-48f0-b378-995837cdc9a8\",\"type\":\"LinearScale\"},\"y_range\":{\"id\":\"b51fc315-99c4-43d5-9125-8d97a12550b5\",\"type\":\"DataRange1d\"},\"y_scale\":{\"id\":\"06792786-ab05-4c5e-b224-bb9d652e3f03\",\"type\":\"LinearScale\"}},\"id\":\"108a9df1-c7dc-4dd8-93f4-6ef11a764c62\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"formatter\":{\"id\":\"1565d7a4-2965-42a2-8a8c-645fa20c3180\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"5b45f574-705b-4dbe-aa1c-b754111dbc88\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"41b93bd7-373f-414f-bd0a-f298bf00a8fb\",\"type\":\"BasicTicker\"}},\"id\":\"ba8964da-5c1f-4fa7-a25a-7f222b1261e2\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"41b93bd7-373f-414f-bd0a-f298bf00a8fb\",\"type\":\"BasicTicker\"},{\"attributes\":{\"plot\":null,\"text\":\"HP vs. Displacement\"},\"id\":\"921437aa-2c25-42cd-bfda-f52597c02cc5\",\"type\":\"Title\"},{\"attributes\":{\"data_source\":{\"id\":\"d974326b-33fb-4552-84c2-6177e9453f85\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"00e94cb8-99c5-4345-95cc-31dcda019afc\",\"type\":\"Circle\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"d49044d6-4b2a-47bd-8ab2-8203136e66c7\",\"type\":\"Circle\"},\"selection_glyph\":null,\"view\":{\"id\":\"ed0e8b58-5d38-4492-9424-fe49a06d1978\",\"type\":\"CDSView\"}},\"id\":\"393b89d2-306f-4f0f-ab25-ee9d8bcb0985\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"dimension\":1,\"plot\":{\"id\":\"108a9df1-c7dc-4dd8-93f4-6ef11a764c62\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"c257bb12-da72-426d-953f-e5f517815c19\",\"type\":\"BasicTicker\"}},\"id\":\"d625609a-f0e4-4471-b285-5f0ca15c1eaf\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1ba0d6ea-29fd-423d-95f7-a4c8431e47f5\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"9df7caee-63be-487a-8913-2ff7069943ff\",\"type\":\"BasicTicker\"},{\"attributes\":{\"overlay\":{\"id\":\"49328a09-eab9-48eb-ad97-d1c61c9ae948\",\"type\":\"BoxAnnotation\"}},\"id\":\"50f4878c-0841-473a-b7a3-e5a8af0319e2\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"callback\":null,\"data\":{\"accel\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[392]},\"cyl\":[8,8,8,8,8,8,8,8,8,8,8,8,8,8,4,6,6,6,4,4,4,4,4,4,6,8,8,8,8,4,4,4,6,6,6,6,6,8,8,8,8,8,8,8,6,4,6,6,4,4,4,4,4,4,4,4,4,4,4,4,4,8,8,8,8,8,8,8,8,8,3,8,8,8,8,4,4,4,4,4,4,4,4,4,8,8,8,8,8,8,8,8,8,8,8,8,6,6,6,6,6,4,8,8,8,8,6,4,4,4,3,4,6,4,8,8,4,4,4,4,8,4,6,8,6,6,6,4,4,4,4,6,6,6,8,8,8,8,8,4,4,4,4,4,4,4,4,4,4,4,6,6,6,6,8,8,8,8,6,6,6,6,6,8,8,4,4,6,4,4,4,4,6,4,6,4,4,4,4,4,4,4,4,4,4,8,8,8,8,6,6,6,6,4,4,4,4,6,6,6,6,4,4,4,4,4,8,4,6,6,8,8,8,8,4,4,4,4,4,8,8,8,8,6,6,6,6,8,8,8,8,4,4,4,4,4,4,4,4,6,4,3,4,4,4,4,4,8,8,8,6,6,6,4,6,6,6,6,6,6,8,6,8,8,4,4,4,4,4,4,4,4,5,6,4,6,4,4,6,6,4,6,6,8,8,8,8,8,8,8,8,4,4,4,4,5,8,4,8,4,4,4,4,4,6,6,4,4,4,4,4,4,4,4,6,4,4,4,4,4,4,4,4,4,4,5,4,4,4,4,6,3,4,4,4,4,4,6,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,6,6,6,6,8,6,6,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,6,6,4,6,4,4,4,4,4,4,4,4],\"displ\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[392]},\"hp\":[130,165,150,150,140,198,220,215,225,190,170,160,150,225,95,95,97,85,88,46,87,90,95,113,90,215,200,210,193,88,90,95,100,105,100,88,100,165,175,153,150,180,170,175,110,72,100,88,86,90,70,76,65,69,60,70,95,80,54,90,86,165,175,150,153,150,208,155,160,190,97,150,130,140,150,112,76,87,69,86,92,97,80,88,175,150,145,137,150,198,150,158,150,215,225,175,105,100,100,88,95,46,150,167,170,180,100,88,72,94,90,85,107,90,145,230,49,75,91,112,150,110,122,180,95,100,100,67,80,65,75,100,110,105,140,150,150,140,150,83,67,78,52,61,75,75,75,97,93,67,95,105,72,72,170,145,150,148,110,105,110,95,110,110,129,75,83,100,78,96,71,97,97,70,90,95,88,98,115,53,86,81,92,79,83,140,150,120,152,100,105,81,90,52,60,70,53,100,78,110,95,71,70,75,72,102,150,88,108,120,180,145,130,150,68,80,58,96,70,145,110,145,130,110,105,100,98,180,170,190,149,78,88,75,89,63,83,67,78,97,110,110,48,66,52,70,60,110,140,139,105,95,85,88,100,90,105,85,110,120,145,165,139,140,68,95,97,75,95,105,85,97,103,125,115,133,71,68,115,85,88,90,110,130,129,138,135,155,142,125,150,71,65,80,80,77,125,71,90,70,70,65,69,90,115,115,90,76,60,70,65,90,88,90,90,78,90,75,92,75,65,105,65,48,48,67,67,67,67,62,132,100,88,72,84,84,92,110,84,58,64,60,67,65,62,68,63,65,65,74,75,75,100,74,80,76,116,120,110,105,88,85,88,88,88,85,84,90,92,74,68,68,63,70,88,75,70,67,67,67,110,85,92,112,96,84,90,86,52,84,79,82],\"index\":[0,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,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391],\"mpg\":{\"__ndarray__\":\"AAAAAAAAMkAAAAAAAAAuQAAAAAAAADJAAAAAAAAAMEAAAAAAAAAxQAAAAAAAAC5AAAAAAAAALEAAAAAAAAAsQAAAAAAAACxAAAAAAAAALkAAAAAAAAAuQAAAAAAAACxAAAAAAAAALkAAAAAAAAAsQAAAAAAAADhAAAAAAAAANkAAAAAAAAAyQAAAAAAAADVAAAAAAAAAO0AAAAAAAAA6QAAAAAAAADlAAAAAAAAAOEAAAAAAAAA5QAAAAAAAADpAAAAAAAAANUAAAAAAAAAkQAAAAAAAACRAAAAAAAAAJkAAAAAAAAAiQAAAAAAAADtAAAAAAAAAPEAAAAAAAAA5QAAAAAAAADNAAAAAAAAAMEAAAAAAAAAxQAAAAAAAADNAAAAAAAAAMkAAAAAAAAAsQAAAAAAAACxAAAAAAAAALEAAAAAAAAAsQAAAAAAAAChAAAAAAAAAKkAAAAAAAAAqQAAAAAAAADJAAAAAAAAANkAAAAAAAAAzQAAAAAAAADJAAAAAAAAAN0AAAAAAAAA8QAAAAAAAAD5AAAAAAAAAPkAAAAAAAAA/QAAAAAAAgEFAAAAAAAAAO0AAAAAAAAA6QAAAAAAAADhAAAAAAAAAOUAAAAAAAAA3QAAAAAAAADRAAAAAAAAANUAAAAAAAAAqQAAAAAAAACxAAAAAAAAALkAAAAAAAAAsQAAAAAAAADFAAAAAAAAAJkAAAAAAAAAqQAAAAAAAAChAAAAAAAAAKkAAAAAAAAAzQAAAAAAAAC5AAAAAAAAAKkAAAAAAAAAqQAAAAAAAACxAAAAAAAAAMkAAAAAAAAA2QAAAAAAAADVAAAAAAAAAOkAAAAAAAAA2QAAAAAAAADxAAAAAAAAAN0AAAAAAAAA8QAAAAAAAADtAAAAAAAAAKkAAAAAAAAAsQAAAAAAAACpAAAAAAAAALEAAAAAAAAAuQAAAAAAAAChAAAAAAAAAKkAAAAAAAAAqQAAAAAAAACxAAAAAAAAAKkAAAAAAAAAoQAAAAAAAACpAAAAAAAAAMkAAAAAAAAAwQAAAAAAAADJAAAAAAAAAMkAAAAAAAAA3QAAAAAAAADpAAAAAAAAAJkAAAAAAAAAoQAAAAAAAACpAAAAAAAAAKEAAAAAAAAAyQAAAAAAAADRAAAAAAAAANUAAAAAAAAA2QAAAAAAAADJAAAAAAAAAM0AAAAAA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\",\"dtype\":\"float64\",\"shape\":[392]},\"name\":[\"chevrolet chevelle malibu\",\"buick skylark 320\",\"plymouth satellite\",\"amc rebel sst\",\"ford torino\",\"ford galaxie 500\",\"chevrolet impala\",\"plymouth fury iii\",\"pontiac catalina\",\"amc ambassador dpl\",\"dodge challenger se\",\"plymouth 'cuda 340\",\"chevrolet monte carlo\",\"buick estate wagon (sw)\",\"toyota corona mark ii\",\"plymouth duster\",\"amc hornet\",\"ford maverick\",\"datsun pl510\",\"volkswagen 1131 deluxe sedan\",\"peugeot 504\",\"audi 100 ls\",\"saab 99e\",\"bmw 2002\",\"amc gremlin\",\"ford f250\",\"chevy c20\",\"dodge d200\",\"hi 1200d\",\"datsun pl510\",\"chevrolet vega 2300\",\"toyota corona\",\"amc gremlin\",\"plymouth satellite custom\",\"chevrolet chevelle malibu\",\"ford torino 500\",\"amc matador\",\"chevrolet impala\",\"pontiac catalina brougham\",\"ford galaxie 500\",\"plymouth fury iii\",\"dodge monaco (sw)\",\"ford country squire (sw)\",\"pontiac safari (sw)\",\"amc hornet sportabout (sw)\",\"chevrolet vega (sw)\",\"pontiac firebird\",\"ford mustang\",\"mercury capri 2000\",\"opel 1900\",\"peugeot 304\",\"fiat 124b\",\"toyota corolla 1200\",\"datsun 1200\",\"volkswagen model 111\",\"plymouth cricket\",\"toyota corona hardtop\",\"dodge colt hardtop\",\"volkswagen type 3\",\"chevrolet vega\",\"ford pinto runabout\",\"chevrolet impala\",\"pontiac catalina\",\"plymouth fury iii\",\"ford galaxie 500\",\"amc ambassador sst\",\"mercury marquis\",\"buick lesabre custom\",\"oldsmobile delta 88 royale\",\"chrysler newport royal\",\"mazda rx2 coupe\",\"amc matador (sw)\",\"chevrolet chevelle concours (sw)\",\"ford gran torino (sw)\",\"plymouth satellite custom (sw)\",\"volvo 145e (sw)\",\"volkswagen 411 (sw)\",\"peugeot 504 (sw)\",\"renault 12 (sw)\",\"ford pinto (sw)\",\"datsun 510 (sw)\",\"toyouta corona mark ii (sw)\",\"dodge colt (sw)\",\"toyota corolla 1600 (sw)\",\"buick century 350\",\"amc matador\",\"chevrolet malibu\",\"ford gran torino\",\"dodge coronet custom\",\"mercury marquis brougham\",\"chevrolet caprice classic\",\"ford ltd\",\"plymouth fury gran sedan\",\"chrysler new yorker brougham\",\"buick electra 225 custom\",\"amc ambassador brougham\",\"plymouth valiant\",\"chevrolet nova custom\",\"amc hornet\",\"ford maverick\",\"plymouth duster\",\"volkswagen super beetle\",\"chevrolet impala\",\"ford country\",\"plymouth custom suburb\",\"oldsmobile vista cruiser\",\"amc gremlin\",\"toyota carina\",\"chevrolet vega\",\"datsun 610\",\"maxda rx3\",\"ford pinto\",\"mercury capri v6\",\"fiat 124 sport coupe\",\"chevrolet monte carlo s\",\"pontiac grand prix\",\"fiat 128\",\"opel manta\",\"audi 100ls\",\"volvo 144ea\",\"dodge dart custom\",\"saab 99le\",\"toyota mark ii\",\"oldsmobile omega\",\"plymouth duster\",\"amc hornet\",\"chevrolet nova\",\"datsun b210\",\"ford pinto\",\"toyota corolla 1200\",\"chevrolet vega\",\"chevrolet chevelle malibu classic\",\"amc matador\",\"plymouth satellite sebring\",\"ford gran torino\",\"buick century luxus (sw)\",\"dodge coronet custom (sw)\",\"ford gran torino (sw)\",\"amc matador (sw)\",\"audi fox\",\"volkswagen dasher\",\"opel manta\",\"toyota corona\",\"datsun 710\",\"dodge colt\",\"fiat 128\",\"fiat 124 tc\",\"honda civic\",\"subaru\",\"fiat x1.9\",\"plymouth valiant custom\",\"chevrolet nova\",\"mercury monarch\",\"ford maverick\",\"pontiac catalina\",\"chevrolet bel air\",\"plymouth grand fury\",\"ford ltd\",\"buick century\",\"chevroelt chevelle malibu\",\"amc matador\",\"plymouth fury\",\"buick skyhawk\",\"chevrolet monza 2+2\",\"ford mustang ii\",\"toyota corolla\",\"ford pinto\",\"amc gremlin\",\"pontiac astro\",\"toyota corona\",\"volkswagen dasher\",\"datsun 710\",\"ford pinto\",\"volkswagen rabbit\",\"amc pacer\",\"audi 100ls\",\"peugeot 504\",\"volvo 244dl\",\"saab 99le\",\"honda civic cvcc\",\"fiat 131\",\"opel 1900\",\"capri ii\",\"dodge colt\",\"renault 12tl\",\"chevrolet chevelle malibu classic\",\"dodge coronet brougham\",\"amc matador\",\"ford gran torino\",\"plymouth valiant\",\"chevrolet nova\",\"ford maverick\",\"amc hornet\",\"chevrolet chevette\",\"chevrolet woody\",\"vw rabbit\",\"honda civic\",\"dodge aspen se\",\"ford granada ghia\",\"pontiac ventura sj\",\"amc pacer d/l\",\"volkswagen rabbit\",\"datsun b-210\",\"toyota corolla\",\"ford pinto\",\"volvo 245\",\"plymouth volare premier v8\",\"peugeot 504\",\"toyota mark ii\",\"mercedes-benz 280s\",\"cadillac seville\",\"chevy c10\",\"ford f108\",\"dodge d100\",\"honda accord cvcc\",\"buick opel isuzu deluxe\",\"renault 5 gtl\",\"plymouth arrow gs\",\"datsun f-10 hatchback\",\"chevrolet caprice classic\",\"oldsmobile cutlass supreme\",\"dodge monaco brougham\",\"mercury cougar brougham\",\"chevrolet concours\",\"buick skylark\",\"plymouth volare custom\",\"ford granada\",\"pontiac grand prix lj\",\"chevrolet monte carlo landau\",\"chrysler cordoba\",\"ford thunderbird\",\"volkswagen rabbit custom\",\"pontiac sunbird coupe\",\"toyota corolla liftback\",\"ford mustang ii 2+2\",\"chevrolet chevette\",\"dodge colt m/m\",\"subaru dl\",\"volkswagen dasher\",\"datsun 810\",\"bmw 320i\",\"mazda rx-4\",\"volkswagen rabbit custom diesel\",\"ford fiesta\",\"mazda glc deluxe\",\"datsun b210 gx\",\"honda civic cvcc\",\"oldsmobile cutlass salon brougham\",\"dodge diplomat\",\"mercury monarch ghia\",\"pontiac phoenix lj\",\"chevrolet malibu\",\"ford fairmont (auto)\",\"ford fairmont (man)\",\"plymouth volare\",\"amc concord\",\"buick century special\",\"mercury zephyr\",\"dodge aspen\",\"amc concord d/l\",\"chevrolet monte carlo landau\",\"buick regal sport coupe (turbo)\",\"ford futura\",\"dodge magnum xe\",\"chevrolet chevette\",\"toyota corona\",\"datsun 510\",\"dodge omni\",\"toyota celica gt liftback\",\"plymouth sapporo\",\"oldsmobile starfire sx\",\"datsun 200-sx\",\"audi 5000\",\"volvo 264gl\",\"saab 99gle\",\"peugeot 604sl\",\"volkswagen scirocco\",\"honda accord lx\",\"pontiac lemans v6\",\"mercury zephyr 6\",\"ford fairmont 4\",\"amc concord dl 6\",\"dodge aspen 6\",\"chevrolet caprice classic\",\"ford ltd landau\",\"mercury grand marquis\",\"dodge st. regis\",\"buick estate wagon (sw)\",\"ford country squire (sw)\",\"chevrolet malibu classic (sw)\",\"chrysler lebaron town @ country (sw)\",\"vw rabbit custom\",\"maxda glc deluxe\",\"dodge colt hatchback custom\",\"amc spirit dl\",\"mercedes benz 300d\",\"cadillac eldorado\",\"peugeot 504\",\"oldsmobile cutlass salon brougham\",\"plymouth horizon\",\"plymouth horizon tc3\",\"datsun 210\",\"fiat strada custom\",\"buick skylark limited\",\"chevrolet citation\",\"oldsmobile omega brougham\",\"pontiac phoenix\",\"vw rabbit\",\"toyota corolla tercel\",\"chevrolet chevette\",\"datsun 310\",\"chevrolet citation\",\"ford fairmont\",\"amc concord\",\"dodge aspen\",\"audi 4000\",\"toyota corona liftback\",\"mazda 626\",\"datsun 510 hatchback\",\"toyota corolla\",\"mazda glc\",\"dodge colt\",\"datsun 210\",\"vw rabbit c (diesel)\",\"vw dasher (diesel)\",\"audi 5000s (diesel)\",\"mercedes-benz 240d\",\"honda civic 1500 gl\",\"subaru dl\",\"vokswagen rabbit\",\"datsun 280-zx\",\"mazda rx-7 gs\",\"triumph tr7 coupe\",\"honda accord\",\"plymouth reliant\",\"buick skylark\",\"dodge aries wagon (sw)\",\"chevrolet citation\",\"plymouth reliant\",\"toyota starlet\",\"plymouth champ\",\"honda civic 1300\",\"subaru\",\"datsun 210 mpg\",\"toyota tercel\",\"mazda glc 4\",\"plymouth horizon 4\",\"ford escort 4w\",\"ford escort 2h\",\"volkswagen jetta\",\"honda prelude\",\"toyota corolla\",\"datsun 200sx\",\"mazda 626\",\"peugeot 505s turbo diesel\",\"volvo diesel\",\"toyota cressida\",\"datsun 810 maxima\",\"buick century\",\"oldsmobile cutlass ls\",\"ford granada gl\",\"chrysler lebaron salon\",\"chevrolet cavalier\",\"chevrolet cavalier wagon\",\"chevrolet cavalier 2-door\",\"pontiac j2000 se hatchback\",\"dodge aries se\",\"pontiac phoenix\",\"ford fairmont futura\",\"volkswagen rabbit l\",\"mazda glc custom l\",\"mazda glc custom\",\"plymouth horizon miser\",\"mercury lynx l\",\"nissan stanza xe\",\"honda accord\",\"toyota corolla\",\"honda civic\",\"honda civic (auto)\",\"datsun 310 gx\",\"buick century limited\",\"oldsmobile cutlass ciera (diesel)\",\"chrysler lebaron medallion\",\"ford granada l\",\"toyota celica gt\",\"dodge charger 2.2\",\"chevrolet camaro\",\"ford mustang gl\",\"vw pickup\",\"dodge rampage\",\"ford ranger\",\"chevy s-10\"],\"origin\":[1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,1,1,3,2,2,2,2,2,1,1,1,1,1,3,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,3,3,2,1,3,1,2,1,1,1,1,1,1,1,1,1,1,1,3,1,1,1,1,2,2,2,2,1,3,3,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,3,1,3,3,1,1,2,1,1,2,2,2,2,1,2,3,1,1,1,1,3,1,3,1,1,1,1,1,1,1,1,1,2,2,2,3,3,1,2,2,3,3,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,1,1,3,2,3,1,2,1,2,2,2,2,3,2,2,1,1,2,1,1,1,1,1,1,1,1,1,1,2,3,1,1,1,1,2,3,3,1,2,1,2,3,2,1,1,1,1,3,1,2,1,3,1,1,1,1,1,1,1,1,1,1,1,1,2,1,3,1,1,1,3,2,3,2,3,2,1,3,3,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,1,3,1,1,3,2,2,2,2,2,3,1,1,1,1,1,1,1,1,1,1,1,1,1,2,3,1,1,2,1,2,1,1,1,3,2,1,1,1,1,2,3,1,3,1,1,1,1,2,3,3,3,3,3,1,3,2,2,2,2,3,3,2,3,3,2,3,1,1,1,1,1,3,1,3,3,3,3,3,1,1,1,2,3,3,3,3,2,2,3,3,1,1,1,1,1,1,1,1,1,1,1,2,3,3,1,1,3,3,3,3,3,3,1,1,1,1,3,1,1,1,2,1,1,1],\"weight\":[3504,3693,3436,3433,3449,4341,4354,4312,4425,3850,3563,3609,3761,3086,2372,2833,2774,2587,2130,1835,2672,2430,2375,2234,2648,4615,4376,4382,4732,2130,2264,2228,2634,3439,3329,3302,3288,4209,4464,4154,4096,4955,4746,5140,2962,2408,3282,3139,2220,2123,2074,2065,1773,1613,1834,1955,2278,2126,2254,2408,2226,4274,4385,4135,4129,3672,4633,4502,4456,4422,2330,3892,4098,4294,4077,2933,2511,2979,2189,2395,2288,2506,2164,2100,4100,3672,3988,4042,3777,4952,4464,4363,4237,4735,4951,3821,3121,3278,2945,3021,2904,1950,4997,4906,4654,4499,2789,2279,2401,2379,2124,2310,2472,2265,4082,4278,1867,2158,2582,2868,3399,2660,2807,3664,3102,2901,3336,1950,2451,1836,2542,3781,3632,3613,4141,4699,4457,4638,4257,2219,1963,2300,1649,2003,2125,2108,2246,2489,2391,2000,3264,3459,3432,3158,4668,4440,4498,4657,3907,3897,3730,3785,3039,3221,3169,2171,2639,2914,2592,2702,2223,2545,2984,1937,3211,2694,2957,2945,2671,1795,2464,2220,2572,2255,2202,4215,4190,3962,4215,3233,3353,3012,3085,2035,2164,1937,1795,3651,3574,3645,3193,1825,1990,2155,2565,3150,3940,3270,2930,3820,4380,4055,3870,3755,2045,2155,1825,2300,1945,3880,4060,4140,4295,3520,3425,3630,3525,4220,4165,4325,4335,1940,2740,2265,2755,2051,2075,1985,2190,2815,2600,2720,1985,1800,1985,2070,1800,3365,3735,3570,3535,3155,2965,2720,3430,3210,3380,3070,3620,3410,3425,3445,3205,4080,2155,2560,2300,2230,2515,2745,2855,2405,2830,3140,2795,3410,1990,2135,3245,2990,2890,3265,3360,3840,3725,3955,3830,4360,4054,3605,3940,1925,1975,1915,2670,3530,3900,3190,3420,2200,2150,2020,2130,2670,2595,2700,2556,2144,1968,2120,2019,2678,2870,3003,3381,2188,2711,2542,2434,2265,2110,2800,2110,2085,2335,2950,3250,1850,2145,1845,2910,2420,2500,2290,2490,2635,2620,2725,2385,1755,1875,1760,2065,1975,2050,1985,2215,2045,2380,2190,2210,2350,2615,2635,3230,3160,2900,2930,3415,3725,3060,3465,2605,2640,2395,2575,2525,2735,2865,1980,2025,1970,2125,2125,2160,2205,2245,1965,1965,1995,2945,3015,2585,2835,2665,2370,2950,2790,2130,2295,2625,2720],\"yr\":[70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82]},\"selected\":{\"id\":\"7d7b3400-2ebb-4d24-b2fd-ec8adad9fd5f\",\"type\":\"Selection\"},\"selection_policy\":{\"id\":\"7ea02afc-1091-412a-a282-de31097d5d8f\",\"type\":\"UnionRenderers\"}},\"id\":\"d974326b-33fb-4552-84c2-6177e9453f85\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"#1f77b4\"},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"size\":{\"field\":\"cyl\",\"units\":\"screen\"},\"x\":{\"field\":\"mpg\"},\"y\":{\"field\":\"displ\"}},\"id\":\"21c6e380-be49-4543-904a-cd03275d3334\",\"type\":\"Circle\"},{\"attributes\":{},\"id\":\"8caaa54b-8cf7-48f0-b378-995837cdc9a8\",\"type\":\"LinearScale\"},{\"attributes\":{\"data_source\":{\"id\":\"d974326b-33fb-4552-84c2-6177e9453f85\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"8c72aeb2-0523-4b89-a151-386237977740\",\"type\":\"Circle\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"c5698705-9054-4b7f-896e-e5f1b2493e75\",\"type\":\"Circle\"},\"selection_glyph\":null,\"view\":{\"id\":\"c2a956bb-7c75-44c6-84d1-b228560d0d83\",\"type\":\"CDSView\"}},\"id\":\"2e823c1e-4f2c-437c-b8e9-795610ec7354\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"fc997f8c-65d0-4946-b797-70aecafda14b\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_inspect\":\"auto\",\"active_multi\":null,\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"7055d611-7ffa-41d5-8073-8ffd5caee9fe\",\"type\":\"PanTool\"},{\"id\":\"bb251479-cd93-4715-b49a-1fb4d08036aa\",\"type\":\"WheelZoomTool\"},{\"id\":\"a432bd36-6556-4cc9-aa2a-9b95dac7b538\",\"type\":\"BoxZoomTool\"},{\"id\":\"70407e69-128d-4da0-a2a6-40289af24f5e\",\"type\":\"BoxSelectTool\"},{\"id\":\"e0e1c06e-c125-45b8-bf9c-9ad4f35247f2\",\"type\":\"LassoSelectTool\"}]},\"id\":\"188f6ae0-3bda-46b9-bcab-f1b9a57fa812\",\"type\":\"Toolbar\"},{\"attributes\":{},\"id\":\"29aef531-4694-4067-8508-6ae30049a81e\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"aca98ba7-6222-4652-9682-956845fe66dc\",\"type\":\"LinearScale\"},{\"attributes\":{\"bottom_units\":\"screen\",\"fill_alpha\":{\"value\":0.5},\"fill_color\":{\"value\":\"lightgrey\"},\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":{\"value\":1.0},\"line_color\":{\"value\":\"black\"},\"line_dash\":[4,4],\"line_width\":{\"value\":2},\"plot\":null,\"render_mode\":\"css\",\"right_units\":\"screen\",\"top_units\":\"screen\"},\"id\":\"fff0201a-09c1-4ebb-a738-716a20c9ed25\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"4c5e947f-7b93-4633-a72d-e917077268a2\",\"type\":\"LinearScale\"},{\"attributes\":{\"overlay\":{\"id\":\"fff0201a-09c1-4ebb-a738-716a20c9ed25\",\"type\":\"BoxAnnotation\"}},\"id\":\"a432bd36-6556-4cc9-aa2a-9b95dac7b538\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"bottom_units\":\"screen\",\"fill_alpha\":{\"value\":0.5},\"fill_color\":{\"value\":\"lightgrey\"},\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":{\"value\":1.0},\"line_color\":{\"value\":\"black\"},\"line_dash\":[4,4],\"line_width\":{\"value\":2},\"plot\":null,\"render_mode\":\"css\",\"right_units\":\"screen\",\"top_units\":\"screen\"},\"id\":\"49328a09-eab9-48eb-ad97-d1c61c9ae948\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"815ee431-91c4-4a81-a98a-2743d2e0364d\",\"type\":\"PanTool\"},{\"attributes\":{\"callback\":null},\"id\":\"725d9af6-a324-4627-8ec4-df02b38e5ba2\",\"type\":\"DataRange1d\"},{\"attributes\":{\"children\":[{\"id\":\"5ec13a8e-cbce-47cf-bc29-6af0b87685e2\",\"type\":\"Row\"}]},\"id\":\"5ca5d37a-32c6-4327-943a-4040d936d035\",\"type\":\"Column\"},{\"attributes\":{\"callback\":null,\"overlay\":{\"id\":\"4f72e8c0-f80b-463c-a6d1-67943de202f5\",\"type\":\"PolyAnnotation\"}},\"id\":\"1fde3b6a-4f8c-4fb1-8592-7c1127caf135\",\"type\":\"LassoSelectTool\"},{\"attributes\":{},\"id\":\"06792786-ab05-4c5e-b224-bb9d652e3f03\",\"type\":\"LinearScale\"},{\"attributes\":{\"callback\":null,\"overlay\":{\"id\":\"07653174-3d27-4cc5-a495-672ad6721b6e\",\"type\":\"BoxAnnotation\"}},\"id\":\"4df93f3b-5965-4df4-bb03-777f0190091b\",\"type\":\"BoxSelectTool\"},{\"attributes\":{},\"id\":\"07c613ba-492a-4f54-8412-a80b047da384\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"callback\":null,\"overlay\":{\"id\":\"f340a58b-d49e-4592-b463-e40a6505ea7b\",\"type\":\"PolyAnnotation\"}},\"id\":\"e0e1c06e-c125-45b8-bf9c-9ad4f35247f2\",\"type\":\"LassoSelectTool\"},{\"attributes\":{},\"id\":\"1e047b99-b684-4e1a-aa06-5738ceb79607\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"536d57be-f9c9-44dc-825a-4d80b9b42a0e\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"eb2f0e7a-d367-4d03-a9ee-e0b01200a9eb\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"bottom_units\":\"screen\",\"fill_alpha\":{\"value\":0.5},\"fill_color\":{\"value\":\"lightgrey\"},\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":{\"value\":1.0},\"line_color\":{\"value\":\"black\"},\"line_dash\":[4,4],\"line_width\":{\"value\":2},\"plot\":null,\"render_mode\":\"css\",\"right_units\":\"screen\",\"top_units\":\"screen\"},\"id\":\"cfeb145f-52db-4ae5-9a2a-0ec0d4561415\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"source\":{\"id\":\"d974326b-33fb-4552-84c2-6177e9453f85\",\"type\":\"ColumnDataSource\"}},\"id\":\"69d7b488-7878-44bf-b686-f828b2f69c15\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"46e47af1-f0b8-4b5c-8c9d-ef05aba18974\",\"type\":\"PanTool\"},{\"attributes\":{\"callback\":null,\"overlay\":{\"id\":\"ebd44b2c-d049-4f87-bfb9-61063bf56907\",\"type\":\"BoxAnnotation\"}},\"id\":\"70407e69-128d-4da0-a2a6-40289af24f5e\",\"type\":\"BoxSelectTool\"},{\"attributes\":{\"bottom_units\":\"screen\",\"fill_alpha\":{\"value\":0.5},\"fill_color\":{\"value\":\"lightgrey\"},\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":{\"value\":1.0},\"line_color\":{\"value\":\"black\"},\"line_dash\":[4,4],\"line_width\":{\"value\":2},\"plot\":null,\"render_mode\":\"css\",\"right_units\":\"screen\",\"top_units\":\"screen\"},\"id\":\"ebd44b2c-d049-4f87-bfb9-61063bf56907\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"callback\":null},\"id\":\"fd0a6cfc-5f64-4903-90a9-0ac2a13fbbb1\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"7055d611-7ffa-41d5-8073-8ffd5caee9fe\",\"type\":\"PanTool\"},{\"attributes\":{\"formatter\":{\"id\":\"1e047b99-b684-4e1a-aa06-5738ceb79607\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"5b45f574-705b-4dbe-aa1c-b754111dbc88\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"d2bd386f-c6d9-4f30-afa1-0022dae3bdb6\",\"type\":\"BasicTicker\"}},\"id\":\"12582152-7b9c-4b13-9438-11955f25af4f\",\"type\":\"LinearAxis\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.5},\"fill_color\":{\"value\":\"lightgrey\"},\"level\":\"overlay\",\"line_alpha\":{\"value\":1.0},\"line_color\":{\"value\":\"black\"},\"line_dash\":[4,4],\"line_width\":{\"value\":2},\"plot\":null,\"xs_units\":\"screen\",\"ys_units\":\"screen\"},\"id\":\"f340a58b-d49e-4592-b463-e40a6505ea7b\",\"type\":\"PolyAnnotation\"},{\"attributes\":{},\"id\":\"7ea02afc-1091-412a-a282-de31097d5d8f\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"below\":[{\"id\":\"2937c708-30bd-4325-9dd4-cd2a00ec7a1c\",\"type\":\"LinearAxis\"}],\"left\":[{\"id\":\"40befc8c-8064-4ae1-bd88-511ff3cb6dff\",\"type\":\"LinearAxis\"}],\"plot_height\":300,\"plot_width\":300,\"renderers\":[{\"id\":\"2937c708-30bd-4325-9dd4-cd2a00ec7a1c\",\"type\":\"LinearAxis\"},{\"id\":\"e2b43aec-7295-4ce1-99f0-c57bfc19d3ea\",\"type\":\"Grid\"},{\"id\":\"40befc8c-8064-4ae1-bd88-511ff3cb6dff\",\"type\":\"LinearAxis\"},{\"id\":\"a3ef9039-d5be-4058-95bc-a2f2d346218e\",\"type\":\"Grid\"},{\"id\":\"fff0201a-09c1-4ebb-a738-716a20c9ed25\",\"type\":\"BoxAnnotation\"},{\"id\":\"ebd44b2c-d049-4f87-bfb9-61063bf56907\",\"type\":\"BoxAnnotation\"},{\"id\":\"f340a58b-d49e-4592-b463-e40a6505ea7b\",\"type\":\"PolyAnnotation\"},{\"id\":\"2e823c1e-4f2c-437c-b8e9-795610ec7354\",\"type\":\"GlyphRenderer\"}],\"title\":{\"id\":\"921437aa-2c25-42cd-bfda-f52597c02cc5\",\"type\":\"Title\"},\"toolbar\":{\"id\":\"188f6ae0-3bda-46b9-bcab-f1b9a57fa812\",\"type\":\"Toolbar\"},\"toolbar_location\":null,\"x_range\":{\"id\":\"725d9af6-a324-4627-8ec4-df02b38e5ba2\",\"type\":\"DataRange1d\"},\"x_scale\":{\"id\":\"1ba0d6ea-29fd-423d-95f7-a4c8431e47f5\",\"type\":\"LinearScale\"},\"y_range\":{\"id\":\"25c6b4ba-eb58-4714-9cc0-95175ed36ebf\",\"type\":\"DataRange1d\"},\"y_scale\":{\"id\":\"1782d61c-8b69-4d37-bbfa-1d61c97b1fe7\",\"type\":\"LinearScale\"}},\"id\":\"3492d33f-6a3b-4723-ac3c-e81be9d5dbcb\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"fill_color\":{\"value\":\"blue\"},\"line_color\":{\"value\":\"blue\"},\"x\":{\"field\":\"yr\"},\"y\":{\"field\":\"mpg\"}},\"id\":\"00e94cb8-99c5-4345-95cc-31dcda019afc\",\"type\":\"Circle\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_inspect\":\"auto\",\"active_multi\":null,\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"815ee431-91c4-4a81-a98a-2743d2e0364d\",\"type\":\"PanTool\"},{\"id\":\"3a39e97d-41a1-4f95-9c74-6fa6613080bb\",\"type\":\"WheelZoomTool\"},{\"id\":\"50f4878c-0841-473a-b7a3-e5a8af0319e2\",\"type\":\"BoxZoomTool\"},{\"id\":\"23e320ad-9dd7-450c-9181-780842fbfffc\",\"type\":\"BoxSelectTool\"},{\"id\":\"eacfcb3f-8321-4ea9-93f6-707acc6dc073\",\"type\":\"LassoSelectTool\"}]},\"id\":\"97dc1320-8901-4f56-9f58-77937028c23b\",\"type\":\"Toolbar\"},{\"attributes\":{},\"id\":\"c257bb12-da72-426d-953f-e5f517815c19\",\"type\":\"BasicTicker\"},{\"attributes\":{\"callback\":null},\"id\":\"b51fc315-99c4-43d5-9125-8d97a12550b5\",\"type\":\"DataRange1d\"},{\"attributes\":{\"callback\":null,\"overlay\":{\"id\":\"662ac094-01cf-48d8-bf22-7bfec7210826\",\"type\":\"PolyAnnotation\"}},\"id\":\"eacfcb3f-8321-4ea9-93f6-707acc6dc073\",\"type\":\"LassoSelectTool\"},{\"attributes\":{},\"id\":\"3a39e97d-41a1-4f95-9c74-6fa6613080bb\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"callback\":null},\"id\":\"a3951156-7088-43d3-b550-5e113cc73ca1\",\"type\":\"DataRange1d\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"#1f77b4\"},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"field\":\"hp\"},\"y\":{\"field\":\"displ\"}},\"id\":\"c5698705-9054-4b7f-896e-e5f1b2493e75\",\"type\":\"Circle\"},{\"attributes\":{\"overlay\":{\"id\":\"e98124fe-e8b3-4e19-9439-ed4a1aee5e3b\",\"type\":\"BoxAnnotation\"}},\"id\":\"5df2e44a-78e3-4a99-95dc-4d00680979bd\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"plot\":{\"id\":\"108a9df1-c7dc-4dd8-93f4-6ef11a764c62\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"a6316d45-4b2d-47eb-be52-6cd3ab84e396\",\"type\":\"BasicTicker\"}},\"id\":\"7c437abe-0069-4d6e-8454-2bf5a61780b2\",\"type\":\"Grid\"},{\"attributes\":{\"source\":{\"id\":\"d974326b-33fb-4552-84c2-6177e9453f85\",\"type\":\"ColumnDataSource\"}},\"id\":\"c2a956bb-7c75-44c6-84d1-b228560d0d83\",\"type\":\"CDSView\"},{\"attributes\":{\"source\":{\"id\":\"d974326b-33fb-4552-84c2-6177e9453f85\",\"type\":\"ColumnDataSource\"}},\"id\":\"ed0e8b58-5d38-4492-9424-fe49a06d1978\",\"type\":\"CDSView\"}],\"root_ids\":[\"f45a8a50-7184-4c9f-a979-e5d77e1eecef\"]},\"title\":\"Bokeh Application\",\"version\":\"0.13.0\"}};\n", + " var render_items = [{\"docid\":\"ebe9aadd-28b2-446b-8080-884f2d424dfc\",\"roots\":{\"f45a8a50-7184-4c9f-a979-e5d77e1eecef\":\"e42df904-4250-4f64-a038-aa32c6fccee9\"}}];\n", + " root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n", + "\n", + " }\n", + " if (root.Bokeh !== undefined) {\n", + " embed_document(root);\n", + " } else {\n", + " var attempts = 0;\n", + " var timer = setInterval(function(root) {\n", + " if (root.Bokeh !== undefined) {\n", + " embed_document(root);\n", + " clearInterval(timer);\n", + " }\n", + " attempts++;\n", + " if (attempts > 100) {\n", + " console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\")\n", + " clearInterval(timer);\n", + " }\n", + " }, 10, root)\n", + " }\n", + "})(window);" + ], + "application/vnd.bokehjs_exec.v0+json": "" + }, + "metadata": { + "application/vnd.bokehjs_exec.v0+json": { + "id": "f45a8a50-7184-4c9f-a979-e5d77e1eecef" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "from bokeh.models import ColumnDataSource\n", + "from bokeh.layouts import gridplot\n", + "\n", + "source = ColumnDataSource(autompg)\n", + "\n", + "options = dict(plot_width=300, plot_height=300,\n", + " tools=\"pan,wheel_zoom,box_zoom,box_select,lasso_select\")\n", + "\n", + "p1 = figure(title=\"MPG by Year\", **options)\n", + "p1.circle(\"yr\", \"mpg\", color=\"blue\", source=source)\n", + "\n", + "p2 = figure(title=\"HP vs. Displacement\", **options)\n", + "p2.circle(\"hp\", \"displ\", color=\"green\", source=source)\n", + "\n", + "p3 = figure(title=\"MPG vs. Displacement\", **options)\n", + "p3.circle(\"mpg\", \"displ\", size=\"cyl\", line_color=\"red\", fill_color=None, source=source)\n", + "\n", + "p = gridplot([[ p1, p2, p3]], toolbar_location=\"right\")\n", + "\n", + "show(p)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You can read more about the `ColumnDataSource` and other Bokeh data structures in [Providing Data for Plots and Tables](https://bokeh.pydata.org/en/latest/docs/user_guide/data.html)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Standalone HTML\n", + "\n", + "In addition to working well with the Notebook, Bokeh can also save plots out into their own HTML files. Here is the bar plot example from above, but saving into its own standalone file.\n", + "\n", + "Now when we call `show()`, a new browser tab is also opened with the plot. If we just wanted to save the file, we would use `save()` instead." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/javascript": [ + "(function(root) {\n", + " function embed_document(root) {\n", + " \n", + " var docs_json = {\"5427e26a-e4a6-41ff-906d-a3dc6a245c5a\":{\"roots\":{\"references\":[{\"attributes\":{},\"id\":\"50720095-76e4-4fcd-a2db-bbe8e833042a\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"bcbe9d6c-f342-4892-be26-c0bd9d8b1cb6\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"#1f77b4\"},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"size\":{\"units\":\"screen\",\"value\":10},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2cc15dbc-ed1f-4da4-b745-af3261710014\",\"type\":\"Circle\"},{\"attributes\":{},\"id\":\"35ab4b7e-a9e4-4d32-a40d-72aef8994e16\",\"type\":\"Selection\"},{\"attributes\":{\"data_source\":{\"id\":\"9fd95dff-4697-4785-a322-deb3e705dd9e\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"bdd7fa94-d58a-4294-9359-9de50f5f46d6\",\"type\":\"Circle\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"2cc15dbc-ed1f-4da4-b745-af3261710014\",\"type\":\"Circle\"},\"selection_glyph\":null,\"view\":{\"id\":\"e9ae4b2a-ea53-4d2d-99d8-5aba0155b946\",\"type\":\"CDSView\"}},\"id\":\"c45d567b-5ea5-45b6-ba04-3ff122c4287f\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.3},\"fill_color\":{\"value\":\"red\"},\"line_alpha\":{\"value\":0.3},\"line_color\":{\"value\":\"red\"},\"size\":{\"units\":\"screen\",\"value\":10},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"bdd7fa94-d58a-4294-9359-9de50f5f46d6\",\"type\":\"Circle\"},{\"attributes\":{\"formatter\":{\"id\":\"01df2bd5-9c83-43bb-a1ea-2bf506779be0\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"71a19538-4460-4b13-b454-105dc614f5b1\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"667d7931-314d-4386-8a51-3645b0dc0657\",\"type\":\"BasicTicker\"}},\"id\":\"e9282805-efa2-49fb-9203-f024d2fe5b91\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"e33217de-57f8-4ba0-acf3-421c174eb996\",\"type\":\"BasicTicker\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"#1f77b4\"},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"size\":{\"units\":\"screen\",\"value\":10},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"fcd8509d-5b36-4c79-a35c-bee645cf7bd4\",\"type\":\"Triangle\"},{\"attributes\":{\"plot\":{\"id\":\"71a19538-4460-4b13-b454-105dc614f5b1\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"e33217de-57f8-4ba0-acf3-421c174eb996\",\"type\":\"BasicTicker\"}},\"id\":\"2939b445-ba12-4970-9ebc-6a6570b4ed3b\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"126600f1-31f2-4be0-a049-1093a43597b1\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"formatter\":{\"id\":\"bcbe9d6c-f342-4892-be26-c0bd9d8b1cb6\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"71a19538-4460-4b13-b454-105dc614f5b1\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"e33217de-57f8-4ba0-acf3-421c174eb996\",\"type\":\"BasicTicker\"}},\"id\":\"8ceeafc1-aa96-4a43-8c03-3a1d051abab0\",\"type\":\"LinearAxis\"},{\"attributes\":{\"items\":[{\"id\":\"a538257c-560a-43c0-9411-f31e156f3a7d\",\"type\":\"LegendItem\"},{\"id\":\"e3da4bc3-3c63-48c3-873f-3261fbc8d4da\",\"type\":\"LegendItem\"},{\"id\":\"e342940a-2687-4f8f-80d5-b7aa45b4ee25\",\"type\":\"LegendItem\"}],\"location\":\"top_left\",\"plot\":{\"id\":\"71a19538-4460-4b13-b454-105dc614f5b1\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"ddd264a6-3661-4200-be79-29f5bba52c14\",\"type\":\"Legend\"},{\"attributes\":{\"callback\":null,\"data\":{\"x\":[70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,74,74,74,74,74,74,74,74,74,74,74,74,74,74,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,80,80,80,80,80,80,81,81,81,81,81,81,81,81,81,81,81,81,81,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82],\"y\":{\"__ndarray__\":\"AAAAAAAAMkAAAAAAAAAuQAAAAAAAADJAAAAAAAAAMEAAAAAAAAAxQAAAAAAAAC5AAAAAAAAALEAAAAAAAAAsQAAAAAAAACxAAAAAAAAALkAAAAAAAAAuQAAAAAAAACxAAAAAAAAALkAAAAAAAAAsQAAAAAAAADZAAAAAAAAAMkAAAAAAAAA1QAAAAAAAADVAAAAAAAAAJEAAAAAAAAAkQAAAAAAAACZAAAAAAAAAIkAAAAAAAAA8QAAAAAAAADNAAAAAAAAAMEAAAAAAAAAxQAAAAAAAADNAAAAAAAAAMkAAAAAAAAAsQAAAAAAAACxAAAAAAAAALEAAAAAAAAAsQAAAAAAAAChAAAAAAAAAKkAAAAAAAAAqQAAAAAAAADJAAAAAAAAANkAAAAAAAAAzQAAAAAAAADJAAAAAAAAAN0AAAAAAAAA6QAAAAAAAADlAAAAAAAAANEAAAAAAAAA1QAAAAAAAACpAAAAAAAAALEAAAAAAAAAuQAAAAAAAACxAAAAAAAAAMUAAAAAAAAAmQAAAAAAAACpAAAAAAAAAKEAAAAAAAAAqQAAAAAAAAC5AAAAAAAAAKkAAAAAAAAAqQAAAAAAAACxAAAAAAAAANkAAAAAAAAA8QAAAAAAAACpAAAAAAAAALEAAAAAAAAAqQAAAAAAAACxAAAAAAAAALkAAAAAAAAAoQAAAAAAAACpAAAAAAAAAKkAAAAAAAAAsQAAAAAAAACpAAAAAAAAAKEAAAAAAAAAqQAAAAAAAADJAAAAAAAAAMEAAAAAAAAAyQAAAAAAAADJAAAAAAAAAN0AAAAAAAAAmQAAAAAAAAChAAAAAAAAAKkAAAAAAAAAoQAAAAAAAADJAAAAAAAAANUAAAAAAAAAzQAAAAAAAADVAAAAAAAAALkAAAAAAAAAwQAAAAAAAAC5AAAAAAAAAJkAAAAAAAAA0QAAAAAAAADNAAAAAAAAALkAAAAAAAAA6QAAAAAAAADlAAAAAAAAAMEAAAAAAAAAwQAAAAAAAADJAAAAAAAAAMEAAAAAAAAAqQAAAAAAAACxAAAAAAAAALEAAAAAAAAAsQAAAAAAAADxAAAAAAAAAM0AAAAAAAAAyQAAAAAAAAC5AAAAAAAAALkAAAAAAAAAwQAAAAAAAAC5AAAAAAAAAMEAAAAAAAAAsQAAAAAAAADFAAAAAAAAAMEAAAAAAAAAuQAAAAAAAADJAAAAAAAAANUAAAAAAAAA0QAAAAAAAACpAAAAAAAAAN0AAAAAAAAA0QAAAAAAAADdAAAAAAAAAMkAAAAAAAAAzQAAAAAAAADlAAAAAAAAAOkAAAAAAAIAxQAAAAAAAADBAAAAAAAAAL0AAAAAAAAAtQAAAAAAAADZAAAAAAAAANkAAAAAAAAA4QAAAAAAAgDZAAAAAAAAAPUAAAAAAAIA4QAAAAAAAADRAAAAAAAAAMkAAAAAAAIAyQAAAAAAAgDFAAAAAAACAOkAAAAAAAAAqQAAAAAAAgDBAAAAAAAAAKkAAAAAAAAAqQAAAAAAAACpAAAAAAAAAPkAAAAAAAIA5QAAAAAAAgDFAAAAAAAAAMUAAAAAAAAAvQAAAAAAAAC5AAAAAAACAMUAAAAAAAIA0QAAAAAAAADNAAAAAAACAMkAAAAAAAAAwQAAAAAAAAC9AAAAAAAAAL0AAAAAAAAAwQAAAAAAAgDhAAAAAAACAOUAAAAAAAIA+QAAAAAAAwEBAzczMzMwMQkBmZmZmZuYzQGZmZmZmZjNAMzMzMzMzNEAzMzMzMzMzQAAAAAAAgDRAMzMzMzMzNECamZmZmRk5QAAAAAAAgDRAZmZmZmZmM0CamZmZmZk0QM3MzMzMzDRAmpmZmZmZMkCamZmZmRkyQDMzMzMzMzNAMzMzMzOzMUCamZmZmRkyQAAAAAAAgDFAAAAAAAAAPkBmZmZmZuY+QDMzMzMzMzdAzczMzMzMN0AAAAAAAIA1QM3MzMzMzDNAzczMzMxMNkAzMzMzMzM0QJqZmZmZmTRAAAAAAAAAMUCamZmZmZkxQAAAAAAAgDBAMzMzMzMzMkBmZmZmZuYwQAAAAAAAAC9AMzMzMzMzM0AAAAAAAIAyQJqZmZmZ2UFAZmZmZmZmO0AAAAAAAAA3QGZmZmZm5jdAmpmZmZkZQUAAAAAAAEBBQGZmZmZmZjxAzczMzMzMPEDNzMzMzMw6QAAAAAAAwEBAzczMzMwMQEAAAAAAAAA8QGZmZmZmZjpAzczMzMxMOECamZmZmRkzQGZmZmZm5jtAMzMzMzMzO0CamZmZmZk6QM3MzMzMzDlAAAAAAACAN0AAAAAAAAA+QAAAAAAAgENAmpmZmZlZQUAzMzMzMzNBQGZmZmZm5j1AZmZmZmZmNkCamZmZmZk6QDMzMzMzMzRAmpmZmZmZMUAAAAAAAAA8QAAAAAAAADtAAAAAAAAAQUAAAAAAAAA/QAAAAAAAAD1AAAAAAAAAO0AAAAAAAAA4QAAAAAAAAENAAAAAAAAAQkAAAAAAAAA5QAAAAAAAAENAAAAAAAAAOkAAAAAAAAA2QAAAAAAAAEJAAAAAAAAAO0AAAAAAAAA7QAAAAAAAAEBAAAAAAAAAPEAAAAAAAAA/QA==\",\"dtype\":\"float64\",\"shape\":[245]}},\"selected\":{\"id\":\"f0529a2a-708e-4a56-9297-3694de8a3a1d\",\"type\":\"Selection\"},\"selection_policy\":{\"id\":\"e053a031-0a38-4a61-9030-f96b24ca4963\",\"type\":\"UnionRenderers\"}},\"id\":\"e4eeaf41-a25c-4b06-905a-d653b7dfad52\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"cbae3a65-84c3-4950-9945-9ec0b6603ef5\",\"type\":\"LinearScale\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.3},\"fill_color\":{\"value\":\"blue\"},\"line_alpha\":{\"value\":0.3},\"line_color\":{\"value\":\"blue\"},\"size\":{\"units\":\"screen\",\"value\":10},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"4f8dfcae-db23-42b6-8fae-32707653e16b\",\"type\":\"Triangle\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_inspect\":\"auto\",\"active_multi\":null,\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"0f46d072-693f-4133-8bf2-e1a46cb19cc5\",\"type\":\"PanTool\"},{\"id\":\"1da0aa3e-a998-4dc5-8285-2a56de67bf7e\",\"type\":\"WheelZoomTool\"},{\"id\":\"43000ba9-d331-48a7-89a9-562b39bb01a4\",\"type\":\"BoxZoomTool\"},{\"id\":\"e9280116-49c5-4a17-ae34-c4390b37fa93\",\"type\":\"SaveTool\"},{\"id\":\"77fda508-6267-4f67-8af7-c1305356a905\",\"type\":\"ResetTool\"},{\"id\":\"a2e39225-ab78-4d15-a416-e7fe9272c804\",\"type\":\"HelpTool\"}]},\"id\":\"153e7907-62d1-4dfa-aeab-108468ee1867\",\"type\":\"Toolbar\"},{\"attributes\":{\"data_source\":{\"id\":\"e4eeaf41-a25c-4b06-905a-d653b7dfad52\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"4f8dfcae-db23-42b6-8fae-32707653e16b\",\"type\":\"Triangle\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"fcd8509d-5b36-4c79-a35c-bee645cf7bd4\",\"type\":\"Triangle\"},\"selection_glyph\":null,\"view\":{\"id\":\"18f09358-0616-44de-9547-7f13de100705\",\"type\":\"CDSView\"}},\"id\":\"c31d1647-0065-403a-86d2-c6fd84319546\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"data_source\":{\"id\":\"62e11c3c-bd8d-49d2-b2c5-b22cd11f48b5\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"dc81abb5-6e19-4e9d-b618-c99b1d2e75b5\",\"type\":\"VBar\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"5926eab8-ab12-438e-a458-cc75452e3b2c\",\"type\":\"VBar\"},\"selection_glyph\":null,\"view\":{\"id\":\"735ada3a-25fe-4925-8767-df1231597423\",\"type\":\"CDSView\"}},\"id\":\"32ec3271-9e08-4469-a4da-de79d584d673\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"callback\":null,\"data\":{\"bottom\":{\"__ndarray__\":\"gvFgx2qzKECcKci59t4sQJZdRzm5jipAzvVtn6zMKECki7kXNjswQIpnc6D2pi5ApAV4qVNeL0DtFQi6+rIwQBxLQL6+KTFAWBwW2YNMMkBnDzEy+Oo6QAq856zmjDhAfzfsSXnEOkA=\",\"dtype\":\"float64\",\"shape\":[13]},\"top\":{\"__ndarray__\":\"55jlF2UHN0DAzlQxaMk7QBEIyj5aJjhATTh849zMNUD6TNCFok49QMPUTjgNNTlA1KLp0Ht2O0AT6vdFBQ0+QNr+XjaL9T5AVt48aCfjP0AojYptQ1hEQPSsO6IX6UFAQOQJW8OdQkA=\",\"dtype\":\"float64\",\"shape\":[13]},\"x\":[70,71,72,73,74,75,76,77,78,79,80,81,82]},\"selected\":{\"id\":\"35ab4b7e-a9e4-4d32-a40d-72aef8994e16\",\"type\":\"Selection\"},\"selection_policy\":{\"id\":\"126600f1-31f2-4be0-a049-1093a43597b1\",\"type\":\"UnionRenderers\"}},\"id\":\"62e11c3c-bd8d-49d2-b2c5-b22cd11f48b5\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"source\":{\"id\":\"9fd95dff-4697-4785-a322-deb3e705dd9e\",\"type\":\"ColumnDataSource\"}},\"id\":\"e9ae4b2a-ea53-4d2d-99d8-5aba0155b946\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"77fda508-6267-4f67-8af7-c1305356a905\",\"type\":\"ResetTool\"},{\"attributes\":{\"callback\":null},\"id\":\"078018d3-ba04-4202-a4fc-c8890222abf4\",\"type\":\"DataRange1d\"},{\"attributes\":{\"label\":{\"value\":\"MPG 1 stddev\"},\"renderers\":[{\"id\":\"32ec3271-9e08-4469-a4da-de79d584d673\",\"type\":\"GlyphRenderer\"}]},\"id\":\"a538257c-560a-43c0-9411-f31e156f3a7d\",\"type\":\"LegendItem\"},{\"attributes\":{\"plot\":null,\"text\":\"MPG by Year (Japan and US)\"},\"id\":\"c9d1dfb7-2138-4ddf-8d9b-76ab35a8e67a\",\"type\":\"Title\"},{\"attributes\":{\"label\":{\"value\":\"Japanese\"},\"renderers\":[{\"id\":\"c45d567b-5ea5-45b6-ba04-3ff122c4287f\",\"type\":\"GlyphRenderer\"}]},\"id\":\"e3da4bc3-3c63-48c3-873f-3261fbc8d4da\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"a2e39225-ab78-4d15-a416-e7fe9272c804\",\"type\":\"HelpTool\"},{\"attributes\":{\"bottom\":{\"field\":\"bottom\"},\"fill_alpha\":{\"value\":0.2},\"fill_color\":{\"value\":\"#1f77b4\"},\"line_color\":{\"value\":null},\"top\":{\"field\":\"top\"},\"width\":{\"value\":0.8},\"x\":{\"field\":\"x\"}},\"id\":\"dc81abb5-6e19-4e9d-b618-c99b1d2e75b5\",\"type\":\"VBar\"},{\"attributes\":{},\"id\":\"9d73b9a0-4404-4282-b4a0-27a97c54462a\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"e9280116-49c5-4a17-ae34-c4390b37fa93\",\"type\":\"SaveTool\"},{\"attributes\":{\"callback\":null},\"id\":\"ae9e23f3-3b99-4e5d-8c8c-181dd8d6bd46\",\"type\":\"DataRange1d\"},{\"attributes\":{\"overlay\":{\"id\":\"55ace5d7-8b62-4c93-9548-1a73779dc98e\",\"type\":\"BoxAnnotation\"}},\"id\":\"43000ba9-d331-48a7-89a9-562b39bb01a4\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"f0529a2a-708e-4a56-9297-3694de8a3a1d\",\"type\":\"Selection\"},{\"attributes\":{\"below\":[{\"id\":\"8ceeafc1-aa96-4a43-8c03-3a1d051abab0\",\"type\":\"LinearAxis\"}],\"left\":[{\"id\":\"e9282805-efa2-49fb-9203-f024d2fe5b91\",\"type\":\"LinearAxis\"}],\"renderers\":[{\"id\":\"8ceeafc1-aa96-4a43-8c03-3a1d051abab0\",\"type\":\"LinearAxis\"},{\"id\":\"2939b445-ba12-4970-9ebc-6a6570b4ed3b\",\"type\":\"Grid\"},{\"id\":\"e9282805-efa2-49fb-9203-f024d2fe5b91\",\"type\":\"LinearAxis\"},{\"id\":\"15532099-0176-4614-a98e-469a5b3dd6ef\",\"type\":\"Grid\"},{\"id\":\"55ace5d7-8b62-4c93-9548-1a73779dc98e\",\"type\":\"BoxAnnotation\"},{\"id\":\"ddd264a6-3661-4200-be79-29f5bba52c14\",\"type\":\"Legend\"},{\"id\":\"32ec3271-9e08-4469-a4da-de79d584d673\",\"type\":\"GlyphRenderer\"},{\"id\":\"c45d567b-5ea5-45b6-ba04-3ff122c4287f\",\"type\":\"GlyphRenderer\"},{\"id\":\"c31d1647-0065-403a-86d2-c6fd84319546\",\"type\":\"GlyphRenderer\"}],\"title\":{\"id\":\"c9d1dfb7-2138-4ddf-8d9b-76ab35a8e67a\",\"type\":\"Title\"},\"toolbar\":{\"id\":\"153e7907-62d1-4dfa-aeab-108468ee1867\",\"type\":\"Toolbar\"},\"x_range\":{\"id\":\"ae9e23f3-3b99-4e5d-8c8c-181dd8d6bd46\",\"type\":\"DataRange1d\"},\"x_scale\":{\"id\":\"50720095-76e4-4fcd-a2db-bbe8e833042a\",\"type\":\"LinearScale\"},\"y_range\":{\"id\":\"078018d3-ba04-4202-a4fc-c8890222abf4\",\"type\":\"DataRange1d\"},\"y_scale\":{\"id\":\"cbae3a65-84c3-4950-9945-9ec0b6603ef5\",\"type\":\"LinearScale\"}},\"id\":\"71a19538-4460-4b13-b454-105dc614f5b1\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{},\"id\":\"01df2bd5-9c83-43bb-a1ea-2bf506779be0\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"callback\":null,\"data\":{\"x\":[70,70,71,71,71,71,72,72,72,72,72,73,73,73,73,74,74,74,74,74,74,75,75,75,75,76,76,76,76,77,77,77,77,77,77,78,78,78,78,78,78,78,78,79,79,80,80,80,80,80,80,80,80,80,80,80,80,80,81,81,81,81,81,81,81,81,81,81,81,81,82,82,82,82,82,82,82,82,82],\"y\":{\"__ndarray__\":\"AAAAAAAAOEAAAAAAAAA7QAAAAAAAADtAAAAAAAAAOUAAAAAAAAA/QAAAAAAAgEFAAAAAAAAAOEAAAAAAAAAzQAAAAAAAADxAAAAAAAAAN0AAAAAAAAA7QAAAAAAAADRAAAAAAAAANkAAAAAAAAAyQAAAAAAAADRAAAAAAAAAP0AAAAAAAABAQAAAAAAAAD9AAAAAAAAAQEAAAAAAAAA4QAAAAAAAADpAAAAAAAAAPUAAAAAAAAA4QAAAAAAAADhAAAAAAACAQEAAAAAAAIBAQAAAAAAAAEBAAAAAAAAAPEAAAAAAAAAzQAAAAAAAgD9AAAAAAADAQEAAAAAAAAA6QAAAAAAAAD5AAAAAAAAANkAAAAAAAIA1QGZmZmZmZkBAMzMzMzOzQ0DNzMzMzAxCQAAAAAAAgDtAMzMzMzMzO0CamZmZmRk1QGZmZmZm5jdAAAAAAACAPUDNzMzMzAxBQM3MzMzMzD9AzczMzMwMQ0CamZmZmZlCQM3MzMzMzD1AzczMzMxMP0AAAAAAAIBCQJqZmZmZGUBAzczMzMxMR0BmZmZmZmZEQM3MzMzMTEZAZmZmZmbmQECamZmZmVlAQDMzMzMzszdAMzMzMzMzQEDNzMzMzIxDQM3MzMzMjEFAZmZmZmYmQEAAAAAAAIBCQJqZmZmZ2UJAzczMzMwMQUCamZmZmdlAQDMzMzMzM0BAMzMzMzNzQECamZmZmZk/QGZmZmZmZjlAMzMzMzMzOEAAAAAAAIBCQAAAAAAAAD9AAAAAAAAAQkAAAAAAAABCQAAAAAAAAEFAAAAAAAAAQ0AAAAAAAABAQAAAAAAAAENAAAAAAAAAQEA=\",\"dtype\":\"float64\",\"shape\":[79]}},\"selected\":{\"id\":\"9d73b9a0-4404-4282-b4a0-27a97c54462a\",\"type\":\"Selection\"},\"selection_policy\":{\"id\":\"4a166713-e296-41f6-a80b-5d6a1074d38b\",\"type\":\"UnionRenderers\"}},\"id\":\"9fd95dff-4697-4785-a322-deb3e705dd9e\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"bottom_units\":\"screen\",\"fill_alpha\":{\"value\":0.5},\"fill_color\":{\"value\":\"lightgrey\"},\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":{\"value\":1.0},\"line_color\":{\"value\":\"black\"},\"line_dash\":[4,4],\"line_width\":{\"value\":2},\"plot\":null,\"render_mode\":\"css\",\"right_units\":\"screen\",\"top_units\":\"screen\"},\"id\":\"55ace5d7-8b62-4c93-9548-1a73779dc98e\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"e053a031-0a38-4a61-9030-f96b24ca4963\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"4a166713-e296-41f6-a80b-5d6a1074d38b\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"source\":{\"id\":\"62e11c3c-bd8d-49d2-b2c5-b22cd11f48b5\",\"type\":\"ColumnDataSource\"}},\"id\":\"735ada3a-25fe-4925-8767-df1231597423\",\"type\":\"CDSView\"},{\"attributes\":{\"source\":{\"id\":\"e4eeaf41-a25c-4b06-905a-d653b7dfad52\",\"type\":\"ColumnDataSource\"}},\"id\":\"18f09358-0616-44de-9547-7f13de100705\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"1da0aa3e-a998-4dc5-8285-2a56de67bf7e\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"dimension\":1,\"plot\":{\"id\":\"71a19538-4460-4b13-b454-105dc614f5b1\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"667d7931-314d-4386-8a51-3645b0dc0657\",\"type\":\"BasicTicker\"}},\"id\":\"15532099-0176-4614-a98e-469a5b3dd6ef\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"667d7931-314d-4386-8a51-3645b0dc0657\",\"type\":\"BasicTicker\"},{\"attributes\":{\"label\":{\"value\":\"American\"},\"renderers\":[{\"id\":\"c31d1647-0065-403a-86d2-c6fd84319546\",\"type\":\"GlyphRenderer\"}]},\"id\":\"e342940a-2687-4f8f-80d5-b7aa45b4ee25\",\"type\":\"LegendItem\"},{\"attributes\":{\"bottom\":{\"field\":\"bottom\"},\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"#1f77b4\"},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"top\":{\"field\":\"top\"},\"width\":{\"value\":0.8},\"x\":{\"field\":\"x\"}},\"id\":\"5926eab8-ab12-438e-a458-cc75452e3b2c\",\"type\":\"VBar\"},{\"attributes\":{},\"id\":\"0f46d072-693f-4133-8bf2-e1a46cb19cc5\",\"type\":\"PanTool\"}],\"root_ids\":[\"71a19538-4460-4b13-b454-105dc614f5b1\"]},\"title\":\"Bokeh Application\",\"version\":\"0.13.0\"}};\n", + " var render_items = [{\"docid\":\"5427e26a-e4a6-41ff-906d-a3dc6a245c5a\",\"roots\":{\"71a19538-4460-4b13-b454-105dc614f5b1\":\"a3fbb3bd-5e38-4110-bb97-3dccf780acf7\"}}];\n", + " root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n", + "\n", + " }\n", + " if (root.Bokeh !== undefined) {\n", + " embed_document(root);\n", + " } else {\n", + " var attempts = 0;\n", + " var timer = setInterval(function(root) {\n", + " if (root.Bokeh !== undefined) {\n", + " embed_document(root);\n", + " clearInterval(timer);\n", + " }\n", + " attempts++;\n", + " if (attempts > 100) {\n", + " console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\")\n", + " clearInterval(timer);\n", + " }\n", + " }, 10, root)\n", + " }\n", + "})(window);" + ], + "application/vnd.bokehjs_exec.v0+json": "" + }, + "metadata": { + "application/vnd.bokehjs_exec.v0+json": { + "id": "71a19538-4460-4b13-b454-105dc614f5b1" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "from bokeh.plotting import output_file\n", + "\n", + "output_file(\"barplot.html\")\n", + "\n", + "p = figure(title=\"MPG by Year (Japan and US)\")\n", + "\n", + "p.vbar(x=years, bottom=avg-std, top=avg+std, width=0.8, \n", + " fill_alpha=0.2, line_color=None, legend=\"MPG 1 stddev\")\n", + "\n", + "p.circle(x=japanese[\"yr\"], y=japanese[\"mpg\"], size=10, alpha=0.3,\n", + " color=\"red\", legend=\"Japanese\")\n", + "\n", + "p.triangle(x=american[\"yr\"], y=american[\"mpg\"], size=10, alpha=0.3,\n", + " color=\"blue\", legend=\"American\")\n", + "\n", + "p.legend.location = \"top_left\"\n", + "show(p)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Bokeh Applications\n", + "\n", + "Bokeh also has a server component that can be used to build interactive web applications that easily connect the powerful constellation of PyData tools to sophisticated Bokeh visualizations. The Bokeh server can be used to:\n", + "\n", + "* respond to UI and tool events generated in a browser with computations or queries using the full power of python\n", + "* automatically push server-side updates to the UI (i.e. widgets or plots in a browser)\n", + "* use periodic, timeout, and asynchronous callbacks to drive streaming updates\n", + "\n", + "The cell below shows a simple deployed Bokeh application from https://demo.bokehplots.com embedded in an IFrame. Scrub the sliders or change the title to see the plot update. " + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " " + ], + "text/plain": [ + "" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from IPython.display import IFrame\n", + "IFrame('https://demo.bokehplots.com/apps/sliders/', width=900, height=410)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Click on any of the thumbnails below to launch other live Bokeh applications.\n", + "\n", + "
\n", + "\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "\n", + "
\n", + "\n", + "Find more details and information about developing and deploying Bokeh server applications in the User's Guide chapter [Running a Bokeh Server](https://bokeh.pydata.org/en/latest/docs/user_guide/server.html)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## BokehJS\n", + "\n", + "At its core, Bokeh consists of a Javascript library, [BokehJS](https://github.com/bokeh/bokeh/tree/master/bokehjs), and a Python binding which provides classes and objects that ultimately generate a JSON representation of the plot structure.\n", + "\n", + "You can read more about design and usage in the [Developing with JavaScript](https://bokeh.pydata.org/en/latest/docs/user_guide/bokehjs.html) section of the Bokeh User's Guide." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## More Information\n", + "\n", + "Find more details and information at the resources listed below:\n", + "\n", + "*Documentation:* https://bokeh.pydata.org/en/latest\n", + "\n", + "*GitHub:* https://github.com/bokeh/bokeh\n", + "\n", + "*Mailing list:* [bokeh@anaconda.com](mailto:bokeh@anaconda.com)\n", + "\n", + "*Gitter Chat:* https://gitter.im/bokeh/bokeh\n", + "\n", + "Be sure to follow us on Twitter [@bokehplots](http://twitter.com/BokehPlots>) and on [Youtube](https://www.youtube.com/c/Bokehplots)!\n", + "\n", + "" + ] + }, + { + "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.5.2" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/0_numpy_matplotlib_scipy_sympy/example.png b/1_numpy_matplotlib_scipy_sympy/example.png similarity index 100% rename from 0_numpy_matplotlib_scipy_sympy/example.png rename to 1_numpy_matplotlib_scipy_sympy/example.png diff --git a/0_numpy_matplotlib_scipy_sympy/ipython_notebook.ipynb b/1_numpy_matplotlib_scipy_sympy/ipython_notebook.ipynb similarity index 100% rename from 0_numpy_matplotlib_scipy_sympy/ipython_notebook.ipynb rename to 1_numpy_matplotlib_scipy_sympy/ipython_notebook.ipynb diff --git a/0_numpy_matplotlib_scipy_sympy/matplotlib_ani.ipynb b/1_numpy_matplotlib_scipy_sympy/matplotlib_ani.ipynb similarity index 100% rename from 0_numpy_matplotlib_scipy_sympy/matplotlib_ani.ipynb rename to 1_numpy_matplotlib_scipy_sympy/matplotlib_ani.ipynb diff --git a/0_numpy_matplotlib_scipy_sympy/matplotlib_ani.py b/1_numpy_matplotlib_scipy_sympy/matplotlib_ani.py similarity index 100% rename from 0_numpy_matplotlib_scipy_sympy/matplotlib_ani.py rename to 1_numpy_matplotlib_scipy_sympy/matplotlib_ani.py diff --git a/0_numpy_matplotlib_scipy_sympy/matplotlib_full.ipynb b/1_numpy_matplotlib_scipy_sympy/matplotlib_full.ipynb similarity index 100% rename from 0_numpy_matplotlib_scipy_sympy/matplotlib_full.ipynb rename to 1_numpy_matplotlib_scipy_sympy/matplotlib_full.ipynb diff --git a/0_numpy_matplotlib_scipy_sympy/matplotlib_simple_tutorial.ipynb b/1_numpy_matplotlib_scipy_sympy/matplotlib_simple_tutorial.ipynb similarity index 100% rename from 0_numpy_matplotlib_scipy_sympy/matplotlib_simple_tutorial.ipynb rename to 1_numpy_matplotlib_scipy_sympy/matplotlib_simple_tutorial.ipynb diff --git a/0_numpy_matplotlib_scipy_sympy/matplotlib_simple_tutorial.py b/1_numpy_matplotlib_scipy_sympy/matplotlib_simple_tutorial.py similarity index 100% rename from 0_numpy_matplotlib_scipy_sympy/matplotlib_simple_tutorial.py rename to 1_numpy_matplotlib_scipy_sympy/matplotlib_simple_tutorial.py diff --git a/0_numpy_matplotlib_scipy_sympy/numpy_tutorial.ipynb b/1_numpy_matplotlib_scipy_sympy/numpy_tutorial.ipynb similarity index 100% rename from 0_numpy_matplotlib_scipy_sympy/numpy_tutorial.ipynb rename to 1_numpy_matplotlib_scipy_sympy/numpy_tutorial.ipynb diff --git a/0_numpy_matplotlib_scipy_sympy/scipy_tutorial.ipynb b/1_numpy_matplotlib_scipy_sympy/scipy_tutorial.ipynb similarity index 100% rename from 0_numpy_matplotlib_scipy_sympy/scipy_tutorial.ipynb rename to 1_numpy_matplotlib_scipy_sympy/scipy_tutorial.ipynb diff --git a/0_numpy_matplotlib_scipy_sympy/stockholm_td_adj.dat b/1_numpy_matplotlib_scipy_sympy/stockholm_td_adj.dat similarity index 100% rename from 0_numpy_matplotlib_scipy_sympy/stockholm_td_adj.dat rename to 1_numpy_matplotlib_scipy_sympy/stockholm_td_adj.dat diff --git a/0_numpy_matplotlib_scipy_sympy/sympy_tutorial.ipynb b/1_numpy_matplotlib_scipy_sympy/sympy_tutorial.ipynb similarity index 100% rename from 0_numpy_matplotlib_scipy_sympy/sympy_tutorial.ipynb rename to 1_numpy_matplotlib_scipy_sympy/sympy_tutorial.ipynb diff --git a/0_numpy_matplotlib_scipy_sympy/utils_git.ipynb b/1_numpy_matplotlib_scipy_sympy/utils_git.ipynb similarity index 100% rename from 0_numpy_matplotlib_scipy_sympy/utils_git.ipynb rename to 1_numpy_matplotlib_scipy_sympy/utils_git.ipynb diff --git a/0_numpy_matplotlib_scipy_sympy/utils_git_advanced.ipynb b/1_numpy_matplotlib_scipy_sympy/utils_git_advanced.ipynb similarity index 100% rename from 0_numpy_matplotlib_scipy_sympy/utils_git_advanced.ipynb rename to 1_numpy_matplotlib_scipy_sympy/utils_git_advanced.ipynb diff --git a/0_numpy_matplotlib_scipy_sympy/utils_shell.ipynb b/1_numpy_matplotlib_scipy_sympy/utils_shell.ipynb similarity index 100% rename from 0_numpy_matplotlib_scipy_sympy/utils_shell.ipynb rename to 1_numpy_matplotlib_scipy_sympy/utils_shell.ipynb diff --git a/1_knn/images/knn.png b/2_knn/images/knn.png similarity index 100% rename from 1_knn/images/knn.png rename to 2_knn/images/knn.png diff --git a/1_knn/knn_classification.ipynb b/2_knn/knn_classification.ipynb similarity index 100% rename from 1_knn/knn_classification.ipynb rename to 2_knn/knn_classification.ipynb diff --git a/1_knn/knn_classification.py b/2_knn/knn_classification.py similarity index 100% rename from 1_knn/knn_classification.py rename to 2_knn/knn_classification.py diff --git a/1_kmeans/ClusteringAlgorithms.ipynb b/3_kmeans/ClusteringAlgorithms.ipynb similarity index 100% rename from 1_kmeans/ClusteringAlgorithms.ipynb rename to 3_kmeans/ClusteringAlgorithms.ipynb diff --git a/1_kmeans/ClusteringAlgorithms.py b/3_kmeans/ClusteringAlgorithms.py similarity index 100% rename from 1_kmeans/ClusteringAlgorithms.py rename to 3_kmeans/ClusteringAlgorithms.py diff --git a/1_kmeans/README.md b/3_kmeans/README.md similarity index 100% rename from 1_kmeans/README.md rename to 3_kmeans/README.md diff --git a/1_kmeans/download_iris.py b/3_kmeans/download_iris.py similarity index 100% rename from 1_kmeans/download_iris.py rename to 3_kmeans/download_iris.py diff --git a/1_kmeans/images/ARI_ct.png b/3_kmeans/images/ARI_ct.png similarity index 100% rename from 1_kmeans/images/ARI_ct.png rename to 3_kmeans/images/ARI_ct.png diff --git a/1_kmeans/images/ARI_define.png b/3_kmeans/images/ARI_define.png similarity index 100% rename from 1_kmeans/images/ARI_define.png rename to 3_kmeans/images/ARI_define.png diff --git a/1_kmeans/images/data_0.png b/3_kmeans/images/data_0.png similarity index 100% rename from 1_kmeans/images/data_0.png rename to 3_kmeans/images/data_0.png diff --git a/1_kmeans/images/data_1.png b/3_kmeans/images/data_1.png similarity index 100% rename from 1_kmeans/images/data_1.png rename to 3_kmeans/images/data_1.png diff --git a/1_kmeans/images/data_2.png b/3_kmeans/images/data_2.png similarity index 100% rename from 1_kmeans/images/data_2.png rename to 3_kmeans/images/data_2.png diff --git a/1_kmeans/iris.csv b/3_kmeans/iris.csv similarity index 100% rename from 1_kmeans/iris.csv rename to 3_kmeans/iris.csv diff --git a/1_kmeans/k-means.ipynb b/3_kmeans/k-means.ipynb similarity index 100% rename from 1_kmeans/k-means.ipynb rename to 3_kmeans/k-means.ipynb diff --git a/1_kmeans/k-means.py b/3_kmeans/k-means.py similarity index 100% rename from 1_kmeans/k-means.py rename to 3_kmeans/k-means.py diff --git a/1_kmeans/kmeans-color-vq.ipynb b/3_kmeans/kmeans-color-vq.ipynb similarity index 100% rename from 1_kmeans/kmeans-color-vq.ipynb rename to 3_kmeans/kmeans-color-vq.ipynb diff --git a/1_logistic_regression/Least_squares.ipynb b/4_logistic_regression/Least_squares.ipynb similarity index 100% rename from 1_logistic_regression/Least_squares.ipynb rename to 4_logistic_regression/Least_squares.ipynb diff --git a/1_logistic_regression/Least_squares.py b/4_logistic_regression/Least_squares.py similarity index 100% rename from 1_logistic_regression/Least_squares.py rename to 4_logistic_regression/Least_squares.py diff --git a/1_logistic_regression/Logistic_regression.ipynb b/4_logistic_regression/Logistic_regression.ipynb similarity index 100% rename from 1_logistic_regression/Logistic_regression.ipynb rename to 4_logistic_regression/Logistic_regression.ipynb diff --git a/1_logistic_regression/Logistic_regression.py b/4_logistic_regression/Logistic_regression.py similarity index 100% rename from 1_logistic_regression/Logistic_regression.py rename to 4_logistic_regression/Logistic_regression.py diff --git a/1_logistic_regression/PCA_and_Logistic_Regression.ipynb b/4_logistic_regression/PCA_and_Logistic_Regression.ipynb similarity index 100% rename from 1_logistic_regression/PCA_and_Logistic_Regression.ipynb rename to 4_logistic_regression/PCA_and_Logistic_Regression.ipynb diff --git a/1_logistic_regression/PCA_and_Logistic_Regression.py b/4_logistic_regression/PCA_and_Logistic_Regression.py similarity index 100% rename from 1_logistic_regression/PCA_and_Logistic_Regression.py rename to 4_logistic_regression/PCA_and_Logistic_Regression.py diff --git a/1_logistic_regression/images/eq_logloss.png b/4_logistic_regression/images/eq_logloss.png similarity index 100% rename from 1_logistic_regression/images/eq_logloss.png rename to 4_logistic_regression/images/eq_logloss.png diff --git a/1_logistic_regression/images/eq_logloss_diff.png b/4_logistic_regression/images/eq_logloss_diff.png similarity index 100% rename from 1_logistic_regression/images/eq_logloss_diff.png rename to 4_logistic_regression/images/eq_logloss_diff.png diff --git a/1_logistic_regression/images/eq_loss.png b/4_logistic_regression/images/eq_loss.png similarity index 100% rename from 1_logistic_regression/images/eq_loss.png rename to 4_logistic_regression/images/eq_loss.png diff --git a/1_logistic_regression/images/fig1.gif b/4_logistic_regression/images/fig1.gif similarity index 100% rename from 1_logistic_regression/images/fig1.gif rename to 4_logistic_regression/images/fig1.gif diff --git a/1_logistic_regression/images/fig2.gif b/4_logistic_regression/images/fig2.gif similarity index 100% rename from 1_logistic_regression/images/fig2.gif rename to 4_logistic_regression/images/fig2.gif diff --git a/1_logistic_regression/images/fig3.gif b/4_logistic_regression/images/fig3.gif similarity index 100% rename from 1_logistic_regression/images/fig3.gif rename to 4_logistic_regression/images/fig3.gif diff --git a/1_logistic_regression/images/gd_stepsize.png b/4_logistic_regression/images/gd_stepsize.png similarity index 100% rename from 1_logistic_regression/images/gd_stepsize.png rename to 4_logistic_regression/images/gd_stepsize.png diff --git a/1_logistic_regression/images/gradient_descent.png b/4_logistic_regression/images/gradient_descent.png similarity index 100% rename from 1_logistic_regression/images/gradient_descent.png rename to 4_logistic_regression/images/gradient_descent.png diff --git a/1_nn/Perceptron.ipynb b/5_nn/Perceptron.ipynb similarity index 100% rename from 1_nn/Perceptron.ipynb rename to 5_nn/Perceptron.ipynb diff --git a/1_nn/Perceptron.py b/5_nn/Perceptron.py similarity index 100% rename from 1_nn/Perceptron.py rename to 5_nn/Perceptron.py diff --git a/1_nn/images/L_b.png b/5_nn/images/L_b.png similarity index 100% rename from 1_nn/images/L_b.png rename to 5_nn/images/L_b.png diff --git a/1_nn/images/L_w.png b/5_nn/images/L_w.png similarity index 100% rename from 1_nn/images/L_w.png rename to 5_nn/images/L_w.png diff --git a/1_nn/images/bp_loss.png b/5_nn/images/bp_loss.png similarity index 100% rename from 1_nn/images/bp_loss.png rename to 5_nn/images/bp_loss.png diff --git a/1_nn/images/bp_weight_update.png b/5_nn/images/bp_weight_update.png similarity index 100% rename from 1_nn/images/bp_weight_update.png rename to 5_nn/images/bp_weight_update.png diff --git a/1_nn/images/cross_entropy_loss.png b/5_nn/images/cross_entropy_loss.png similarity index 100% rename from 1_nn/images/cross_entropy_loss.png rename to 5_nn/images/cross_entropy_loss.png diff --git a/1_nn/images/eqn_13_16.png b/5_nn/images/eqn_13_16.png similarity index 100% rename from 1_nn/images/eqn_13_16.png rename to 5_nn/images/eqn_13_16.png diff --git a/1_nn/images/eqn_17_20.png b/5_nn/images/eqn_17_20.png similarity index 100% rename from 1_nn/images/eqn_17_20.png rename to 5_nn/images/eqn_17_20.png diff --git a/1_nn/images/eqn_21_22.png b/5_nn/images/eqn_21_22.png similarity index 100% rename from 1_nn/images/eqn_21_22.png rename to 5_nn/images/eqn_21_22.png diff --git a/1_nn/images/eqn_23_25.png b/5_nn/images/eqn_23_25.png similarity index 100% rename from 1_nn/images/eqn_23_25.png rename to 5_nn/images/eqn_23_25.png diff --git a/1_nn/images/eqn_26.png b/5_nn/images/eqn_26.png similarity index 100% rename from 1_nn/images/eqn_26.png rename to 5_nn/images/eqn_26.png diff --git a/1_nn/images/eqn_27_29.png b/5_nn/images/eqn_27_29.png similarity index 100% rename from 1_nn/images/eqn_27_29.png rename to 5_nn/images/eqn_27_29.png diff --git a/1_nn/images/eqn_30_31.png b/5_nn/images/eqn_30_31.png similarity index 100% rename from 1_nn/images/eqn_30_31.png rename to 5_nn/images/eqn_30_31.png diff --git a/1_nn/images/eqn_32_34.png b/5_nn/images/eqn_32_34.png similarity index 100% rename from 1_nn/images/eqn_32_34.png rename to 5_nn/images/eqn_32_34.png diff --git a/1_nn/images/eqn_35_40.png b/5_nn/images/eqn_35_40.png similarity index 100% rename from 1_nn/images/eqn_35_40.png rename to 5_nn/images/eqn_35_40.png diff --git a/1_nn/images/eqn_3_4.png b/5_nn/images/eqn_3_4.png similarity index 100% rename from 1_nn/images/eqn_3_4.png rename to 5_nn/images/eqn_3_4.png diff --git a/1_nn/images/eqn_5_6.png b/5_nn/images/eqn_5_6.png similarity index 100% rename from 1_nn/images/eqn_5_6.png rename to 5_nn/images/eqn_5_6.png diff --git a/1_nn/images/eqn_7_12.png b/5_nn/images/eqn_7_12.png similarity index 100% rename from 1_nn/images/eqn_7_12.png rename to 5_nn/images/eqn_7_12.png diff --git a/1_nn/images/eqn_delta_hidden.png b/5_nn/images/eqn_delta_hidden.png similarity index 100% rename from 1_nn/images/eqn_delta_hidden.png rename to 5_nn/images/eqn_delta_hidden.png diff --git a/1_nn/images/eqn_delta_j.png b/5_nn/images/eqn_delta_j.png similarity index 100% rename from 1_nn/images/eqn_delta_j.png rename to 5_nn/images/eqn_delta_j.png diff --git a/1_nn/images/eqn_ed_net_j.png b/5_nn/images/eqn_ed_net_j.png similarity index 100% rename from 1_nn/images/eqn_ed_net_j.png rename to 5_nn/images/eqn_ed_net_j.png diff --git a/1_nn/images/eqn_hidden_units.png b/5_nn/images/eqn_hidden_units.png similarity index 100% rename from 1_nn/images/eqn_hidden_units.png rename to 5_nn/images/eqn_hidden_units.png diff --git a/1_nn/images/eqn_matrix1.png b/5_nn/images/eqn_matrix1.png similarity index 100% rename from 1_nn/images/eqn_matrix1.png rename to 5_nn/images/eqn_matrix1.png diff --git a/1_nn/images/eqn_w41_update.png b/5_nn/images/eqn_w41_update.png similarity index 100% rename from 1_nn/images/eqn_w41_update.png rename to 5_nn/images/eqn_w41_update.png diff --git a/1_nn/images/eqn_w4b_update.png b/5_nn/images/eqn_w4b_update.png similarity index 100% rename from 1_nn/images/eqn_w4b_update.png rename to 5_nn/images/eqn_w4b_update.png diff --git a/1_nn/images/eqn_w84_update.png b/5_nn/images/eqn_w84_update.png similarity index 100% rename from 1_nn/images/eqn_w84_update.png rename to 5_nn/images/eqn_w84_update.png diff --git a/1_nn/images/formular_2.png b/5_nn/images/formular_2.png similarity index 100% rename from 1_nn/images/formular_2.png rename to 5_nn/images/formular_2.png diff --git a/1_nn/images/formular_3.png b/5_nn/images/formular_3.png similarity index 100% rename from 1_nn/images/formular_3.png rename to 5_nn/images/formular_3.png diff --git a/1_nn/images/formular_4.png b/5_nn/images/formular_4.png similarity index 100% rename from 1_nn/images/formular_4.png rename to 5_nn/images/formular_4.png diff --git a/1_nn/images/formular_5.png b/5_nn/images/formular_5.png similarity index 100% rename from 1_nn/images/formular_5.png rename to 5_nn/images/formular_5.png diff --git a/1_nn/images/forumlar_delta4.png b/5_nn/images/forumlar_delta4.png similarity index 100% rename from 1_nn/images/forumlar_delta4.png rename to 5_nn/images/forumlar_delta4.png diff --git a/1_nn/images/forumlar_delta8.png b/5_nn/images/forumlar_delta8.png similarity index 100% rename from 1_nn/images/forumlar_delta8.png rename to 5_nn/images/forumlar_delta8.png diff --git a/1_nn/images/neuron.gif b/5_nn/images/neuron.gif similarity index 100% rename from 1_nn/images/neuron.gif rename to 5_nn/images/neuron.gif diff --git a/1_nn/images/neuron.png b/5_nn/images/neuron.png similarity index 100% rename from 1_nn/images/neuron.png rename to 5_nn/images/neuron.png diff --git a/1_nn/images/nn1.jpeg b/5_nn/images/nn1.jpeg similarity index 100% rename from 1_nn/images/nn1.jpeg rename to 5_nn/images/nn1.jpeg diff --git a/1_nn/images/nn2.png b/5_nn/images/nn2.png similarity index 100% rename from 1_nn/images/nn2.png rename to 5_nn/images/nn2.png diff --git a/1_nn/images/nn3.png b/5_nn/images/nn3.png similarity index 100% rename from 1_nn/images/nn3.png rename to 5_nn/images/nn3.png diff --git a/1_nn/images/nn_parameters_demo.png b/5_nn/images/nn_parameters_demo.png similarity index 100% rename from 1_nn/images/nn_parameters_demo.png rename to 5_nn/images/nn_parameters_demo.png diff --git a/1_nn/images/perceptron_2.PNG b/5_nn/images/perceptron_2.PNG similarity index 100% rename from 1_nn/images/perceptron_2.PNG rename to 5_nn/images/perceptron_2.PNG diff --git a/1_nn/images/perceptron_geometry_def.png b/5_nn/images/perceptron_geometry_def.png similarity index 100% rename from 1_nn/images/perceptron_geometry_def.png rename to 5_nn/images/perceptron_geometry_def.png diff --git a/1_nn/images/sigmod.jpg b/5_nn/images/sigmod.jpg similarity index 100% rename from 1_nn/images/sigmod.jpg rename to 5_nn/images/sigmod.jpg diff --git a/1_nn/images/sign.png b/5_nn/images/sign.png similarity index 100% rename from 1_nn/images/sign.png rename to 5_nn/images/sign.png diff --git a/1_nn/images/softmax.png b/5_nn/images/softmax.png similarity index 100% rename from 1_nn/images/softmax.png rename to 5_nn/images/softmax.png diff --git a/1_nn/images/softmax_demo.png b/5_nn/images/softmax_demo.png similarity index 100% rename from 1_nn/images/softmax_demo.png rename to 5_nn/images/softmax_demo.png diff --git a/1_nn/images/softmax_neuron.png b/5_nn/images/softmax_neuron.png similarity index 100% rename from 1_nn/images/softmax_neuron.png rename to 5_nn/images/softmax_neuron.png diff --git a/1_nn/images/softmax_neuron_output2_eqn.png b/5_nn/images/softmax_neuron_output2_eqn.png similarity index 100% rename from 1_nn/images/softmax_neuron_output2_eqn.png rename to 5_nn/images/softmax_neuron_output2_eqn.png diff --git a/1_nn/images/softmax_neuron_output_eqn.png b/5_nn/images/softmax_neuron_output_eqn.png similarity index 100% rename from 1_nn/images/softmax_neuron_output_eqn.png rename to 5_nn/images/softmax_neuron_output_eqn.png diff --git a/1_nn/mlp_bp.ipynb b/5_nn/mlp_bp.ipynb similarity index 100% rename from 1_nn/mlp_bp.ipynb rename to 5_nn/mlp_bp.ipynb diff --git a/1_nn/mlp_bp.py b/5_nn/mlp_bp.py similarity index 100% rename from 1_nn/mlp_bp.py rename to 5_nn/mlp_bp.py diff --git a/1_nn/note.txt b/5_nn/note.txt similarity index 100% rename from 1_nn/note.txt rename to 5_nn/note.txt diff --git a/1_nn/softmax_ce.ipynb b/5_nn/softmax_ce.ipynb similarity index 100% rename from 1_nn/softmax_ce.ipynb rename to 5_nn/softmax_ce.ipynb diff --git a/1_nn/softmax_ce.py b/5_nn/softmax_ce.py similarity index 100% rename from 1_nn/softmax_ce.py rename to 5_nn/softmax_ce.py diff --git a/2_pytorch/0_basic/Tensor-and-Variable.ipynb b/6_pytorch/0_basic/Tensor-and-Variable.ipynb similarity index 100% rename from 2_pytorch/0_basic/Tensor-and-Variable.ipynb rename to 6_pytorch/0_basic/Tensor-and-Variable.ipynb diff --git a/2_pytorch/0_basic/autograd.ipynb b/6_pytorch/0_basic/autograd.ipynb similarity index 100% rename from 2_pytorch/0_basic/autograd.ipynb rename to 6_pytorch/0_basic/autograd.ipynb diff --git a/2_pytorch/0_basic/autograd.py b/6_pytorch/0_basic/autograd.py similarity index 100% rename from 2_pytorch/0_basic/autograd.py rename to 6_pytorch/0_basic/autograd.py diff --git a/2_pytorch/0_basic/dynamic-graph.ipynb b/6_pytorch/0_basic/dynamic-graph.ipynb similarity index 100% rename from 2_pytorch/0_basic/dynamic-graph.ipynb rename to 6_pytorch/0_basic/dynamic-graph.ipynb diff --git a/2_pytorch/0_basic/imgs/autograd_Variable.png b/6_pytorch/0_basic/imgs/autograd_Variable.png similarity index 100% rename from 2_pytorch/0_basic/imgs/autograd_Variable.png rename to 6_pytorch/0_basic/imgs/autograd_Variable.png diff --git a/2_pytorch/0_basic/imgs/autograd_Variable.svg b/6_pytorch/0_basic/imgs/autograd_Variable.svg similarity index 100% rename from 2_pytorch/0_basic/imgs/autograd_Variable.svg rename to 6_pytorch/0_basic/imgs/autograd_Variable.svg diff --git a/2_pytorch/0_basic/imgs/com_graph.svg b/6_pytorch/0_basic/imgs/com_graph.svg similarity index 100% rename from 2_pytorch/0_basic/imgs/com_graph.svg rename to 6_pytorch/0_basic/imgs/com_graph.svg diff --git a/2_pytorch/0_basic/imgs/com_graph_backward.svg b/6_pytorch/0_basic/imgs/com_graph_backward.svg similarity index 100% rename from 2_pytorch/0_basic/imgs/com_graph_backward.svg rename to 6_pytorch/0_basic/imgs/com_graph_backward.svg diff --git a/2_pytorch/0_basic/imgs/tensor_data_structure.svg b/6_pytorch/0_basic/imgs/tensor_data_structure.svg similarity index 100% rename from 2_pytorch/0_basic/imgs/tensor_data_structure.svg rename to 6_pytorch/0_basic/imgs/tensor_data_structure.svg diff --git a/2_pytorch/0_basic/ref_Autograd.ipynb b/6_pytorch/0_basic/ref_Autograd.ipynb similarity index 100% rename from 2_pytorch/0_basic/ref_Autograd.ipynb rename to 6_pytorch/0_basic/ref_Autograd.ipynb diff --git a/2_pytorch/0_basic/ref_Tensor.ipynb b/6_pytorch/0_basic/ref_Tensor.ipynb similarity index 100% rename from 2_pytorch/0_basic/ref_Tensor.ipynb rename to 6_pytorch/0_basic/ref_Tensor.ipynb diff --git a/2_pytorch/1_NN/bp.ipynb b/6_pytorch/1_NN/bp.ipynb similarity index 100% rename from 2_pytorch/1_NN/bp.ipynb rename to 6_pytorch/1_NN/bp.ipynb diff --git a/2_pytorch/1_NN/data.txt b/6_pytorch/1_NN/data.txt similarity index 100% rename from 2_pytorch/1_NN/data.txt rename to 6_pytorch/1_NN/data.txt diff --git a/2_pytorch/1_NN/deep-nn.ipynb b/6_pytorch/1_NN/deep-nn.ipynb similarity index 100% rename from 2_pytorch/1_NN/deep-nn.ipynb rename to 6_pytorch/1_NN/deep-nn.ipynb diff --git a/2_pytorch/1_NN/deep-nn.py b/6_pytorch/1_NN/deep-nn.py similarity index 100% rename from 2_pytorch/1_NN/deep-nn.py rename to 6_pytorch/1_NN/deep-nn.py diff --git a/2_pytorch/1_NN/imgs/ResNet.png b/6_pytorch/1_NN/imgs/ResNet.png similarity index 100% rename from 2_pytorch/1_NN/imgs/ResNet.png rename to 6_pytorch/1_NN/imgs/ResNet.png diff --git a/2_pytorch/1_NN/imgs/lena.png b/6_pytorch/1_NN/imgs/lena.png similarity index 100% rename from 2_pytorch/1_NN/imgs/lena.png rename to 6_pytorch/1_NN/imgs/lena.png diff --git a/2_pytorch/1_NN/imgs/lena3.png b/6_pytorch/1_NN/imgs/lena3.png similarity index 100% rename from 2_pytorch/1_NN/imgs/lena3.png rename to 6_pytorch/1_NN/imgs/lena3.png diff --git a/2_pytorch/1_NN/imgs/lena512.png b/6_pytorch/1_NN/imgs/lena512.png similarity index 100% rename from 2_pytorch/1_NN/imgs/lena512.png rename to 6_pytorch/1_NN/imgs/lena512.png diff --git a/2_pytorch/1_NN/imgs/multi_perceptron.png b/6_pytorch/1_NN/imgs/multi_perceptron.png similarity index 100% rename from 2_pytorch/1_NN/imgs/multi_perceptron.png rename to 6_pytorch/1_NN/imgs/multi_perceptron.png diff --git a/2_pytorch/1_NN/imgs/residual.png b/6_pytorch/1_NN/imgs/residual.png similarity index 100% rename from 2_pytorch/1_NN/imgs/residual.png rename to 6_pytorch/1_NN/imgs/residual.png diff --git a/2_pytorch/1_NN/imgs/resnet1.png b/6_pytorch/1_NN/imgs/resnet1.png similarity index 100% rename from 2_pytorch/1_NN/imgs/resnet1.png rename to 6_pytorch/1_NN/imgs/resnet1.png diff --git a/2_pytorch/1_NN/imgs/trans.bkp.PNG b/6_pytorch/1_NN/imgs/trans.bkp.PNG similarity index 100% rename from 2_pytorch/1_NN/imgs/trans.bkp.PNG rename to 6_pytorch/1_NN/imgs/trans.bkp.PNG diff --git a/2_pytorch/1_NN/linear-regression-gradient-descend.ipynb b/6_pytorch/1_NN/linear-regression-gradient-descend.ipynb similarity index 100% rename from 2_pytorch/1_NN/linear-regression-gradient-descend.ipynb rename to 6_pytorch/1_NN/linear-regression-gradient-descend.ipynb diff --git a/2_pytorch/1_NN/linear-regression-gradient-descend.py b/6_pytorch/1_NN/linear-regression-gradient-descend.py similarity index 100% rename from 2_pytorch/1_NN/linear-regression-gradient-descend.py rename to 6_pytorch/1_NN/linear-regression-gradient-descend.py diff --git a/2_pytorch/1_NN/logistic-regression.ipynb b/6_pytorch/1_NN/logistic-regression.ipynb similarity index 100% rename from 2_pytorch/1_NN/logistic-regression.ipynb rename to 6_pytorch/1_NN/logistic-regression.ipynb diff --git a/2_pytorch/1_NN/logistic-regression.py b/6_pytorch/1_NN/logistic-regression.py similarity index 100% rename from 2_pytorch/1_NN/logistic-regression.py rename to 6_pytorch/1_NN/logistic-regression.py diff --git a/2_pytorch/1_NN/nn-sequential-module.ipynb b/6_pytorch/1_NN/nn-sequential-module.ipynb similarity index 100% rename from 2_pytorch/1_NN/nn-sequential-module.ipynb rename to 6_pytorch/1_NN/nn-sequential-module.ipynb diff --git a/2_pytorch/1_NN/nn_summary.ipynb b/6_pytorch/1_NN/nn_summary.ipynb similarity index 100% rename from 2_pytorch/1_NN/nn_summary.ipynb rename to 6_pytorch/1_NN/nn_summary.ipynb diff --git a/2_pytorch/1_NN/optimizer/adadelta.ipynb b/6_pytorch/1_NN/optimizer/adadelta.ipynb similarity index 100% rename from 2_pytorch/1_NN/optimizer/adadelta.ipynb rename to 6_pytorch/1_NN/optimizer/adadelta.ipynb diff --git a/2_pytorch/1_NN/optimizer/adadelta.py b/6_pytorch/1_NN/optimizer/adadelta.py similarity index 100% rename from 2_pytorch/1_NN/optimizer/adadelta.py rename to 6_pytorch/1_NN/optimizer/adadelta.py diff --git a/2_pytorch/1_NN/optimizer/adagrad.ipynb b/6_pytorch/1_NN/optimizer/adagrad.ipynb similarity index 99% rename from 2_pytorch/1_NN/optimizer/adagrad.ipynb rename to 6_pytorch/1_NN/optimizer/adagrad.ipynb index 85bfd1a..0f22510 100644 --- a/2_pytorch/1_NN/optimizer/adagrad.ipynb +++ b/6_pytorch/1_NN/optimizer/adagrad.ipynb @@ -80,9 +80,7 @@ { "cell_type": "code", "execution_count": 3, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -141,9 +139,7 @@ { "cell_type": "code", "execution_count": 4, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -189,9 +185,7 @@ { "cell_type": "code", "execution_count": 5, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -242,9 +236,9 @@ ], "metadata": { "kernelspec": { - "display_name": "mx", + "display_name": "Python 3", "language": "python", - "name": "mx" + "name": "python3" }, "language_info": { "codemirror_mode": { @@ -256,7 +250,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.0" + "version": "3.5.2" } }, "nbformat": 4, diff --git a/2_pytorch/1_NN/optimizer/adam.ipynb b/6_pytorch/1_NN/optimizer/adam.ipynb similarity index 100% rename from 2_pytorch/1_NN/optimizer/adam.ipynb rename to 6_pytorch/1_NN/optimizer/adam.ipynb diff --git a/2_pytorch/1_NN/optimizer/adam.py b/6_pytorch/1_NN/optimizer/adam.py similarity index 100% rename from 2_pytorch/1_NN/optimizer/adam.py rename to 6_pytorch/1_NN/optimizer/adam.py diff --git a/2_pytorch/1_NN/optimizer/momentum.ipynb b/6_pytorch/1_NN/optimizer/momentum.ipynb similarity index 100% rename from 2_pytorch/1_NN/optimizer/momentum.ipynb rename to 6_pytorch/1_NN/optimizer/momentum.ipynb diff --git a/2_pytorch/1_NN/optimizer/momentum.py b/6_pytorch/1_NN/optimizer/momentum.py similarity index 100% rename from 2_pytorch/1_NN/optimizer/momentum.py rename to 6_pytorch/1_NN/optimizer/momentum.py diff --git a/2_pytorch/1_NN/optimizer/rmsprop.ipynb b/6_pytorch/1_NN/optimizer/rmsprop.ipynb similarity index 100% rename from 2_pytorch/1_NN/optimizer/rmsprop.ipynb rename to 6_pytorch/1_NN/optimizer/rmsprop.ipynb diff --git a/2_pytorch/1_NN/optimizer/rmsprop.py b/6_pytorch/1_NN/optimizer/rmsprop.py similarity index 100% rename from 2_pytorch/1_NN/optimizer/rmsprop.py rename to 6_pytorch/1_NN/optimizer/rmsprop.py diff --git a/2_pytorch/1_NN/optimizer/sgd.ipynb b/6_pytorch/1_NN/optimizer/sgd.ipynb similarity index 100% rename from 2_pytorch/1_NN/optimizer/sgd.ipynb rename to 6_pytorch/1_NN/optimizer/sgd.ipynb diff --git a/2_pytorch/1_NN/optimizer/sgd.py b/6_pytorch/1_NN/optimizer/sgd.py similarity index 100% rename from 2_pytorch/1_NN/optimizer/sgd.py rename to 6_pytorch/1_NN/optimizer/sgd.py diff --git a/2_pytorch/1_NN/param_initialize.ipynb b/6_pytorch/1_NN/param_initialize.ipynb similarity index 100% rename from 2_pytorch/1_NN/param_initialize.ipynb rename to 6_pytorch/1_NN/param_initialize.ipynb diff --git a/2_pytorch/2_CNN/basic_conv.ipynb b/6_pytorch/2_CNN/basic_conv.ipynb similarity index 100% rename from 2_pytorch/2_CNN/basic_conv.ipynb rename to 6_pytorch/2_CNN/basic_conv.ipynb diff --git a/2_pytorch/2_CNN/basic_conv.py b/6_pytorch/2_CNN/basic_conv.py similarity index 100% rename from 2_pytorch/2_CNN/basic_conv.py rename to 6_pytorch/2_CNN/basic_conv.py diff --git a/2_pytorch/2_CNN/batch-normalization.ipynb b/6_pytorch/2_CNN/batch-normalization.ipynb similarity index 100% rename from 2_pytorch/2_CNN/batch-normalization.ipynb rename to 6_pytorch/2_CNN/batch-normalization.ipynb diff --git a/2_pytorch/2_CNN/batch-normalization.py b/6_pytorch/2_CNN/batch-normalization.py similarity index 100% rename from 2_pytorch/2_CNN/batch-normalization.py rename to 6_pytorch/2_CNN/batch-normalization.py diff --git a/2_pytorch/2_CNN/cat.png b/6_pytorch/2_CNN/cat.png similarity index 100% rename from 2_pytorch/2_CNN/cat.png rename to 6_pytorch/2_CNN/cat.png diff --git a/2_pytorch/2_CNN/data-augumentation.ipynb b/6_pytorch/2_CNN/data-augumentation.ipynb similarity index 100% rename from 2_pytorch/2_CNN/data-augumentation.ipynb rename to 6_pytorch/2_CNN/data-augumentation.ipynb diff --git a/2_pytorch/2_CNN/data-augumentation.py b/6_pytorch/2_CNN/data-augumentation.py similarity index 100% rename from 2_pytorch/2_CNN/data-augumentation.py rename to 6_pytorch/2_CNN/data-augumentation.py diff --git a/2_pytorch/2_CNN/densenet.ipynb b/6_pytorch/2_CNN/densenet.ipynb similarity index 100% rename from 2_pytorch/2_CNN/densenet.ipynb rename to 6_pytorch/2_CNN/densenet.ipynb diff --git a/2_pytorch/2_CNN/densenet.py b/6_pytorch/2_CNN/densenet.py similarity index 100% rename from 2_pytorch/2_CNN/densenet.py rename to 6_pytorch/2_CNN/densenet.py diff --git a/2_pytorch/2_CNN/googlenet.ipynb b/6_pytorch/2_CNN/googlenet.ipynb similarity index 100% rename from 2_pytorch/2_CNN/googlenet.ipynb rename to 6_pytorch/2_CNN/googlenet.ipynb diff --git a/2_pytorch/2_CNN/googlenet.py b/6_pytorch/2_CNN/googlenet.py similarity index 100% rename from 2_pytorch/2_CNN/googlenet.py rename to 6_pytorch/2_CNN/googlenet.py diff --git a/2_pytorch/2_CNN/lr-decay.ipynb b/6_pytorch/2_CNN/lr-decay.ipynb similarity index 100% rename from 2_pytorch/2_CNN/lr-decay.ipynb rename to 6_pytorch/2_CNN/lr-decay.ipynb diff --git a/2_pytorch/2_CNN/lr-decay.py b/6_pytorch/2_CNN/lr-decay.py similarity index 100% rename from 2_pytorch/2_CNN/lr-decay.py rename to 6_pytorch/2_CNN/lr-decay.py diff --git a/2_pytorch/2_CNN/regularization.ipynb b/6_pytorch/2_CNN/regularization.ipynb similarity index 100% rename from 2_pytorch/2_CNN/regularization.ipynb rename to 6_pytorch/2_CNN/regularization.ipynb diff --git a/2_pytorch/2_CNN/regularization.py b/6_pytorch/2_CNN/regularization.py similarity index 100% rename from 2_pytorch/2_CNN/regularization.py rename to 6_pytorch/2_CNN/regularization.py diff --git a/2_pytorch/2_CNN/resnet.ipynb b/6_pytorch/2_CNN/resnet.ipynb similarity index 100% rename from 2_pytorch/2_CNN/resnet.ipynb rename to 6_pytorch/2_CNN/resnet.ipynb diff --git a/2_pytorch/2_CNN/resnet.py b/6_pytorch/2_CNN/resnet.py similarity index 100% rename from 2_pytorch/2_CNN/resnet.py rename to 6_pytorch/2_CNN/resnet.py diff --git a/2_pytorch/2_CNN/utils.py b/6_pytorch/2_CNN/utils.py similarity index 100% rename from 2_pytorch/2_CNN/utils.py rename to 6_pytorch/2_CNN/utils.py diff --git a/2_pytorch/2_CNN/vgg.ipynb b/6_pytorch/2_CNN/vgg.ipynb similarity index 100% rename from 2_pytorch/2_CNN/vgg.ipynb rename to 6_pytorch/2_CNN/vgg.ipynb diff --git a/2_pytorch/2_CNN/vgg.py b/6_pytorch/2_CNN/vgg.py similarity index 100% rename from 2_pytorch/2_CNN/vgg.py rename to 6_pytorch/2_CNN/vgg.py diff --git a/2_pytorch/3_RNN/nlp/n-gram.ipynb b/6_pytorch/3_RNN/nlp/n-gram.ipynb similarity index 100% rename from 2_pytorch/3_RNN/nlp/n-gram.ipynb rename to 6_pytorch/3_RNN/nlp/n-gram.ipynb diff --git a/2_pytorch/3_RNN/nlp/seq-lstm.ipynb b/6_pytorch/3_RNN/nlp/seq-lstm.ipynb similarity index 100% rename from 2_pytorch/3_RNN/nlp/seq-lstm.ipynb rename to 6_pytorch/3_RNN/nlp/seq-lstm.ipynb diff --git a/2_pytorch/3_RNN/nlp/word-embedding.ipynb b/6_pytorch/3_RNN/nlp/word-embedding.ipynb similarity index 100% rename from 2_pytorch/3_RNN/nlp/word-embedding.ipynb rename to 6_pytorch/3_RNN/nlp/word-embedding.ipynb diff --git a/2_pytorch/3_RNN/pytorch-rnn.ipynb b/6_pytorch/3_RNN/pytorch-rnn.ipynb similarity index 100% rename from 2_pytorch/3_RNN/pytorch-rnn.ipynb rename to 6_pytorch/3_RNN/pytorch-rnn.ipynb diff --git a/2_pytorch/3_RNN/rnn-for-image.ipynb b/6_pytorch/3_RNN/rnn-for-image.ipynb similarity index 100% rename from 2_pytorch/3_RNN/rnn-for-image.ipynb rename to 6_pytorch/3_RNN/rnn-for-image.ipynb diff --git a/2_pytorch/3_RNN/time-series/data.csv b/6_pytorch/3_RNN/time-series/data.csv similarity index 100% rename from 2_pytorch/3_RNN/time-series/data.csv rename to 6_pytorch/3_RNN/time-series/data.csv diff --git a/2_pytorch/3_RNN/time-series/lstm-time-series.ipynb b/6_pytorch/3_RNN/time-series/lstm-time-series.ipynb similarity index 100% rename from 2_pytorch/3_RNN/time-series/lstm-time-series.ipynb rename to 6_pytorch/3_RNN/time-series/lstm-time-series.ipynb diff --git a/2_pytorch/3_RNN/time-series/lstm-time-series.py b/6_pytorch/3_RNN/time-series/lstm-time-series.py similarity index 100% rename from 2_pytorch/3_RNN/time-series/lstm-time-series.py rename to 6_pytorch/3_RNN/time-series/lstm-time-series.py diff --git a/2_pytorch/3_RNN/utils.py b/6_pytorch/3_RNN/utils.py similarity index 100% rename from 2_pytorch/3_RNN/utils.py rename to 6_pytorch/3_RNN/utils.py diff --git a/2_pytorch/4_GAN/autoencoder.ipynb b/6_pytorch/4_GAN/autoencoder.ipynb similarity index 100% rename from 2_pytorch/4_GAN/autoencoder.ipynb rename to 6_pytorch/4_GAN/autoencoder.ipynb diff --git a/2_pytorch/4_GAN/autoencoder.py b/6_pytorch/4_GAN/autoencoder.py similarity index 100% rename from 2_pytorch/4_GAN/autoencoder.py rename to 6_pytorch/4_GAN/autoencoder.py diff --git a/2_pytorch/4_GAN/gan.ipynb b/6_pytorch/4_GAN/gan.ipynb similarity index 100% rename from 2_pytorch/4_GAN/gan.ipynb rename to 6_pytorch/4_GAN/gan.ipynb diff --git a/2_pytorch/4_GAN/gan.py b/6_pytorch/4_GAN/gan.py similarity index 100% rename from 2_pytorch/4_GAN/gan.py rename to 6_pytorch/4_GAN/gan.py diff --git a/2_pytorch/4_GAN/vae.ipynb b/6_pytorch/4_GAN/vae.ipynb similarity index 100% rename from 2_pytorch/4_GAN/vae.ipynb rename to 6_pytorch/4_GAN/vae.ipynb diff --git a/2_pytorch/4_GAN/vae.py b/6_pytorch/4_GAN/vae.py similarity index 100% rename from 2_pytorch/4_GAN/vae.py rename to 6_pytorch/4_GAN/vae.py diff --git a/6_pytorch/5_NLP/README.md b/6_pytorch/5_NLP/README.md new file mode 100644 index 0000000..647b656 --- /dev/null +++ b/6_pytorch/5_NLP/README.md @@ -0,0 +1,8 @@ + + +## References + +* [神经网络嵌入详解](https://mp.weixin.qq.com/s/9Azv6xOZuY0ntcQpiqLD-A) + +* [Neural Network Embeddings Explained](https://towardsdatascience.com/neural-network-embeddings-explained-4d028e6f0526) + diff --git a/2_pytorch/PyTorch_quick_intro.ipynb b/6_pytorch/PyTorch_quick_intro.ipynb similarity index 100% rename from 2_pytorch/PyTorch_quick_intro.ipynb rename to 6_pytorch/PyTorch_quick_intro.ipynb diff --git a/2_pytorch/README.md b/6_pytorch/README.md similarity index 100% rename from 2_pytorch/README.md rename to 6_pytorch/README.md diff --git a/2_pytorch/imgs/Ipython-auto.png b/6_pytorch/imgs/Ipython-auto.png similarity index 100% rename from 2_pytorch/imgs/Ipython-auto.png rename to 6_pytorch/imgs/Ipython-auto.png diff --git a/2_pytorch/imgs/Ipython-help.png b/6_pytorch/imgs/Ipython-help.png similarity index 100% rename from 2_pytorch/imgs/Ipython-help.png rename to 6_pytorch/imgs/Ipython-help.png diff --git a/2_pytorch/imgs/Jupyter主页面.png b/6_pytorch/imgs/Jupyter主页面.png similarity index 100% rename from 2_pytorch/imgs/Jupyter主页面.png rename to 6_pytorch/imgs/Jupyter主页面.png diff --git a/2_pytorch/imgs/Notebook主界面.png b/6_pytorch/imgs/Notebook主界面.png similarity index 100% rename from 2_pytorch/imgs/Notebook主界面.png rename to 6_pytorch/imgs/Notebook主界面.png diff --git a/2_pytorch/imgs/autograd_Variable.png b/6_pytorch/imgs/autograd_Variable.png similarity index 100% rename from 2_pytorch/imgs/autograd_Variable.png rename to 6_pytorch/imgs/autograd_Variable.png diff --git a/2_pytorch/imgs/autograd_Variable.svg b/6_pytorch/imgs/autograd_Variable.svg similarity index 100% rename from 2_pytorch/imgs/autograd_Variable.svg rename to 6_pytorch/imgs/autograd_Variable.svg diff --git a/2_pytorch/imgs/del/img1.png b/6_pytorch/imgs/del/img1.png similarity index 100% rename from 2_pytorch/imgs/del/img1.png rename to 6_pytorch/imgs/del/img1.png diff --git a/2_pytorch/imgs/del/img2.png b/6_pytorch/imgs/del/img2.png similarity index 100% rename from 2_pytorch/imgs/del/img2.png rename to 6_pytorch/imgs/del/img2.png diff --git a/2_pytorch/imgs/install-1.png b/6_pytorch/imgs/install-1.png similarity index 100% rename from 2_pytorch/imgs/install-1.png rename to 6_pytorch/imgs/install-1.png diff --git a/2_pytorch/imgs/install-2.png b/6_pytorch/imgs/install-2.png similarity index 100% rename from 2_pytorch/imgs/install-2.png rename to 6_pytorch/imgs/install-2.png diff --git a/2_pytorch/imgs/nn_lenet.png b/6_pytorch/imgs/nn_lenet.png similarity index 100% rename from 2_pytorch/imgs/nn_lenet.png rename to 6_pytorch/imgs/nn_lenet.png diff --git a/README.md b/README.md index 545ed1f..7455b00 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,15 @@ # Python与机器学习 -本教程包含了一些使用Python来学习机器学习的notebook,通过本教程的引导来快速得学习Python、Python的常用库、机器学习的理论知识与实际编程,并学习如何解决实际问题。 +本教程包含了一些使用Python来学习机器学习的notebook,通过本教程的引导来快速学习Python、Python的常用库、机器学习的理论知识与实际编程,并学习如何解决实际问题。 由于**本课程需要大量的编程练习才能取得比较好的学习效果**,因此需要认真把作业和报告完成,写作业的过程可以查阅网上的资料,但是不能直接照抄,需要自己独立思考并独立写出代码。 + + ## 内容 1. [Python](0_python/) + - [Install Python](tips/InstallPython.md) - [Introduction](0_python/0_Introduction.ipynb) - [Python Basics](0_python/1_Basics.ipynb) - [Print Statement](0_python/2_Print_Statement.ipynb) @@ -15,51 +18,52 @@ - [Control Flow](0_python/5_Control_Flow.ipynb) - [Function](0_python/6_Function.ipynb) - [Class](0_python/7_Class.ipynb) -2. [numpy & matplotlib](0_numpy_matplotlib_scipy_sympy/) - - [numpy](0_numpy_matplotlib_scipy_sympy/numpy_tutorial.ipynb) - - [matplotlib](0_numpy_matplotlib_scipy_sympy/matplotlib_simple_tutorial.ipynb) -3. [knn](1_knn/knn_classification.ipynb) -4. [kMenas](1_kmeans/knn_classification.ipynb) -5. [Logistic Regression](1_logistic_regression/) - - [Least squares](1_logistic_regression/Least_squares.ipynb) - - [Logistic regression](1_logistic_regression/Logistic_regression.ipynb) -6. [Neural Network](1_nn/) - - [Perceptron](1_nn/Perceptron.ipynb) - - [Multi-layer Perceptron & BP](1_nn/mlp_bp.ipynb) - - [Softmax & cross-entroy](1_nn/softmax_ce.ipynb) -7. [PyTorch](2_pytorch/) - - [short tutorial](2_pytorch/PyTorch_quick_intro.ipynb) - - [basic/Tensor-and-Variable](2_pytorch/0_basic/Tensor-and-Variable.ipynb) - - [basic/autograd](2_pytorch/0_basic/autograd.ipynb) - - [basic/dynamic-graph](2_pytorch/0_basic/dynamic-graph.ipynb) - - [nn/linear-regression-gradient-descend](2_pytorch/1_NN/linear-regression-gradient-descend.ipynb) - - [nn/logistic-regression](2_pytorch/1_NN/logistic-regression.ipynb) - - [nn/nn-sequential-module](2_pytorch/1_NN/nn-sequential-module.ipynb) - - [nn/bp](2_pytorch/1_NN/bp.ipynb) - - [nn/deep-nn](2_pytorch/1_NN/deep-nn.ipynb) - - [nn/param_initialize](2_pytorch/1_NN/param_initialize.ipynb) - - [optim/sgd](2_pytorch/1_NN/optimizer/sgd.ipynb) - - [optim/adam](2_pytorch/1_NN/optimizer/adam.ipynb) - - [cnn/basic_conv](2_pytorch/2_CNN/basic_conv.ipynb) - - [cnn/batch-normalization](2_pytorch/2_CNN/batch-normalization.ipynb) - - [cnn/regularization](2_pytorch/2_CNN/regularization.ipynb) - - [cnn/lr-decay](2_pytorch/2_CNN/lr-decay.ipynb) - - [cnn/vgg](2_pytorch/2_CNN/vgg.ipynb) - - [cnn/googlenet](2_pytorch/2_CNN/googlenet.ipynb) - - [cnn/densenet](2_pytorch/2_CNN/densenet.ipynb) - - [cnn/resnet](2_pytorch/2_CNN/resnet.ipynb) - - [rnn/pytorch-rnn](2_pytorch/3_RNN/pytorch-rnn.ipynb) - - [rnn/rnn-for-image](2_pytorch/3_RNN/rnn-for-image.ipynb) - - [rnn/lstm-time-series](2_pytorch/3_RNN/time-series/lstm-time-series.ipynb) - - [gan/autoencoder](2_pytorch/4_GNN/autoencoder.ipynb) - - [gan/vae](2_pytorch/4_GNN/vae.ipynb) - - [gan/gan](2_pytorch/4_GNN/gan.ipynb) +2. [numpy & matplotlib](1_numpy_matplotlib_scipy_sympy/) + - [numpy](1_numpy_matplotlib_scipy_sympy/numpy_tutorial.ipynb) + - [matplotlib](1_numpy_matplotlib_scipy_sympy/matplotlib_simple_tutorial.ipynb) +3. [knn](2_knn/knn_classification.ipynb) +4. [kMenas](3_kmeans/knn_classification.ipynb) +5. [Logistic Regression](4_logistic_regression/) + - [Least squares](4_logistic_regression/Least_squares.ipynb) + - [Logistic regression](4_logistic_regression/Logistic_regression.ipynb) +6. [Neural Network](5_nn/) + - [Perceptron](5_nn/Perceptron.ipynb) + - [Multi-layer Perceptron & BP](5_nn/mlp_bp.ipynb) + - [Softmax & cross-entroy](5_nn/softmax_ce.ipynb) +7. [PyTorch](6_pytorch/) + - [short tutorial](6_pytorch/PyTorch_quick_intro.ipynb) + - [basic/Tensor-and-Variable](6_pytorch/0_basic/Tensor-and-Variable.ipynb) + - [basic/autograd](6_pytorch/0_basic/autograd.ipynb) + - [basic/dynamic-graph](6_pytorch/0_basic/dynamic-graph.ipynb) + - [nn/linear-regression-gradient-descend](6_pytorch/1_NN/linear-regression-gradient-descend.ipynb) + - [nn/logistic-regression](6_pytorch/1_NN/logistic-regression.ipynb) + - [nn/nn-sequential-module](6_pytorch/1_NN/nn-sequential-module.ipynb) + - [nn/bp](6_pytorch/1_NN/bp.ipynb) + - [nn/deep-nn](6_pytorch/1_NN/deep-nn.ipynb) + - [nn/param_initialize](6_pytorch/1_NN/param_initialize.ipynb) + - [optim/sgd](6_pytorch/1_NN/optimizer/sgd.ipynb) + - [optim/adam](6_pytorch/1_NN/optimizer/adam.ipynb) + - [cnn/basic_conv](6_pytorch/2_CNN/basic_conv.ipynb) + - [cnn/batch-normalization](6_pytorch/2_CNN/batch-normalization.ipynb) + - [cnn/regularization](6_pytorch/2_CNN/regularization.ipynb) + - [cnn/lr-decay](6_pytorch/2_CNN/lr-decay.ipynb) + - [cnn/vgg](6_pytorch/2_CNN/vgg.ipynb) + - [cnn/googlenet](6_pytorch/2_CNN/googlenet.ipynb) + - [cnn/densenet](6_pytorch/2_CNN/densenet.ipynb) + - [cnn/resnet](6_pytorch/2_CNN/resnet.ipynb) + - [rnn/pytorch-rnn](6_pytorch/3_RNN/pytorch-rnn.ipynb) + - [rnn/rnn-for-image](6_pytorch/3_RNN/rnn-for-image.ipynb) + - [rnn/lstm-time-series](6_pytorch/3_RNN/time-series/lstm-time-series.ipynb) + - [gan/autoencoder](6_pytorch/4_GNN/autoencoder.ipynb) + - [gan/vae](6_pytorch/4_GNN/vae.ipynb) + - [gan/gan](6_pytorch/4_GNN/gan.ipynb) ## 其他参考 -* [学习参考资料等](References.md) +* [相关学习参考资料等](References.md) * [安装Python环境](tips/InstallPython.md) * [confusion matrix](tips/confusion_matrix.ipynb) * [一些速查手册](tips/cheatsheet) * [Python tips](tips/python) + diff --git a/tips/InstallPython.md b/tips/InstallPython.md index a3d1315..c5a610d 100644 --- a/tips/InstallPython.md +++ b/tips/InstallPython.md @@ -1,6 +1,8 @@ # Installing Python environments -这章,讲解如何安装Python的环境 +由于Python的库比较多,并且依赖关系比较复杂,所以请仔细阅读下面的说明,使用下面的说明来安装能够减少问题的可能。 + + ## 1. Windows @@ -25,6 +27,7 @@ pip3 install torchvision ``` + ## 2. Linux ### 安装pip @@ -32,12 +35,18 @@ pip3 install torchvision sudo apt-get install python3-pip ``` + + ### 设置PIP源 + ``` pip config set global.index-url 'https://mirrors.ustc.edu.cn/pypi/web/simple' ``` + + ### 安装常用的包 + ``` pip install -r requirements.txt ``` @@ -53,7 +62,10 @@ sudo pip install ipython sudo pip install jupyter ``` + + ### 安装pytorch + 到[pytorch 官网](https://pytorch.org),根据自己的操作系统、CUDA版本,选择合适的安装命令。 例如Linux, Python3.5, CUDA 9.0: @@ -61,3 +73,11 @@ sudo pip install jupyter pip3 install torch torchvision ``` + + +## 3. [Python技巧](python/) + +- [pip的安装、使用等](pip.md) +- [virtualenv的安装、使用](virtualenv.md) +- [virtualenv便捷管理工具:virtualenv_wrapper](virtualenv_wrapper.md) + diff --git a/tips/images/dnn_tips_01.jpeg b/tips/images/dnn_tips_01.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..9104e1a30eef2e2654ee789462d2e95f856fdff4 GIT binary patch literal 22371 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 Y$8%;=fhVm9Ei5p3TAk<(mcOU|1%+*n^#A|> literal 0 HcmV?d00001 diff --git a/tips/images/dnn_tips_02.jpeg b/tips/images/dnn_tips_02.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..0154b9305eb9f1f1258b2ad54e620558cf37650a GIT binary patch literal 15676 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 literal 0 HcmV?d00001 diff --git a/tips/images/dnn_tips_03.jpeg b/tips/images/dnn_tips_03.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..006e8924670acf1e1f7bae4a6e5beb6c8dfab99c GIT binary patch literal 18863 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 H|Gxn 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

~qVo@JTb=c;))s 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 ZEsXPFy6_e_u?F|bKd{} literal 0 HcmV?d00001 diff --git a/tips/images/dnn_tips_05.jpeg b/tips/images/dnn_tips_05.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..634cfaeb5335f28931b887a2721260d047c8a35b GIT binary patch literal 17230 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 literal 0 HcmV?d00001 diff --git a/tips/images/dnn_tips_06.jpeg b/tips/images/dnn_tips_06.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..80dd76daa7ed81b008ea9268dc138548b4274289 GIT binary patch literal 24483 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