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

时间:2010-11-24 18:35:46

标签: python scipy matplotlib

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

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

4 个答案:

答案 0 :(得分:88)

您需要引用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

答案 1 :(得分:13)

我遇到了这个问题,因为我遇到了同样的问题。尽管已接受的答案很有效,但使用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()

答案 2 :(得分:5)

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

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

答案 3 :(得分:1)

如果您的数据在数据框中表示,您也可以在Pandas中轻松完成此操作,如下所述:

http://pandas.pydata.org/pandas-docs/version/0.15.0/visualization.html#scatter-plot