Matplotlib图表在PyCharm中不显示
我在 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 个回答
我让我的图表显示出来的方法是,选择“编辑配置...”然后在执行选项下,勾选“使用Python控制台运行”的选项。我只是用了plt.tight_layout()这个命令。我当时并不是在Notebook里。
plt.show()
只给我显示了图表的静态PNG格式。我需要使用 'mpl.use('Qt5Agg')',这是根据这篇文章的建议 https://www.tutorialspoint.com/how-to-get-an-interactive-plot-of-a-pyplot-when-using-pycharm。
如果你在使用像Pycharm这样的开发工具,不要用 %matplotlib inline
。可以试试:
import matplotlib.pyplot as plt
plt.show()
绘图时显示了一些值,这帮助我找到了可以查看图像的窗口。默认情况下,交互模式是关闭的。我需要打开交互模式。plt.interactive(True)
在绘制图表后,记得添加 plt.show 命令。
plt.show(10)
%
这个符号是用来表示一些特别的功能,叫做 魔法函数。你提到的 %matplotlib inline
是专门为 IPython notebook 这个环境设计的。如果你在普通的 Python 环境中使用魔法函数,就会出现语法错误。
%matplotlib
这个魔法函数是用来指定 matplotlib 的后端,而 inline
这个参数如果不在 IPython notebook 环境中使用,就会出错。
如果你想显示你的图表,可以使用 plt.show
来打开一个交互窗口,或者用 plt.savefig
将图表保存到文件中。例如,
plt.show()
或者
plt.savefig( 'myfig.png' )