Python语法错误:无效的语法%matplotlib inline。

21

我在我的Python脚本中遇到了这个错误:

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

from utils import progress_bar_downloader
import os
#Hosting files on my dropbox since downloading from google code is painful
#Original project hosting is here: https://code.google.com/p/hmm-speech-recognition/downloads/list
#Audio is included in the zip file
link = 'https://dl.dropboxusercontent.com/u/15378192/audio.tar.gz'
dlname = 'audio.tar.gz'

if not os.path.exists('./%s' % dlname):
    progress_bar_downloader(link, dlname)
    os.system('tar xzf %s' % dlname)
else:
    print('%s already downloaded!' % dlname)

我想使用matplotlib,但它出现语法错误,我尝试过sudo apt-get install python-matplotlib。

6个回答

28

如果您没有使用Jupyter IPython笔记本,请注释(或删除)该行,一切都将正常工作,并且如果您从控制台运行Python脚本,则会打开单独的绘图窗口。

但是,如果您正在使用Jupyter IPython笔记本,则您的笔记本中的第一个Python代码单元应该有"%matplotlib inline"这一行,以便您能够查看任何绘图。


7

"%matplotlib inline" 不是有效的Python代码,因此您无法将其放在脚本中。

我假设您正在使用Jupyter笔记本? 如果是这样,在第一个单元格中放置它,所有东西都应该正常工作。


我不明白,第一个单元格是什么意思? - Prajakta Dumbre
1
当然!这是Python脚本的无效语法。 - Chanaka Fernando

3

注释 [ %matplotlib inline ]

添加 [ plt.show() ]

简单可用的代码:

import pandas_datareader.data as web
import datetime
import matplotlib.pyplot as plt
# %matplotlib inline

start = datetime.datetime(2012,1,1)
end = datetime.datetime(2017,1,1)

tesla = web.DataReader('TSLA','yahoo',start,end)
tesla['Open'].plot()
plt.show()

2
"

"%matplotlib inline"是一个魔术指令,最适用于Jupyter IPython笔记本。此命令使图像在使用Jupyter笔记本时自动内联显示在浏览器中,无需调用show()。IPython是支持这些魔法命令的核心,但在这种情况下,仅从控制台使用IPython是不够的,因为此特定调用尝试内联显示图形。不确定它是否与任何其他组合一起使用,但要开始,请使用Jupyter笔记本。

您只能在单元格内使用此代码。按Shift+Enter执行它。

"
In []: %matplotlib inline

由于这不是有效的Python代码,如果我们将其包含在Python脚本中,即使使用import或其他机制从Jupyter笔记本执行脚本,也会返回语法错误。

与任何其他快捷方式一样,如果您不想使用Jupyter笔记本,则可以从Python脚本中删除“%matplotlib inline”,并在结尾处添加show()以显示您的绘图。


谢谢您提供的解决方案,但是我遇到了一个奇怪的问题。我在jupyter ubuntu14.04上运行了一段代码,没有加入这行代码也能正常工作。但是当我安装了ubuntu 18.04并在jupyter上运行同样的代码时,出现了错误,需要加入这行代码才能解决。为什么会出现这个问题呢? - user1

2
我在使用Spyder时,当我使用%matplotlib inline时遇到了相同的语法错误。 当我将其替换为以下代码行时,我想要绘制的Series new_obj 成功显示在控制台上:
``` import matplotlib matplotlib.use('TkAgg') import matplotlib.pyplot as plt
# your code here ```
"最初的回答"
    import matplotlib.pyplot as plt
    new_obj.resample('M').sum().plot(kind="bar")
    plt.show()

1

%matplotlib inline 只在IPython控制台中工作良好,否则在Jupyter Notebook中它会非常显著和频繁地工作。因此,如果您想使用Matplotlib,则建议使用Jupyter Notebook。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接