MATLAB-使用回调更新曲面图的颜色
我只想通过回调更改一个surface plots CdataMATLAB-使用回调更新曲面图的颜色,matlab,Matlab,我只想通过回调更改一个surface plots Cdata cyl = surf(X_Length,Y_Circle,Z_Circle,'Cdata',map100); 我在试这个 cyl.Cdata = map200; 但这行不通。有人知道正确的方法吗 这是全部代码。 我首先创建圆柱体 map100 = getCylinderHeatMap(filename); [X_Length,Y_Circle,Z_Circle,map100] = createSurfCylinderIniti
cyl = surf(X_Length,Y_Circle,Z_Circle,'Cdata',map100);
我在试这个
cyl.Cdata = map200;
但这行不通。有人知道正确的方法吗
这是全部代码。
我首先创建圆柱体
map100 = getCylinderHeatMap(filename);
[X_Length,Y_Circle,Z_Circle,map100] = createSurfCylinderInitial(map100);
cyl = surf(X_Length,Y_Circle,Z_Circle,'Cdata',map100);
splitFileName = strsplit(string(T{1,1}),'.');
title(compose("3D Cylinder Heatmap Plot" + "\n" + "Time: " + splitFileName{1,1}));
zlabel("Z-Position");
ylabel("Y-Position");
xlabel("X-Length(Cm)");
set(gca,'Ydir','reverse')
colormap(myHeatMap);
colorbar;
shading interp
Maximum_Value = 450;
Minimum_Value = 50;
caxis([Minimum_Value Maximum_Value]);
在回调中,我更新了颜色
function []= sliderCallback(b,T,myHeatMap,cyl)
value = round(b.Value);
%Testing lines load your matrix%
filename = strcat('\Users\Ali\Desktop\Documents\DataVis\Projekt\data\day\', string(T{value,1}));
map100 = getCylinderHeatMap(filename);
splitFileName = strsplit(string(T{value,1}),'.');
map100 = createSurfCylinderMapOnly(map100);
%surf(X_Length,Y_Circle,Z_Circle,'Cdata',map100);
cyl.CData = map100;
title(compose("3D Cylinder Heatmap Plot" + "\n" + "Time: " + splitFileName{1,1}));
zlabel("Z-Position");
ylabel("Y-Position");
xlabel("X-Length(Cm)");
set(gca,'Ydir','reverse');
colormap(myHeatMap);
colorbar;
shading interp
%
Maximum_Value = 450;
Minimum_Value = 50;
caxis([Minimum_Value Maximum_Value]);
end
但当我按下回调键时,什么也没发生。
我想我需要了解如何重新绘制圆柱体,但这正是我为了节省计算能力而试图避免的。只需更新彩色地图。只要
Cdata
与旧地图数据具有相同的高度和宽度(map100
dimensions=map200
dimensions),就应该无任何问题地替换彩色数据。在这里,我创建了一个随机的Cdata
彩色地图,但是当然,这个数组可以设置为您想要的任何uint8
或double
值。我建议在使用回调函数之前,确保在回调函数中定义了Cdata
cyl = surf(X_Length,Y_Circle,Z_Circle,'Cdata',map100);
shading interp
%Setting the surf to new test data%
[mapHeight,mapWidth] = size(map100);
map200 = rand(mapHeight,mapWidth);
cyl.CData = map200;
只要
Cdata
在正确的范围和正确的大小内,就可以正常工作<代码>Cdata必须与map100
的大小相同。什么是“它不起作用”?它是否给出错误消息?它会使你的屏幕空白吗?它根本就没有任何效果吗?请澄清。我想我需要在新地图数据之后重新绘制圆柱体。有没有ide介绍如何做到这一点?请不要将代码作为注释发布,而是更新您的问题以进一步澄清。@Mr.Gomer我很困惑,您是否只是试图在特定轴上重新绘制?