Tout d'abord, je suis désolé pour mon mauvais anglais.
Ma question est de savoir comment je peux colorer une région spécifique avec une couleur différente (ou grille) sur la surface d'une sphère 3D dans matplolib3d.
Réponses:
0 pour la réponse № 1Il est possible de colorer des régions spécifiques (cellules) en utilisant le facecolors
mot-clé, qui requiert une valeur RVB (A) pour chaque cellule. Vous pouvez soit créer cela manuellement (un shape(z)
tableau de valeurs RVB (A)), mais il est également possible d’utiliser une palette de couleurs pour cela. Par exemple, en utilisant l'exemple de globe de matplotlib:
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import numpy as np
plt.close("all")
fig = plt.figure()
ax = fig.add_subplot(111, projection="3d")
u = np.linspace(0, 2 * np.pi, 100)
v = np.linspace(0, np.pi, 100)
x = 10 * np.outer(np.cos(u), np.sin(v))
y = 10 * np.outer(np.sin(u), np.sin(v))
z = 10 * np.outer(np.ones(np.size(u)), np.cos(v))
# When creating `c` from data, `c` needs to be normalized to {0-1}
c = np.zeros_like(z)
c[30:40,30:40] = 1
ax.plot_surface(x, y, z, rstride=2, cstride=2, facecolors=plt.cm.PuBu(c))
Ou, si vous voulez spécifier manuellement une couleur:
c = np.ones((100,100,4)) # shape(z) x 4 array
c[:,:,:] = [0.9, 0.5, 0.1, 1] # R,G,B,A color globe
c[30:40,30:40,:] = [0.4, 0.3, 0.2, 1] # R,G,B,A color patch
ax.plot_surface(x, y, z, rstride=2, cstride=2, facecolors=c)