Python - 使用matplotlib.pyplot.scatter函数时出错(第一次)

9

我想开始使用matplotlib库,但这是我第一次接触。

所以我输入了以下命令:

import numpy as np
import scipy as sp
import matplotlib.pyplot as plt
data = sp.genfromtxt("web_traffic.tsv", delimiter = "\t");
x = data[:, 0];
y = data[:, 1];
x = x[~sp.isnan(y)];
y = y[~sp.isnan(y)];
plt.scatter(x, y);

我收到了以下错误信息:
<matplotlib.collections.PathCollection object at 0x246abd0>

我不知道是什么原因导致这个问题,我刚刚安装了所需的软件包 scipymatplotlib,但它返回了一个特定的错误。我试图在谷歌上搜索,但没有结果。

我使用的是 openSuse 操作系统,Python 是默认安装的。我的主要目的是开始学习使用 scikit-learn 包。

你能给我一些关于如何解决这个错误的建议吗?


这基本上是__repr__的输出,参见此处此处 - behzad.nouri
我建议使用np.isfinite代替~np.isnan。 - askewchan
2个回答

17

这不是错误信息,而是一个对象的字符串表示。

如果您在交互式shell中运行上面的代码,则看到的是plt.scatter函数返回值的字符串表示。

要实际打开窗口,通常需要在最后调用plt.show()

或者,如果您希望它具有交互性,在您的.matplotlibrc中建议将interactive: True设置为suggested

无关的是,在Python中不需要在行末加上分号。


但是我不应该收到绘图窗口吗?还是说我该如何打开它? - Simon
我正在使用 iep 集成开发环境。我应该如何操作才能看到绘图窗口? - Simon
谢谢您。 - 8protons

2
如 plt.scatter() 的 matplotlib 示例所示:
"""
Simple demo of a scatter plot.
"""
import numpy as np
import matplotlib.pyplot as plt


N = 50
x = np.random.rand(N)
y = np.random.rand(N)
area = np.pi * (15 * np.random.rand(N))**2 # 0 to 15 point radiuses

plt.scatter(x, y, s=area, alpha=0.5)
plt.show()

正如之前的回答所述,您需要调用plt.show()来实际渲染图表。


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