2010-11-24 30 views
42

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

它在同一行套印。 – 2010-11-24 19:00:34

回答

63

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

+4

`fig.add_subplot(111)`中的`111`是什么意思? – Temak 2015-11-18 18:49:58

+0

这是图中子图的排列。第一个数字是多少排子图;第二个数字是多少个子图的列;第三个数字是你现在谈论的子图。在这种情况下,有一行和一列子图(即一个子图),轴正在谈论第一个子图。像fig.add_subplot(3,2,5)这样的东西就是三行两列网格中左下角的子图。 – 2015-11-27 16:10:57

4

我不知道,这对我来说工作正常。确切的命令:

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

我碰到这个问题就来了,因为我有确切同样的问题。尽管接受的答案的作品不错,但与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()