tracé filaire coloré dans matplotlib
Je suis en train de la couleur d'un fil de fer de la parcelle en fonction de la valeur z. Je ne peux pas trouver un des exemples de code sur internet.
Voici un exemple de surface de la parcelle qui a les couleurs que je veux et un fil de fer de la parcelle où je n'arrive pas à obtenir les couleurs sur les lignes:
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm
import matplotlib.pyplot as plt
# some numbers for the data
P=12000 #W
Q=1 #kg/s
DT=3 #K
cp=4169.32 #J/kgK
dDT=np.logspace(-2,0,20,endpoint=True)
dQ=Q*np.logspace(-3,-1,20,endpoint=True)
# the plotting data
m1,m2=np.meshgrid(dDT,dQ)
err=cp*np.sqrt((m1*Q)**2+(m2*DT)**2)/P
# the wiremesh plot that i need fixed
fig=plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot_wireframe(m1, m2, err, color=err/err.max(),cmap='jet')
ax.set_xlabel('dDT')
ax.set_ylabel('DQ')
ax.set_zlabel('relative error')
# the surface plot that has the colors i want
fig = plt.figure()
ax = fig.gca(projection='3d')
surf = ax.plot_surface(m1, m2, err,rstride=1, cstride=1, cmap=cm.jet,
linewidth=0.1, antialiased=False)
fig.colorbar(surf, shrink=0.5, aspect=5)
ax.set_xlabel('dDT')
ax.set_ylabel('DQ')
ax.set_zlabel('relative error')
plt.show()
Merci pour toute aide!
source d'informationauteur user1805743
Vous devez vous connecter pour publier un commentaire.
Lorsque vous utilisez plot_wireframe, chaque ligne peut avoir une seule couleur.
Au lieu de cela, vous pouvez utiliser plot_surface.
Pour obtenir plot_surface pour définir la edgecolors, vous avez besoin de lui donner facecolors.
Ensuite, vous pouvez définir l'alpha de facecolors à zéro.
J'ai eu un problème similaire avec de la couleur et de dimensionnement des cercles en fonction d'une variable qui n'a pas fonctionné non plus. Donc ma solution est de bin les valeurs des variables et de la boucle sur les bacs. J'ai masqué les données telles que le tableau
mask
ne contiennent uniquement les données avec des valeurs dans ce bac.Je sais c'est pas très élégant, mais dans mon cas il a fait le travail 😉
Peut-être vous avez besoin d'utiliser
plot_surface
à la place?