How to make IPython notebook matplotlib plot inline

后端 未结 10 2169
轮回少年
轮回少年 2020-11-22 14:37

I am trying to use IPython notebook on MacOS X with Python 2.7.2 and IPython 1.1.0.

I cannot get matplotlib graphics to show up inline.

import matplo         


        
相关标签:
10条回答
  • 2020-11-22 15:00

    Use the %pylab inline magic command.

    0 讨论(0)
  • 2020-11-22 15:02

    You can simulate this problem with a syntax mistake, however, %matplotlib inline won't resolve the issue.

    First an example of the right way to create a plot. Everything works as expected with the imports and magic that eNord9 supplied.

    df_randNumbers1 = pd.DataFrame(np.random.randint(0,100,size=(100, 6)), columns=list('ABCDEF'))
    
    df_randNumbers1.ix[:,["A","B"]].plot.kde()
    

    However, by leaving the () off the end of the plot type you receive a somewhat ambiguous non-error.

    Erronious code:

    df_randNumbers1.ix[:,["A","B"]].plot.kde
    

    Example error:

    <bound method FramePlotMethods.kde of <pandas.tools.plotting.FramePlotMethods object at 0x000001DDAF029588>>
    

    Other than this one line message, there is no stack trace or other obvious reason to think you made a syntax error. The plot doesn't print.

    0 讨论(0)
  • 2020-11-22 15:04

    I used %matplotlib inline in the first cell of the notebook and it works. I think you should try:

    %matplotlib inline
    
    import matplotlib
    import numpy as np
    import matplotlib.pyplot as plt
    

    You can also always start all your IPython kernels in inline mode by default by setting the following config options in your config files:

    c.IPKernelApp.matplotlib=<CaselessStrEnum>
      Default: None
      Choices: ['auto', 'gtk', 'gtk3', 'inline', 'nbagg', 'notebook', 'osx', 'qt', 'qt4', 'qt5', 'tk', 'wx']
      Configure matplotlib for interactive use with the default matplotlib backend.
    
    0 讨论(0)
  • 2020-11-22 15:05

    I had the same problem when I was running the plotting commands in separate cells in Jupyter:

    In [1]:  %matplotlib inline
             import matplotlib
             import matplotlib.pyplot as plt
             import numpy as np
    In [2]:  x = np.array([1, 3, 4])
             y = np.array([1, 5, 3])
    In [3]:  fig = plt.figure()
             <Figure size 432x288 with 0 Axes>                      #this might be the problem
    In [4]:  ax = fig.add_subplot(1, 1, 1)
    In [5]:  ax.scatter(x, y)
    Out[5]:  <matplotlib.collections.PathCollection at 0x12341234>  # CAN'T SEE ANY PLOT :(
    In [6]:  plt.show()                                             # STILL CAN'T SEE IT :(
    

    The problem was solved by merging the plotting commands into a single cell:

    In [1]:  %matplotlib inline
             import matplotlib
             import matplotlib.pyplot as plt
             import numpy as np
    In [2]:  x = np.array([1, 3, 4])
             y = np.array([1, 5, 3])
    In [3]:  fig = plt.figure()
             ax = fig.add_subplot(1, 1, 1)
             ax.scatter(x, y)
    Out[3]:  <matplotlib.collections.PathCollection at 0x12341234>
             # AND HERE APPEARS THE PLOT AS DESIRED :)
    
    0 讨论(0)
  • 2020-11-22 15:08

    To make matplotlib inline by default in Jupyter (IPython 3):

    1. Edit file ~/.ipython/profile_default/ipython_config.py

    2. Add line c.InteractiveShellApp.matplotlib = 'inline'

    Please note that adding this line to ipython_notebook_config.py would not work. Otherwise it works well with Jupyter and IPython 3.1.0

    0 讨论(0)
  • 2020-11-22 15:10

    If your matplotlib version is above 1.4, it is also possible to use

    IPython 3.x and above

    %matplotlib notebook
    
    import matplotlib.pyplot as plt
    

    older versions

    %matplotlib nbagg
    
    import matplotlib.pyplot as plt
    

    Both will activate the nbagg backend, which enables interactivity.

    0 讨论(0)
提交回复
热议问题