IPtthon笔记本在plt.show()之后停止评估单元格

我正在使用i
Python进行编码.当我打开笔记本并通过SHIFT ENTER运行一些代码时它会运行.但经过一两次,它就不再提供任何输出.这是为什么.我必须再次关闭笔记本打开它然后再运行几次和同样的问题.

这是我用过的代码.

Cell Toolbar:
Question 1: Rotational Invariance of PCA
I(1): Importing the data sets and plotting a scatter plot of the two.
In [1]:

# Channging the working directory
import os
os.getcwd()
path="/Users/file/"
os.chdir(path)
pwd=os.getcwd()
print(pwd)

# Importing the libraries

import pandas as pd
import numpy as np
import scipy as sp

# Mentioning the files to be imported
file=["2d-gaussian.csv","2d-gaussian-rotated.csv"]
# Importing the two csv files in pandas dataframes
XI=pd.read_csv(file[0],header=None)
XII=pd.read_csv(file[1],header=None)
#XI
XII



Out[5]:
0   1
0   1.372310    -2.111748
1   -0.397896   1.968246
2   0.336945    1.338646
3   1.983127    -2.462349
4   -0.846672   0.606716
5   0.582438    -0.645748
6   4.346416    -4.645564
7   0.830186    -0.599138
8   -2.460311   2.096945
9   -1.594642   2.828128
10  3.767641    -3.401645
11  0.455917    -0.224665
12  2.878315    -2.243932
13  -1.062223   0.142675
14  -0.698950   1.113589
15  -4.681619   4.289080
16  0.411498    -0.041293
17  0.276973    0.187699
18  1.500835    -0.284463
19  -0.387535   -0.265205
20  3.594708    -2.581400
21  2.263455    -2.660592
22  -1.686090   1.566998
23  1.381510    -0.944383
24  -0.085535   -1.697205
25  1.030609    -1.448967
26  3.647413    -3.322129
27  -3.474906   2.977695
28  -7.930797   8.506523
29  -0.931702   1.440784
... ... ...
70  4.433750    -2.515612
71  1.495646    -0.058674
72  -0.928938   0.605706
73  -0.890883   -0.005911
74  -2.245630   1.333171
75  -0.707405   0.121334
76  0.675536    -0.822801
77  1.975917    -1.757632
78  -1.239322   2.053495
79  -2.360047   1.842387
80  2.436710    -1.445505
81  0.348497    -0.635207
82  -1.423243   -0.017132
83  0.881054    -1.823523
84  0.052809    1.505141
85  -2.466735   2.406453
86  -0.499472   0.970673
87  4.489547    -4.443907
88  -2.000164   4.125330
89  1.833832    -1.611077
90  -0.944030   0.771001
91  -1.677884   1.920365
92  0.372318    -0.474329
93  -2.073669   2.020200
94  -0.131636   -0.844568
95  -1.011576   1.718216
96  -1.017175   -0.005438
97  5.677248    -4.572855
98  2.179323    -1.704361
99  1.029635    -0.420458
100 rows × 2 columns
The two raw csv files have been imported as data frames. Next we will concatenate both the dataframes into one dataframe to plot a combined scatter plot
In [6]:

# Joining two dataframes into one. 
df_combined=pd.concat([XI,XII],axis=1,ignore_index=True)
df_combined

Out[6]:
0   1   2   3
0   2.463601    -0.522861   1.372310    -2.111748
1   -1.673115   1.110405    -0.397896   1.968246
2   -0.708310   1.184822    0.336945    1.338646
3   3.143426    -0.338861   1.983127    -2.462349
4   -1.027700   -0.169674   -0.846672   0.606716
5   0.868458    -0.044767   0.582438    -0.645748
6   6.358290    -0.211529   4.346416    -4.645564
7   1.010685    0.163375    0.830186    -0.599138
8   -3.222466   -0.256939   -2.460311   2.096945
9   -3.127371   0.872207    -1.594642   2.828128
10  5.069451    0.258798    3.767641    -3.401645
11  0.481244    0.163520    0.455917    -0.224665
12  3.621976    0.448577    2.878315    -2.243932
13  -0.851991   -0.650218   -1.062223   0.142675
14  -1.281659   0.293194    -0.698950   1.113589
15  -6.343242   -0.277567   -4.681619   4.289080
16  0.320172    0.261774    0.411498    -0.041293
17  0.063126    0.328573    0.276973    0.187699
18  1.262396    0.860105    1.500835    -0.284463
19  -0.086500   -0.461557   -0.387535   -0.265205
20  4.367168    0.716517    3.594708    -2.581400
21  3.481827    -0.280818   2.263455    -2.660592
22  -2.300280   -0.084211   -1.686090   1.566998
23  1.644655    0.309095    1.381510    -0.944383
24  1.139623    -1.260587   -0.085535   -1.697205
25  1.753325    -0.295824   1.030609    -1.448967
26  4.928210    0.230011    3.647413    -3.322129
27  -4.562678   -0.351581   -3.474906   2.977695
28  -11.622940  0.407100    -7.930797   8.506523
29  -1.677601   0.359976    -0.931702   1.440784
... ... ... ... ...
70  4.913941    1.356329    4.433750    -2.515612
71  1.099070    1.016093    1.495646    -0.058674
72  -1.085156   -0.228560   -0.928938   0.605706
73  -0.625769   -0.634129   -0.890883   -0.005911
74  -2.530594   -0.645206   -2.245630   1.333171
75  -0.586007   -0.414415   -0.707405   0.121334
76  1.059484    -0.104132   0.675536    -0.822801
77  2.640018    0.154351    1.975917    -1.757632
78  -2.328373   0.575707    -1.239322   2.053495
79  -2.971570   -0.366041   -2.360047   1.842387
80  2.745141    0.700888    2.436710    -1.445505
81  0.695584    -0.202735   0.348497    -0.635207
82  -0.994271   -1.018499   -1.423243   -0.017132
83  1.912425    -0.666426   0.881054    -1.823523
84  -1.026954   1.101637    0.052809    1.505141
85  -3.445865   -0.042626   -2.466735   2.406453
86  -1.039549   0.333189    -0.499472   0.970673
87  6.316906    0.032272    4.489547    -4.443907
88  -4.331379   1.502719    -2.000164   4.125330
89  2.435918    0.157511    1.833832    -1.611077
90  -1.212710   -0.122350   -0.944030   0.771001
91  -2.544347   0.171460    -1.677884   1.920365
92  0.598670    -0.072133   0.372318    -0.474329
93  -2.894802   -0.037809   -2.073669   2.020200
94  0.504119    -0.690281   -0.131636   -0.844568
95  -1.930254   0.499670    -1.011576   1.718216
96  -0.715406   -0.723096   -1.017175   -0.005438
97  7.247917    0.780923    5.677248    -4.572855
98  2.746180    0.335849    2.179323    -1.704361
99  1.025371    0.430754    1.029635    -0.420458
100 rows × 4 columns
Plotting two separate scatter plot of all the four columns onto one scatter diagram
In [ ]:

import matplotlib.pyplot as plt

# Fucntion for scatter plot

def scatter_plot():

    # plots scatter for first two columns(Unrotated Gaussian data)
    plt.scatter(df_combined.ix[:,0], df_combined.ix[:,1],color='red',marker='+')
    # plots scatter for Rotated Gaussian data
    plt.scatter(df_combined.ix[:,2], df_combined.ix[:,3] ,color='green', marker='x')
    legend = plt.legend(loc='upper right')
# set ranges of x and y axes
    plt.xlim([-12,12])
    plt.ylim([-12,12])
    plt.show()

# Function call
scatter_plot()



In [ ]:

def plot_me1():

    # create figure and axes
    fig = plt.figure()
    # split the page into a 1x1 array of subplots and put me in the first one (111)
    # (as a matter of fact, the only one)
    ax = fig.add_subplot(111)

    # plots scatter for x, y1
    ax.scatter(df_combined.ix[:,0], df_combined.ix[:,1], color='red', marker='+', s=100)
    # plots scatter for x, y2
    ax.scatter(df_combined.ix[:,2], df_combined.ix[:,3], color='green', marker='x', s=100)
    plt.xlim([-12,12])
    plt.ylim([-12,12])
    plt.show()

plot_me1()
In [ ]:

最佳答案 你不应该在笔记本中使用plt.show().这将打开一个阻止您的单元格评估的外部窗口.

而是使用%matplotlib内联或酷新的%matplotlib笔记本开始你的笔记本(后者只能使用matplotlib> = 1.4.3和ipython> = 3.0)

在评估每个单元格后,(仍然打开的)图形对象会自动显示在您的笔记本中.

这个最小的代码示例适用于笔记本.请注意,它不会调用pl​​t.show()

%matplotlib inline
import matplotlib.pyplot as plt

x = [1,2,3]
y = [3,2,1]

_ = plt.plot(x,y)

%matplotlib内联只显示图像.

最近添加了%matplotlib笔记本,并提供了交互式后端的许多很酷的功能(缩放,测量……):

点赞