在同一散点图上显示多个数据集

112 投票
3 回答
367314 浏览
提问于 2025-04-16 07:34

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

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()

3 个回答

9

我也不太清楚,不过对我来说一切正常。具体的命令如下:

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()
40

我遇到了这个问题,因为我也碰到了完全一样的情况。虽然被接受的答案效果不错,但在 2.1.0 版本的 matplotlib 中,其实很简单就能在一个图里画两个散点图,而不需要引用 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()
172

你需要一个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()

enter image description here

撰写回答