You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MATLAB R2016a中如何使scatterhist条形与标记颜色一致?

解决MATLAB R2016a中scatterhist条形与标记颜色不一致的问题

你的问题出在对scatterhist创建的坐标轴结构理解上——在R2016a版本中,这个函数会生成三个独立的坐标轴:中间是散点图轴,顶部是X方向的直方图轴,右侧是Y方向的直方图轴。你之前用get(gca,'children')只能拿到当前激活的散点图轴的子对象(也就是散点标记),根本没触及到直方图的条形元素,这就是颜色没同步的原因。而且默认情况下,直方图会使用标记颜色的半透明版本,所以你看到的是偏浅的红色。

下面是具体的修复步骤:

  1. 获取scatterhist的所有坐标轴句柄
    调用scatterhist时接收返回值,这样能直接拿到所有子坐标轴的引用:

    x = randn(1,20); y = randn(1,20); 
    myColour = [1 0 0]; % 纯红色
    h = scatterhist(x, y, 'Color', myColour); 
    

    这里h是一个数组:h(1)对应散点图轴,h(2)对应顶部X直方图轴,h(3)对应右侧Y直方图轴。

  2. 修改直方图条形的颜色
    分别访问两个直方图轴的子对象(条形),设置它们的填充色和边框色为你指定的纯红色:

    % 处理顶部X方向直方图
    hist_x = get(h(2), 'Children');
    set(hist_x, 'FaceColor', myColour, 'EdgeColor', myColour);
    
    % 处理右侧Y方向直方图
    hist_y = get(h(3), 'Children');
    set(hist_y, 'FaceColor', myColour, 'EdgeColor', myColour);
    
  3. (可选)确保散点标记颜色完全一致
    如果你想让散点的填充和边框也统一为纯红色,可以补充这段:

    scatter_markers = get(h(1), 'Children');
    set(scatter_markers, 'MarkerFaceColor', myColour, 'MarkerEdgeColor', myColour);
    

这样操作后,直方图的条形颜色就会和你设置的myColour完全一致,不会再出现偏浅的半透明色调了。

内容的提问来源于stack exchange,提问作者z8080

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:22:46