Tôi có một lô các loại sau đây:Làm thế nào để làm cho colorbar tham khảo mốc trong không gian 3D-cốt truyện và không phải là bề mặt trong Matlab
Tôi đã tạo ra bề mặt màu đen-trắng bằng cách sử dụng surf
- chức năng và các điểm đánh dấu tôi đã vẽ bằng cách sử dụng plot3
-chức năng. Đối với mỗi điểm đánh dấu, tôi đã xác định một bản đồ màu giữa Đỏ-Vàng-Xanh tùy thuộc vào giá trị của điểm đánh dấu. Như bạn có thể thấy từ cốt truyện, colorbar
đề cập đến khoảnh khắc bề mặt nhưng tôi muốn nó tham chiếu đến các điểm đánh dấu. Tôi có thể làm cái này như thế nào?
Cảm ơn bạn!
Dưới đây là MWe cơ bản hiển thị những gì tôi làm bây giờ:
% Plot the surface with a colormap
Z = peaks;
Z = peaks./max(Z(:));
Z = (Z+1)*3/2;
surf(Z)
colormap(flipud(gray))
shading interp
hold on
% Create the 4-dimensional marker data
x = (50-10).*rand(50,1) + 10;
y = (50-10).*rand(50,1) + 10;
z = (3-1).*rand(50,1) + 1;
q = 5.*rand(50,1); % This dimension is used to select the color
% Create the color map for the markers
c1=[0 1 0]; %G
c2=[1 1 0]; %Y
c3=[1 0 0]; %R
n1 = 20;
n2 = 20;
cmap=[linspace(c1(1),c2(1),n1);linspace(c1(2),c2(2),n1);linspace(c1(3),c2(3),n1)];
cmap(:,end+1:end+n2)=[linspace(c2(1),c3(1),n2);linspace(c2(2),c3(2),n2);linspace(c2(3),c3(3),n2)];
cmap = cmap';
% Select the colors for the markers
marker_colors = zeros(size(50, 1), 3);
q_interval = max(q)-min(q);
q_int = q_interval/(n1+n2);
q_vals = zeros(n1+n2,1);
q_vals(1) = min(q);
for i = 2:size(q_vals,1)
q_vals(i) = min(q) + (i-1)*q_int;
end
for i = 1:50
d = abs(q_vals - q(i));
ind = find(d == min(d));
marker_colors(i,:) = cmap(ind,:);
% Plot the marker
plot3(x(i), y(i), z(i), 'o', 'color', [0 0 0], 'MarkerFaceColor', marker_colors(i,:))
end
% Lastly I plot the colorbar, which refers to the surface... :/
colorbar
Thực tiễn tốt để bao gồm [mcve] trong stackoverlfow. –
Roger rằng, sắp tới :) – jjepsuomi
Bạn có thể chỉ định điểm đánh dấu cho trục colormap (ở đây là thang độ xám) không? Nếu vậy, bạn có thể sử dụng kết cấu trên bề mặt để trông giống như hình lục giác ... – Crowley