Matplotlib 3D Scatter Plot Couleurs de points très légers
-
28-10-2019 - |
Question
J'ai utilisé la commande ci-dessous pour créer un tracé de dispersion 3D:
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
sizeseq = 2
colorseq = "k"
fig = plt.figure(1, (5,5), dpi=300)
ax = Axes3D(fig)
ax.view_init(20, -45)
x, y, z = [1,2,3,4,5,6,7,8,9,10], [1,2,3,4,5,6,7,8,9,10], [1,2,3,4,5,6,7,8,9,10]
ax.scatter(x, y, z, c=colorseq, s=sizeseq, lw=0, alpha=.8)
plt.show()
Mais la couleur des points a l'air si légère même lorsque je mets Alpha à 1. Ils ont presque l'air d'être derrière un masque. Il semble également dépendre de la position 3D des SOT individuels. Existe-t-il un moyen de rendre tous les points vraiment sombres et opaques?
La solution
Cela semble se disperser en utilisant un effet 3D sophistiqué afin que vous puissiez faire la distinction entre les points au premier plan et les points en arrière-plan. Vous devrez peut-être pirater MPLOT3D pour que cela cesse de le faire.
Alternativement, vous pourrez peut-être utiliser Plot3D qui ne montre pas ce comportement.
ax.plot3D(x, y, z, 'k.', alpha=.8)
Autres conseils
Avec Alpha = 0,8 points, semblent déjà très transparents. N'utilisez pas Alpha.
De plus, vous pouvez donner un aspect plus sombre à vos points en dessinant leurs édgelines de couleur plus foncée que leur facecolor respectif.
Utiliser le paramètre de mot-clé Scatter edgecolor
/edgecolors
ou réglé après la création de dispersion (par exemple pour gras tous les points avec une bordure noire) avec myscatterplot.set_edgecolors(color)