Làm thế nào tôi có thể tạo một ô 3D với một gradient màu cho các điểm? Xem ví dụ bên dưới, hoạt động cho ô phân tán 2D.Matplotlib 3D scatter plot với gradient màu
Chỉnh sửa (nhờ Chris): Những gì tôi mong đợi thấy từ ô 3D là độ dốc màu của các điểm khác nhau, từ đỏ sang xanh lục như trong ô phân tán 2D. Những gì tôi thấy trong ô phân tán 3D chỉ là các điểm màu đỏ.
Giải pháp: vì một số lý do (liên quan đến ví dụ về gradient mà tôi đã sao chép ở nơi khác), tôi đặt xrange thành len-1, điều này sẽ làm rối tung mọi thứ trong ô 3D.
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 = [cm(float(i)/(29)) for i in xrange(29)] # BAD!!!
col = [cm(float(i)/(30)) for i in xrange(30)]
# 2D Plot
fig = plt.figure()
ax = fig.add_subplot(111)
ax.scatter(x, y, s=10, c=col, marker='o')
# 3D Plot
fig = plt.figure()
ax3D = fig.add_subplot(111, projection='3d')
ax3D.scatter(x, y, z, s=10, c=col, marker='o')
plt.show()
Có gì sai với âm mưu phân tán 3D? Những gì bạn mong đợi để nhìn thấy từ nó và những gì bạn thực sự nhìn thấy? Từ bạn mã lệnh gọi đến ['Axes3D.scatter'] (http://matplotlib.sourceforge.net/mpl_toolkits/mplot3d/tutorial.html#scatter-plots) có vẻ ổn. – Chris
Những gì tôi mong đợi để xem từ cốt truyện 3D là một gradient màu của các điểm khác nhau, từ màu đỏ sang màu xanh lá cây như trong ô phân tán 2D. Những gì tôi thấy trong âm mưu phân tán 3D chỉ là các điểm màu đỏ. –