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 le plus récent scatter()
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()
4 réponses
Vous avez besoin d'une référence à un objet Axes
pour continuer à dessiner sur la même sous-intrigue.
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()
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 diagrammes de dispersion dans un tracé 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()
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()
Vous pouvez aussi le faire facilement dans les Pandas, si vos données sont représentées dans un Dataframe, comme décrit ici:
Http://pandas.pydata.org/pandas-docs/version/0.15.0/visualization.html#scatter-plot