Liên quan đến this question, tôi muốn có một ô phân tán 3D với các màu được quy định cho mỗi điểm. Ví dụ được đăng trong câu hỏi hoạt động trên hệ thống của tôi, nhưng sau lần vẽ đầu tiên (ví dụ sau khi lưu hoặc nếu tôi xoay hình ảnh), màu dường như bị mất, tức là tất cả các điểm được vẽ bằng màu xanh với thông tin chiều sâu thông thường. Vui lòng xem ví dụ đã sửa đổi bên dưới.Màu sắc phân tán 3D của Matplotlib bị mất sau khi vẽ lại
Hệ thống của tôi là Python 2.6.7 với matplotlib 1.1.0 được cài đặt từ macports trên máy Mac 10.8.0. Tôi sử dụng phần mềm phụ trợ MacOSX.
Có ai biết cách phá vỡ vấn đề này không?
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')
Dưới đây là hai hình ảnh, tôi nhận được:
Hm, giống nhau trên cửa sổ. Nếu tôi nhận xét dòng 'col = np.arange (30) ', cả hai ô đều giống hệt nhau. Không thể giải thích lý do tại sao. 'pyplot' là một mô-đun stateful, và tôi không nghĩ rằng nó là khôn ngoan để mở một hình mới mà không đóng cái cũ. Nếu chỉ giữ một hình mở ra mọi lúc, tôi nghĩ rằng các hiệu ứng như vậy có thể được ngăn chặn. –
Tôi chỉ nhận thấy rằng mã thực sự sử dụng hai số liệu. Tuy nhiên, đây không phải là nguyên nhân của vấn đề. Tôi đã xóa hình đầu tiên khỏi mã ví dụ và sự cố vẫn tiếp diễn. Cảm ơn bạn đã chỉ ra rằng sự cố cũng tồn tại trên cửa sổ. Dường như với tôi rằng đây là một loại lỗi. –
Cũng giống như một lưu ý cho khách truy cập trong tương lai, điều này dường như được sửa trong MatPlotLib 1.2.0 :) – Poik