Comment créer un diagramme de dispersion 3D en utilisant SciPy (NumPy) et matplotlib en Python. Les exemples de données utilisent iris.csv (http://aima.cs.berkeley.edu/data/iris.csv)
Avec la méthode scipy.genformtxt, vous pouvez directement importer les données du fichier csv au format scipy.array.
Les données au format scipy.array peuvent être traitées comme un tableau ordinaire, et les enregistrements qui remplissent les conditions peuvent être facilement extraits, comme d [d [:, 0]> = 7]. Lorsque vous utilisez plusieurs expressions conditionnelles, concaténez-les avec l'opérateur bit.
Vous pouvez utiliser la méthode scatter3D lors du dessin d'un graphique, mais elle devient extrêmement lourde lorsque le nombre de données est important. La méthode de tracé est meilleure. </ del>
(5/9 postscript) Dans la méthode de tracé , les tracés sont écrasés dans l'ordre dans lequel les données sont lues, donc lorsque les tracés se chevauchent, le contexte tridimensionnel devient étrange. La méthode de dispersion est lourde et difficile à faire pivoter le graphique, mais le contexte tridimensionnel est plus précis. </ del>
(PostScript 5/10) C'était la même chose avec scatter que le chevauchement en trois dimensions était étrange. Cela ressemble à un problème ouvert dans matplotlib. Si vous souhaitez dessiner un beau graphique 3D, vous pouvez utiliser MayaVi.
http://matplotlib.org/mpl_toolkits/mplot3d/faq.html
Vous pouvez spécifier la couleur (couleur du marqueur), ms (taille du marqueur, taille du marqueur), mew (largeur du bord du marqueur, épaisseur de la bordure du marqueur), etc. comme propriétés de la méthode de tracé.
plot3d.py
# coding: UTF-8
from matplotlib import pyplot
from mpl_toolkits.mplot3d import Axes3D
from scipy import genfromtxt
#Lecture de fichiers
d = genfromtxt("./temp/iris.csv", delimiter=",")
#Création de graphes
fig = pyplot.figure()
ax = Axes3D(fig)
#Paramètres d'étiquette d'axe
ax.set_xlabel("X-axis")
ax.set_ylabel("Y-axis")
ax.set_zlabel("Z-axis")
#Réglage de la plage d'affichage
ax.set_xlim(4, 8)
ax.set_ylim(2, 5)
ax.set_zlim(1, 8)
#Réglage des conditions d'extraction
d1 = d[d[:,0] >= 7]
d2 = d[(d[:,0] < 7) & ((d[:,1] > 3) & (d[:,1] <= 3.5))]
d3 = d[(d[:,0] < 7) & ((d[:,1] <= 3) | (d[:,1] > 3.5))]
#Dessin graphique
ax.plot(d1[:,0], d1[:,1], d1[:,2], "o", color="#cccccc", ms=4, mew=0.5)
ax.plot(d2[:,0], d2[:,1], d2[:,2], "o", color="#00cccc", ms=4, mew=0.5)
ax.plot(d3[:,0], d3[:,1], d3[:,2], "o", color="#ff0000", ms=4, mew=0.5)
pyplot.show()
Une fenêtre distincte s'ouvre et le graphique s'affiche. Le graphique peut être tourné librement en le faisant glisser. Vous pouvez générer le fichier png suivant avec l'icône d'enregistrement dans la barre de menus.
Recommended Posts