Powiązany z this question, chcę 3D wykres punktowy z zalecanymi kolorami dla każdego punktu. Przykład zamieszczony w pytaniu działa na moim systemie, ale po pierwszym odświeżeniu (na przykład po zapisaniu lub obróceniu obrazu) kolor wydaje się być utracony, tj. Wszystkie punkty są rysowane w kolorze niebieskim ze zwykłymi informacjami o głębi. Zobacz zmodyfikowany przykład poniżej.Matplotlib 3D kolor rozproszony utracony po przerysowaniu
Mój system to Python 2.6.7 z zainstalowanym matplotlib 1.1.0 z Macports na Mac 10.8.0. Używam backendu MacOSX.
Czy ktoś wie, jak obejść ten problem?
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')
Oto dwa zdjęcia, otrzymuję:
Hm, to samo w oknach. Jeśli skomentuję linię 'col = np.arange (30) ', oba wykresy są identyczne. Nie potrafię jednak wytłumaczyć dlaczego. 'pyplot' jest modułem stanowym i nie sądzę, że mądrze jest otworzyć nową figurę bez zamykania starego. Jeśli tylko jedna postać będzie otwarta przez cały czas, myślę, że można temu zapobiec. –
Właśnie zauważyłem, że kod faktycznie używa dwóch liczb. Nie było to jednak przyczyną problemu. Usunąłem pierwszą cyfrę z kodu przykładowego i problem nadal występuje. Dzięki za wskazanie, że problem występuje również w oknach. Wydaje mi się, że to jakiś błąd. –
Tak jak w przypadku przyszłych użytkowników, wydaje się, że jest to poprawione w MatPlotLib 1.2.0 :) – Poik