MATLAB R2016a中如何使scatterhist条形与标记颜色一致?
解决MATLAB R2016a中scatterhist条形与标记颜色不一致的问题
你的问题出在对scatterhist创建的坐标轴结构理解上——在R2016a版本中,这个函数会生成三个独立的坐标轴:中间是散点图轴,顶部是X方向的直方图轴,右侧是Y方向的直方图轴。你之前用get(gca,'children')只能拿到当前激活的散点图轴的子对象(也就是散点标记),根本没触及到直方图的条形元素,这就是颜色没同步的原因。而且默认情况下,直方图会使用标记颜色的半透明版本,所以你看到的是偏浅的红色。
下面是具体的修复步骤:
获取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直方图轴。修改直方图条形的颜色
分别访问两个直方图轴的子对象(条形),设置它们的填充色和边框色为你指定的纯红色:% 处理顶部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);(可选)确保散点标记颜色完全一致
如果你想让散点的填充和边框也统一为纯红色,可以补充这段:scatter_markers = get(h(1), 'Children'); set(scatter_markers, 'MarkerFaceColor', myColour, 'MarkerEdgeColor', myColour);
这样操作后,直方图的条形颜色就会和你设置的myColour完全一致,不会再出现偏浅的半透明色调了。
内容的提问来源于stack exchange,提问作者z8080
相关产品推荐
相关产品推荐

