Correlato a this question, voglio un grafico a dispersione 3D con i colori prescritti per ciascun punto. L'esempio pubblicato nella domanda funziona sul mio sistema, ma dopo il primo ridisegno (ad esempio dopo aver salvato o ruotando l'immagine) il colore sembra essere perso, cioè tutti i punti sono disegnati in blu con le solite informazioni di profondità. Si prega di consultare l'esempio modificato di seguito.Colore dispersione 3D Matplotlib perso dopo il ridisegno
Il mio sistema è Python 2.6.7 con matplotlib 1.1.0 installato da macports su mac 10.8.0. Io uso il backend MacOSX.
Qualcuno sa come aggirare questo problema?
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
# Create Map
cm = plt.get_cmap("RdYlGn")
x = np.random.rand(30)
y = np.random.rand(30)
z = np.random.rand(30)
col = np.arange(30)
fig = plt.figure()
ax3D = fig.add_subplot(111, projection='3d')
ax3D.scatter(x, y, z, s=30, c=col, marker='o', cmap=cm)
plt.savefig('image1.png')
plt.savefig('image2.png')
Qui ci sono le due immagini, ottengo:
Hm, lo stesso su Windows. Se commento la riga 'col = np.arange (30) ', entrambi i grafici risultano identici. Non posso spiegare perché però. 'pyplot' è un modulo stateful e non penso sia saggio aprire una nuova figura senza chiudere quella vecchia. Se mantieni sempre una sola figura aperta, penso che tali effetti potrebbero essere prevenuti. –
Ho appena notato che il codice utilizza effettivamente due cifre. Questa non era la causa del problema, però. Ho rimosso la prima cifra dal codice di esempio e il problema persiste. Grazie per aver sottolineato che il problema esiste anche su Windows. Mi sembra che questa sia una specie di bug. –
Proprio come una nota per i futuri visitatori, questo sembra essere risolto in MatPlotLib 1.2.0 :) – Poik