Относительно this question, я хочу трехмерный график рассеяния с заданными цветами для каждой точки. Пример, опубликованный в вопросе, работает в моей системе, но после первого перерисовки (например, после сохранения или если я поворачиваю изображение) цвет кажется потерянным, т. Е. Все точки рисуются синим цветом с обычной информацией о глубине. См. Приведенный ниже пример.Matplotlib 3D-цвет рассеяния, потерянный после перерисовывания
Моя система Python 2.6.7 с matplotlib 1.1.0 установлена из macports на mac 10.8.0. Я использую сервер MacOSX.
Кто-нибудь знает, как обойти эту проблему?
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')
Вот два изображения, я получаю:
Hm, то же самое на окнах. Если я прокомментирую строку 'col = np.arange (30) ', обе графики будут идентичными. Не могу объяснить, почему. 'pyplot' является модулем с сохранением состояния, и я не думаю, что было бы разумно открыть новую фигуру, не закрывая старую. Если держать только одну фигуру открытой во все времена, я думаю, что такие эффекты могут быть предотвращены. –
Я только заметил, что код фактически использует две цифры. Однако это не было причиной проблемы. Я удалил первую цифру из кода примера, и проблема не устранена. Спасибо за указание, что проблема также существует в Windows. Мне кажется, что это какая-то ошибка. –
Как и примечание для будущих посетителей, это, по-видимому, исправлено в MatPlotLib 1.2.0 :) – Poik