Matplotlib 3D Colores de gráfico de dispersión de puntos muy ligeros
-
28-10-2019 - |
Pregunta
Usé el comando a continuación para crear una trama de dispersión 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()
Pero el color de los puntos se ve tan ligero incluso cuando pongo alfa en 1. Casi parecen estar detrás de una máscara. También parece dependiente de la posición 3D de los SOT individuales. ¿Hay alguna manera de hacer que todos los puntos se vean realmente oscuros y opacos?
Solución
Esto parece estar disperso usando un efecto 3D elegante para que pueda distinguir entre puntos en primer plano y puntos en el fondo. Es posible que tengas que hackear mplot3d para que deje de hacerlo.
Alternativamente, es posible que pueda usar Plot3D, que no muestra este comportamiento.
ax.plot3D(x, y, z, 'k.', alpha=.8)
Otros consejos
Con alfa = 0.8 puntos ya se ven muy transparentes. No uses alfa.
Además, puede dar un aspecto más oscuro a sus puntos dibujando sus edificios en un color más oscuro que su respectivo facecolor.
Utilice el parámetro de palabras clave de dispersión edgecolor
/edgecolors
o establecido después de la creación de dispersión (por ejemplo, en negrita todos los puntos con un borde negro) con myscatterplot.set_edgecolors(color)