Je suis un programmeur débutant qui étudie en tant qu'étudiant à temps partiel dans une société de jeux appelée Tecross. Cette fois, alors que j'étudiais à l'école doctorale, j'ai eu un peu de mal à dessiner un graphique 3D avec python pour analyser les données, donc je l'écrirai moi-même. Si cela aide quelqu'un ...
Dessinez un graphique comme celui-ci. Le temps chevauche le libellé de l'axe, mais je m'en fiche. Utilisez matplotlib et Axes3D.
J'ai fait référence à [Matplotlib] Créer un graphe linéaire 3D! Merci beaucoup.
# -*- coding: utf-8 -*-
import numpy as np ###Je ne veux pas utiliser numpy cette fois
import matplotlib.pyplot as plt ###Nécessaire pour dessiner des graphiques indépendamment de 2D3D
from mpl_toolkits.mplot3d import Axes3D ###Requis pour la 3D
# (x, y, z)
x = [1, 2, 3, 4, 5]
y = [1, 2, 3, 4, 5]
z = [1, 2, 3, 4, 5]
#Tracer en 3D
fig = plt.figure()
ax = Axes3D(fig)
ax.plot(x, y, z)
#Étiquette d'axe
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_zlabel('z')
#afficher
plt.show()
Si vous l'exécutez, ce sera comme ça
Allons croustillant.
Si vous utilisez l'instruction for, c'est un moment.
# -*- coding: utf-8 -*-
import numpy as np ###Cette fois, nous utiliserons un tableau numpy, il est donc nécessaire
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
###Préparer une boîte graphique 3D(Peut-être)
fig = plt.figure()
ax = Axes3D(fig)
###Rendre l'axe des x commun
x = [1, 2, 3, 4, 5]
###Cette fois, nous allons créer trois données en un seul graphique.
for i in range(3):
###Avec 5 éléments, tous les éléments sont i
y = np.full(5,i)
###Un nombre aléatoire avec 5 éléments et 0 ou plus et 1 ou moins éléments
z = np.random.rand(5)
#Tracer en 3D
ax.plot(x, y, z)
#Étiquette d'axe
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_zlabel('z')
#afficher
plt.show()
Quand tu cours
Je me sens comme cela. Allons croustillant.
Par exemple, une image qui définit l'axe des y sur "Janvier, février, mars".
# -*- coding: utf-8 -*-
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure()
ax = Axes3D(fig)
###Un tableau contenant des nombres sur l'axe des y
y_num = np.array([])
###Un tableau contenant la chaîne de caractères que vous souhaitez définir sur l'axe des y
y_axis = np.array([])
x = [1, 2, 3, 4, 5]
for i in range(3):
y = np.full(5,i)
z = np.random.rand(5)
ax.plot(x, y, z)
y_num = np.append(y_num,i)
y_axis = np.append(y_axis,"{}data".format(i))
### y_num est[0,1,2]
### y_l'axe est[0data,1data,2data]
plt.yticks(y_num,y_axis)
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_zlabel('z')
plt.show()
Quand tu cours
Terminer ~~! !! !! C'est facile. Au début, je ne pouvais pas utiliser ax.yticks () au lieu de plt.yticks () ...
Dans le deuxième graphique, si l'espacement numérique des axes est trop petit ou trop grand, vous pouvez utiliser la fonction ax.set_xticks (). Définissons l'axe des y sur la date et l'heure du dernier graphique.
# -*- coding: utf-8 -*-
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
###Nécessaire si vous souhaitez afficher la date et l'heure
from datetime import datetime
import time
fig = plt.figure()
ax = Axes3D(fig)
y_num = np.array([])
y_axis = np.array([])
x = [1, 2, 3, 4, 5]
for i in range(3):
y = np.full(5,i)
z = np.random.rand(5)
ax.plot(x, y, z)
y_num = np.append(y_num,i)
### y_Ajouter la date et l'heure sous forme de chaîne à l'axe
y_axis = np.append(y_axis,"2019-1-1 11:11:0{}".format(i))
###L'heure à laquelle il est devenu une chaîne est modifiée en type datetime
temp_datetime = datetime.strptime(y_axis[i],'%Y-%m-%d %H:%M:%S')
###Extraire uniquement le temps et le rendre de type chaîne
y_axis[i] = temp_datetime.strftime('%H:%M:%S')
plt.yticks(y_num,y_axis)
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_zlabel('z')
plt.show()
Quand tu cours
J'ai pu dessiner le graphique que je visais! !! Toutes nos félicitations.
Oh, ** Si vous voulez traiter la date et l'heure avec python, utilisez datetime. ** ** Les gens qui en sont dépendants en sont dépendants. Lorsqu'il s'agit de données de recherche, le type de date et d'heure peut ne pas être datetime, mais il est plus facile de le changer en datetime.
Était-ce un peu trop croustillant? Veuillez commenter si vous souhaitez une explication. Ajouter. Il peut être écrit d'une manière manquante pour la date et l'heure. S'il vous plaît laissez-moi savoir si vous pouvez écrire avec élégance.
Maintenant que je peux dessiner des graphiques, je dois étudier tôt. ..
Recommended Posts