Tôi có một nhiệm vụ đơn giản nên có một giải pháp đơn giản, nhưng tôi đã cố gắng trong nhiều ngày nay. Tôi cố gắng cụ thể.Colormap có kích thước của facecolors với mplot3d
Tôi cố vẽ một bề mặt bằng mplot3d của matplotlib và plot_surface. Khi tôi vẽ bề mặt của tập dữ liệu 'z' và cố gắng phóng tỷ lệ bản đồ thành giá trị lớn nhất định, tôi thay đổi thuộc tính 'vmax' thành giá trị này. Điều đó hoạt động rất tốt.
Khi tôi cố vẽ một bề mặt của một tập dữ liệu (z) và sử dụng các facecolors của tập dữ liệu thứ hai (fc), điều này cũng hoạt động tốt.
Khi tôi muốn chia tỷ lệ bản đồ của các facecolors, thuộc tính vmax bị loại bỏ bởi các giá trị facecolors. Vmax do đó không có hiệu lực (try1). Các dòng cũng biến mất, nhưng đó là một vấn đề khác.
Đồng thời cố thay đổi giá trị của tập dữ liệu facecolor (fc) không có hiệu ứng mong muốn (try2).
tôi cố gắng để có được một nhân vật với một bản đồ màu thu nhỏ (như trong hình 'thu nhỏ' phía dưới) nhưng quy mô đến facecolors, và không phải là z-giá trị.
Đoạn code dưới đây là những gì tôi có bây giờ, và kết quả như thế này:
Có ai biết những gì tôi đang thiếu ở đây? Bất kỳ suy nghĩ được đánh giá cao!
import pylab as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
plt.ion()
# creating dataset
profile = np.arange(20)**2
z = profile.repeat(20).reshape(20,20)
fc= np.rot90(z.copy())
x = np.arange(z.shape[0])
y = np.arange(z.shape[1])
X, Y = np.meshgrid(x,y)
# plotting
vmax = 100
fig = plt.figure()
ax = fig.add_subplot(1,4,1, projection='3d', azim=210)
ax.plot_surface(X,Y,z, cmap=plt.cm.jet, cstride=1, rstride=1)
ax.set_title('normal')
ax = fig.add_subplot(1,4,2, projection='3d', azim=210)
ax.plot_surface(X,Y,z, cmap=plt.cm.jet, cstride=1, rstride=1, vmax=vmax)
ax.set_title('scaled')
ax = fig.add_subplot(1,4,3, projection='3d', azim=210)
ax.plot_surface(X,Y,z, facecolors=plt.cm.jet(fc), cstride=1, rstride=1, vmax=vmax)
ax.set_title('rotated (attempt1)')
ax = fig.add_subplot(1,4,4, projection='3d', azim=210)
fc[fc> vmax] = vmax
ax.plot_surface(X,Y,z, facecolors=plt.cm.jet(fc), cstride=1, rstride=1)
ax.set_title('rotated (attempt2)')
Bạn có tìm hiểu cách lấy lại các đường màu đen không? Tôi nghĩ rằng tôi đang gặp vấn đề tương tự: http://stackoverflow.com/questions/12355410/fine-tuning-a-surf-plot-using-mplot3d và tôi đang đấu tranh để có được những dòng hiển thị. – Dan
Tôi thấy vấn đề của bạn đã được giải quyết ngay bây giờ, tuyệt vời :-) – Niels