106 votes

MatPlotLib : Plusieurs ensembles de données sur le même nuage de points

Je veux tracer plusieurs ensembles de données sur le même nuage de points :

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

Ce qui précède ne montre que les scatter() les plus récents

J'ai aussi essayé :

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

166voto

nate c Points 3909

Vous avez besoin d'une référence Axes pour continuer à dessiner sur le même sous-tracé.

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

39voto

bro-grammer Points 2932

Je suis tombé sur cette question car j'avais exactement le même problème. Bien que la réponse acceptée fonctionne bien, mais avec la version matplotlib 2.1.0, il est assez simple d'avoir deux graphiques scatter dans un graphique sans utiliser une référence à 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()

9voto

Steve Tjoa Points 15116

Je ne sais pas, ça marche bien pour moi. Commandes exactes :

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

3voto

MaVe Points 590

Vous pouvez également le faire facilement dans Pandas, si vos données sont représentées dans un cadre de données, comme décrit ici :

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X