Scaling color with selected axis data
3 次查看(过去 30 天)
显示 更早的评论
I want to plot a function z = f (x,y), but I want the lines (y-axis) to be the color scale.
This is my code:
% parameters
x= [0:1:30]' ;
y= linspace(0.1,10,length(x)) ;
% function
if (x <= max(x)*ones(size(x)) )
z = (x./max(x)).^y ;
else
z = 1 ;
end
% Plot
fig1 = plot3(x,y,z) ;
view([-120 20])
xlabel('x')
ylabel('y')
zlabel('z')
colorbar
2 个评论
采纳的回答
darova
2019-9-23
编辑:darova
2019-9-23
Why not use surf()?
Color lines using patch()
clc,clear
% parameters
x= [0:1:30]' ;
y= linspace(0.1,10,length(x)) ;
[X,Y] = meshgrid(x,y);
X(end+1,:) = nan; % put NaN where line ends
Y(end+1,:) = nan;
% function
Z = (X./max(x)).^Y ;
% plot preparations
n = length(x);
cm = jet(n); % create 31 colors
z0 = linspace(min(Z(:)),max(Z(:)),n);
cmap = interp1(z0,cm,Z(:)); % get color for each Z
% cmap(isnan(cmap)) = 0; % replace NaN
% Plot
cla
f = 1:length(Z(:))-1;
p = patch('Vertices',[X(:),Y(:),Z(:)], ...
'Faces', [f' f'+1],...
'EdgeColor','interp', ...
'FaceVertexCData',cmap);
% 'Marker','.');
view([-120 20])
xlabel('x')
ylabel('y')
zlabel('z')
colorbar
% if graphical driver fails
% opengl software
0 个评论
更多回答(1 个)
Ankit
2019-9-23
Hello Aikaterini,
Please try this out:
% parameters
x= [0:1:30]' ;
y= linspace(0.1,10,length(x)) ;
% function
if (x <= max(x)*ones(size(x)) )
z = (x./max(x)).^y ;
else
z = 1 ;
end
% Plot
fig1 = plot3(x,y,z) ;
view([-120 20])
xlabel('x')
ylabel('y')
zlabel('z')
cb = colorbar;
set(gca, 'clim', get(gca, 'ylim'));
set(cb, 'Ticks', get(gca, 'ytick'));
Regards
Ankit
2 个评论
Ankit
2019-9-23
Just give it a try! here i get the colormap and the later set it to the colorbar. But I dont see the difference Just to give you an Idea!
% parameters
x= [0:1:30]' ;
y= linspace(0.1,10,length(x)) ;
% function
if (x <= max(x)*ones(size(x)) )
z = (x./max(x)).^y ;
else
z = 1 ;
end
% Plot
fig1 = plot3(x,y,z) ;
view([-120 20])
xlabel('x')
ylabel('y')
zlabel('z')
cmap = colormap(gca);
cb = colorbar;
set(gca, 'clim', get(gca, 'ylim'));
set(cb, 'colormap', cmap);
set(cb, 'Ticks', get(gca, 'ytick'));
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Line Plots 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!