Matplotlib图表在PyCharm中不显示

36 投票
6 回答
73186 浏览
提问于 2025-04-18 16:15

我在 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 个回答

1

我让我的图表显示出来的方法是,选择“编辑配置...”然后在执行选项下,勾选“使用Python控制台运行”的选项。我只是用了plt.tight_layout()这个命令。我当时并不是在Notebook里。

2

plt.show() 只给我显示了图表的静态PNG格式。我需要使用 'mpl.use('Qt5Agg')',这是根据这篇文章的建议 https://www.tutorialspoint.com/how-to-get-an-interactive-plot-of-a-pyplot-when-using-pycharm

2

如果你在使用像Pycharm这样的开发工具,不要用 %matplotlib inline。可以试试:

import matplotlib.pyplot as plt
plt.show()
9

绘图时显示了一些值,这帮助我找到了可以查看图像的窗口。默认情况下,交互模式是关闭的。我需要打开交互模式。plt.interactive(True)

在绘制图表后,记得添加 plt.show 命令。

plt.show(10)
55

% 这个符号是用来表示一些特别的功能,叫做 魔法函数。你提到的 %matplotlib inline 是专门为 IPython notebook 这个环境设计的。如果你在普通的 Python 环境中使用魔法函数,就会出现语法错误。

%matplotlib 这个魔法函数是用来指定 matplotlib 的后端,而 inline 这个参数如果不在 IPython notebook 环境中使用,就会出错。

如果你想显示你的图表,可以使用 plt.show 来打开一个交互窗口,或者用 plt.savefig 将图表保存到文件中。例如,

plt.show()

或者

plt.savefig( 'myfig.png' )

撰写回答