Matlab使用shadedErrorBar时无法使用默认以外的自定义颜色求助
问题原因
raacampbell/shadedErrorBar工具的lineProps参数仅对单字符的Matlab预设颜色(如'r'、'b')做了自动识别逻辑,直接传入十六进制颜色字符串时,工具无法自动判定该参数属于颜色属性,因此会解析失败。
可行解决方法
方法1:传入RGB三元组(兼容性最好,所有Matlab版本通用)
- 先将十六进制颜色转换为0~1取值范围的RGB三元组,示例如下:
% 转换十六进制颜色#A62EF4为RGB数组 lineColor = sscanf('#A62EF4','#%2x%2x%2x',[1 3])/255;
- 调用shadedErrorBar时,将颜色以属性键值对的形式传入
lineProps参数:
ss = shadedErrorBar(x,tav,errbar,'lineProps',{'Color',lineColor},'transparent',true,'patchSaturation',0.08);
如果需要同时设置线型、线宽等其他线条属性,可以直接在元胞数组中追加参数:
ss = shadedErrorBar(x,tav,errbar,'lineProps',{'Color',lineColor,'LineWidth',2,'LineStyle','--'},'transparent',true,'patchSaturation',0.08);
方法2:R2019a及以上版本直接传入十六进制颜色
如果使用的是R2019a及更新的Matlab版本(原生支持十六进制颜色字符串作为Color属性值),可以直接按如下格式编写代码:
ss = shadedErrorBar(x,tav,errbar,'lineProps',{'Color','#A62EF4'},'transparent',true,'patchSaturation',0.08);
自定义阴影区域配色
如果需要同时修改阴影区域的配色,可以在调用函数后修改返回对象的patch属性:
% 沿用上面定义的lineColor作为阴影颜色,也可以替换为其他颜色值 ss.patch.FaceColor = lineColor; % 也可以单独设置阴影的透明度,和patchSaturation参数效果一致 ss.patch.FaceAlpha = 0.08;
内容的提问来源于stack exchange,提问作者Yuval Toren
相关产品推荐
相关产品推荐

