Matplotlib图表在PyCharm中无法显示

36

我在 PyCharm 3.4.1 中运行了以下代码,它标记出 %matplotlib inline 存在语法错误。于是我删除了第一行运行代码,期望会弹出一些图表,但是程序正常结束并显示 Process finished with exit code 0,没有图表显示。

我的问题是: 1. %matplotlib inline 是用来做什么的; 2. 如何让 PyCharm 显示 matplotlib 图表?

%matplotlib inline
from IPython.core.pylabtools import figsize
import numpy as np
from matplotlib import pyplot as plt
figsize(11, 9)

import scipy.stats as stats

dist = stats.beta
n_trials = [0, 1, 2, 3, 4, 5, 8, 15, 50, 500]
data = stats.bernoulli.rvs(0.5, size=n_trials[-1])
x = np.linspace(0, 1, 100)

# For the already prepared, I'm using Binomial's conj. prior.
for k, N in enumerate(n_trials):
    sx = plt.subplot(len(n_trials) / 2, 2, k + 1)
    plt.xlabel("$p$, probability of heads") \
        if k in [0, len(n_trials) - 1] else None
    plt.setp(sx.get_yticklabels(), visible=False)
    heads = data[:N].sum()
    y = dist.pdf(x, 1 + heads, 1 + N - heads)
    plt.plot(x, y, label="observe %d tosses,\n %d heads" % (N, heads))
    plt.fill_between(x, 0, y, color="#348ABD", alpha=0.4)
    plt.vlines(0.5, 0, 4, color="k", linestyles="--", lw=1)

    leg = plt.legend()
    leg.get_frame().set_alpha(0.4)
    plt.autoscale(tight=True)


plt.suptitle("Bayesian updating of posterior probabilities",
             y=1.02,
             fontsize=14)

plt.tight_layout()
6个回答

55
% 符号是用于魔术函数的。你提到的特定魔术函数和参数 %matplotlib inline 是为了在IPython笔记本会话中使用的。在正常的python会话中使用魔术函数会导致语法错误。 %matplotlib 魔术函数是为了指定matplotlib的后端,而参数 inline 如果不在IPython笔记本会话中将产生错误。
要显示你的图形,你应该使用 plt.show 来创建一个交互式窗口或者使用 plt.savefig 将其保存到文件中。例如:
plt.show()
或者
plt.savefig( 'myfig.png' )

是的。我只是在引用函数本身,但添加了一些示例。 - Gabriel
是的,但最好显示完整命令,否则肯定有人会感到困惑! - Padraic Cunningham
同意。很容易忘记学习的经历是什么样子的。 - Gabriel

8

通过显示一些值的图表,我可以看到图片所在的窗口。默认情况下,交互模式是关闭的。我需要打开交互模式。

plt.interactive(True)

在绘制完图表后添加 plt.show 命令。

plt.show(10)

2

2

如果使用像Pycharm这样的IDE,而不是使用%matplotlib inline。尝试使用:

import matplotlib.pyplot as plt
plt.show()

不是按照第二步做的,而是直接使用plt.show(),然后我的两个散点图就显示出来了。 - gary

1

我通过选择“编辑配置”并在执行下勾选“使用Python控制台运行”来显示我的情节。我只是使用了plt.tight_layout()。我没有在笔记本中。


0

%matplotlib指定了matplotlib的后端,使用inline参数可以显示图形并使绘图交互。

%用于在Pycharm中表示Python的魔法函数,即%matplotlib inline成为一个魔法函数。

在Pycharm中,您可以直接使用。

plt.show()

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