Matlab三维图修改colorbar刻度范围时如何避免改变原图色彩
Matlab colorbar刻度调整解决方案
你直接修改caxis会同步改变坐标轴的全局色彩映射规则,因此会导致三维图颜色同步变化。想要保留原图色彩仅修改colorbar的显示刻度,只需单独修改colorbar对象的刻度属性即可,无需调整caxis参数。
具体修改方法
- 保留原有控制色彩映射的
caxis([0 80])配置,该参数不要修改 - 捕获colorbar的对象句柄,手动替换刻度标签
修改后的核心代码段
% 其余原有代码保持不变 s = surf(X,Y,Z,heat,'VertexNormals',nv, 'EdgeColor','none'); axis([0 400 -200 200 -200 200]) colormap('parula') lighting gouraud camlight material dull % 保留原色彩映射范围,请勿修改该参数 caxis([0 80]) % 捕获colorbar句柄 cb = colorbar; % 按实际映射关系设置刻度和对应显示标签 % 示例为线性映射:原刻度范围0~80对应显示范围50~450,共7个刻度 cb.Ticks = linspace(0,80,7); cb.TickLabels = arrayfun(@num2str, linspace(50,450,7), 'UniformOutput', false); drawnow
实现说明
该方案本质是仅替换colorbar的刻度显示文本,底层将数据映射到色卡的规则没有任何改动,因此三维图的显示色彩会和原有效果完全一致,仅colorbar上的刻度值调整为你需要的范围。如果你的数值对应关系为非线性,只需按需调整cb.TickLabels的取值即可,只需保证Ticks和TickLabels的数组长度一致。
内容的提问来源于stack exchange,提问作者Codexing
相关产品推荐
相关产品推荐

