如何在Matlab中创建颜色渐变,以便绘制y = y(x)的2D线图,并使用另一个依赖于x的变量对其进行着色,使得z = z(x)。我也可以使用散点图或点图。
我还希望有一个色彩图传奇类型的东西,显示颜色渐变及其实际的z表示。这种东西在VisIt和ParaView等可视化工具中很常见,但我还是无法在Matlab中弄清楚。
答案 0 :(得分:3)
我知道这样做的唯一方法是使用surf
:
% Create some sample data:
x = cumsum(rand(1,20)); % X data
y = cumsum(rand(1,20)); % Y data
z = 1:20; % "Color" data
% Plot data:
surf([x(:) x(:)], [y(:) y(:)], [z(:) z(:)], ... % Reshape and replicate data
'FaceColor', 'none', ... % Don't bother filling faces with color
'EdgeColor', 'interp', ... % Use interpolated color for edges
'LineWidth', 2); % Make a thicker line
view(2); % Default 2-D view
colorbar; % Add a colorbar
情节:
答案 1 :(得分:3)
如果散点图很好,可以使用4th input to scatter
:
x = -10:0.01:10;
y = sinc(x);
z = sin(x);
scatter(x,y,[],z,'fill')
其中z
是颜色。
答案 2 :(得分:2)
要连续操纵线条的颜色,您需要使用surface
。
初看起来,这个函数看起来对绘制三维曲面非常有用,它为线条着色提供了比基本plot
函数更多的灵活性。我们可以使用网格的边来绘制我们的线,并利用顶点颜色C
来沿边缘渲染插值颜色。
您可以查看full list of rendering properties,但您最想要的是
以下是改编自MATLAB Answers post
的示例x = 0:.05:2*pi;
y = sin(x);
z = zeros(size(x)); % We don't need a z-coordinate since we are plotting a 2d function
C = cos(x); % This is the color, vary with x in this case.
surface([x;x],[y;y],[z;z],[C;C],...
'FaceColor','none',...
'EdgeColor','interp');
答案 3 :(得分:0)
jet(10)
。该示例将生成10 * 3矩阵。interp1
使用数据在RGB空间中的值之间进行插值,方法是将第一种颜色设置为最低值,将最后一种颜色设置为最高值。这将生成一个n * 3矩阵,其中n是数据点的数量。scatter
与可选参数c
一起使用,以使用插值颜色绘制点。colorbar
以显示彩条。