如何使用颜色贴图而不是纯色填充面片对象?
【腾讯云】亏本大甩卖,服务器4核16G 1年370元(带宽12M,系统盘120GB SSD盘,月流量2000GB)!!!!!!
云产品 配置 价格
服务器 1核2G,带宽5M,系统盘50GB SSD盘,月流量500GB 38元/年
MySQL 1核1G 19元/年
服务器 16核32G,带宽18M,系统盘250GB SSD盘,月流量5000GB 1197元/年
点我进入腾讯云,查看更多详情

I need to create a plot like in this image:

model that i want to replicate

I wrote this code:

close all

x = [NaN 1 3 7 9 23 8];
y = [NaN 2 6 7 8 2 1];
z = [NaN 1 4 5 5 4 1];

for n = 1:length(z)-1
    x1 = x(n);
    x2 = x(n+1);
    y1 = y(n);
    y2 = y(n+1);
    z1 = z(n);
    z2 = z(n+1);
    p = patch([x1 x2 x2 x1], [y1 y2 y2 y1], [0 0 z2 z1], [0 1 1]);
    set(p, 'LineStyle', 'none');
    plot3([x1 x2], [y1 y2], [z1 z2], 'b-', 'linewidth', 3);
    hold on
end

view(3);
light

And I get this:

Model generated by this code

This is okay, but every patch face has a solid color, where I would like to have a color gradient based on the Z value, like in the first image where lowest z values are azure and highest z values are white (with a gradient from lowest to highest).

How can I modify my script to get this effect?

#0

There are a number of ways to define your patches, and a number of ways to color them as well. Here's a way to create your coordinate data without a for loop and plot and color your patches with a single call to the function patch:

x = [NaN 1 3 7 9 23 8];  %# Sample x data
y = [NaN 2 6 7 8 2 1];   %# Sample y data
z = [NaN 1 4 5 5 4 1];   %# Sample z data

N = numel(x);                        %# The number of sample data points
X = [x; x([1 1],[N 1:N-1]); x];      %# X coordinates (one patch per column)
Y = [y; y([1 1],[N 1:N-1]); y];      %# Y coordinates (one patch per column)
Z = [z; z([N 1:N-1]); zeros(2,N)];   %# Z coordinates (one patch per column)
C = round(63.*Z./max(Z(:)))+1;       %# Color map index
map = [linspace(0,1,64).' ...       %'# Color map (64 values spanning from
       ones(64,2)];                  %#   white to cyan)

figure();                               %# Open a new figure
patch(X,Y,Z,C,'FaceColor','interp',...  %# Plot the patches
      'EdgeColor','none');
colormap(map);                          %# Update color map
hold on;                                %# Add to the plot
line(X(1:2,:),Y(1:2,:),Z(1:2,:),...     %# Plot the line
     'Color','b','LineWidth',2);
view(3);                                %# Change the view

And this will give you the following plot, with patches colored white at the highest values and fading to cyan at the lowest values:

enter image description here

Explanation of the indexed color mapping...

The variable map above is a 64-by-3 matrix of values between 0 and 1. Each row represents an RGB triplet, thus defining a unique color ranging from cyan in row 1 to white in row 64. This is used as the figure color map. The Face color data in C is a set of row indices into this color map, one for each value in Z. The lowest values in Z are mapped to an index of 1 (cyan in the color map) while the largest values are mapped to an index of 64 (white in the color map).

推荐文章

如何使用Javascript连接Android项目中现有的SQLite数据库?

如何使用Javascript连接Android项目中现有的SQLite数据库?

推荐文章

一段时间后,Ruby web spidering脚本被终止

一段时间后,Ruby web spidering脚本被终止

推荐文章

打印机属性silverlight com互操作和浏览器外

打印机属性silverlight com互操作和浏览器外

推荐文章

为什么更喜欢基于模板的静态断言而不是基于typedef的静态断言?

为什么更喜欢基于模板的静态断言而不是基于typedef的静态断言?

推荐文章

创建新的Expect对象时cgi perl文件中的Apache[PTY Errors]

创建新的Expect对象时cgi perl文件中的Apache[PTY Errors]

推荐文章

Gridview中的自定义排序

Gridview中的自定义排序

推荐文章

当逻辑发生变化时,更新单元测试的正确方法是什么?

当逻辑发生变化时,更新单元测试的正确方法是什么?

推荐文章

如何分割RTF文件

如何分割RTF文件

推荐文章

如何以编程方式插入两个按钮?

如何以编程方式插入两个按钮?

推荐文章

面向对象语言与基于对象语言的区别

面向对象语言与基于对象语言的区别

推荐文章

JPGraph库死了吗?

JPGraph库死了吗?

推荐文章

如何修改正则表达式

如何修改正则表达式

推荐文章

使用posix信号量实现生产者和消费者

使用posix信号量实现生产者和消费者

推荐文章

如何在Boost::Program_选项中支持配置文件语法“key value”?

如何在Boost::Program_选项中支持配置文件语法“key value”?

推荐文章

为什么我的图像周围有一个黑色的正方形,但是只有IE:-(

为什么我的图像周围有一个黑色的正方形,但是只有IE:-(

推荐文章

DOS BAT命令:如何接受分号作为输入

DOS BAT命令:如何接受分号作为输入