MatPlotLib:同一散点图上的多个数据集


76

我想在同一散点图上绘制多个数据集:

cases = scatter(x[:4], y[:4], s=10, c='b', marker="s")
controls = scatter(x[4:], y[4:], s=10, c='r', marker="o")

show()

上面仅显示了最新的 scatter()

我也尝试过:

plt = subplot(111)
plt.scatter(x[:4], y[:4], s=10, c='b', marker="s")
plt.scatter(x[4:], y[4:], s=10, c='r', marker="o")
show()

1
其叠印在同一行上。
nate c 2010年

Answers:


122

您需要引用一个Axes对象,以保持在同一子图上进行绘制。

import matplotlib.pyplot as plt

x = range(100)
y = range(100,200)
fig = plt.figure()
ax1 = fig.add_subplot(111)

ax1.scatter(x[:4], y[:4], s=10, c='b', marker="s", label='first')
ax1.scatter(x[40:],y[40:], s=10, c='r', marker="o", label='second')
plt.legend(loc='upper left');
plt.show()

在此处输入图片说明


11
是什么111fig.add_subplot(111)意思?
Temak

2
这是该图中子图的排列。第一个数字是子图的行数。第二个数字是子图的列数;第三个数字是您现在正在谈论的子图。在这种情况下,有一个子行和一列子图(即一个子图),并且轴在谈论第一个子图。像fig.add_subplot(3,2,5)这样的东西将是三行两列的网格中的左下子图。
尼尔·史密斯

26

我遇到了同样的问题,因此遇到了这个问题。尽管公认的答案很好,但是对于matplotlib版本来说2.1.0,在一个图中有两个散点图而不用引用还是很简单的。Axes

import matplotlib.pyplot as plt

plt.scatter(x,y, c='b', marker='x', label='1')
plt.scatter(x, y, c='r', marker='s', label='-1')
plt.legend(loc='upper left')
plt.show()

7

我不知道,它对我来说很好。确切的命令:

import scipy, pylab
ax = pylab.subplot(111)
ax.scatter(scipy.randn(100), scipy.randn(100), c='b')
ax.scatter(scipy.randn(100), scipy.randn(100), c='r')
ax.figure.show()

1
我的数据集重叠了:)
奥斯丁·理查森

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.