在同一散点图上显示多个数据集
我想在同一个散点图上绘制多个数据集:
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()