对MATLAB条形图和条形图使用单独的基准值/基线?

对MATLAB条形图和条形图使用单独的基准值/基线?,matlab,plot,Matlab,Plot,是否可以在同一轴上绘制多个条形图或条形图,每个轴使用不同的基本值 当我尝试设置第二个条形图的BaseValue属性时,它也会更改第一个条形图的BaseValue!请参见下面的示例 使用多个轴的解决方案是可行的,但是否可以在不创建其他轴的情况下完成?具体来说,我想设置与我正在绘制的其他数据相关的BaseValue,因此叠加其他轴是不可行的,因为我无法(或我不知道如何?)引用原始轴的坐标 subplot(1,3,1); bar(1:10,'BaseValue',5,'FaceColor','b')

是否可以在同一轴上绘制多个
条形图
条形图
,每个轴使用不同的
基本值

当我尝试设置第二个条形图的
BaseValue
属性时,它也会更改第一个条形图的
BaseValue
!请参见下面的示例

使用多个轴的解决方案是可行的,但是否可以在不创建其他轴的情况下完成?具体来说,我想设置与我正在绘制的其他数据相关的
BaseValue
,因此叠加其他轴是不可行的,因为我无法(或我不知道如何?)引用原始轴的坐标

subplot(1,3,1); 
bar(1:10,'BaseValue',5,'FaceColor','b');
hold on; plot([0 11],[5 5],'k-','LineWidth',2); 
         plot([0 11],[15 15],'k-','LineWidth',2); axis([0 11 0 21]);

subplot(1,3,2); 
bar(11:20,'BaseValue',15,'FaceColor','r');
hold on; plot([0 11],[5 5],'k-','LineWidth',2); 
         plot([0 11],[15 15],'k-','LineWidth',2); axis([0 11 0 21]);

subplot(1,3,3); 
bar(1:10,'BaseValue',5,'FaceColor','b'); hold on;
bar(11:20,'BaseValue',15,'FaceColor','r');
    plot([0 11],[5 5],'k-','LineWidth',2); 
    plot([0 11],[15 15],'k-','LineWidth',2);axis([0 11 0 21]);

这似乎是matlab最近更新中出现的一个变化,因为它在2013a中的性能符合预期,但在2014b中没有。这可能是由于切换到HG2图形,似乎是有意为之<代码>条形图由
条形图(…)
返回的对象具有一个只读的
基线
属性。您可以调整
基线
对象的属性,甚至可以复制它们,但每个轴似乎只有一个属性(例如,轴对象属性
YBaseline

要在新版本中解决此问题,可以使用
'hist'
样式标志,这会导致
bar()
创建面片对象而不是条形图对象:

h(1) = bar(1:10, 'hist', 'b', 'BaseValue',5); hold on;
h(2) = bar(11:20,'hist', 'r', 'BaseValue',15);
由于生成的对象不是
Bar
对象,因此它们不受父轴的
YBaseline
属性的影响,但也不能像对待
Bar
对象那样以标准方式更改属性


(这是Matlab R2014b中的状态;我不确定R2015a可能带来了什么变化…

这似乎是在最近的Matlab更新中显示的变化,因为它在2013a中按预期执行,但在R2014b中给出了“中断”行为。这种行为似乎是半故意的,因为
条形图
对象都有一个
基线
属性,该属性是只读的,并且在给定轴上的所有条形图对象之间总是匹配。我刚刚更新到MATLAB R2015b,此解决方案不再有效!现在使用
hist
样式似乎忽略了
BaseValue
规范。。。啊…甚至只有一个调用
bar(1:10,'hist','b','BaseValue',5)
没有适当调整
基值
对不起,我帮不了你;我们的软件发行量停留在2014b。如果您还没有这样做,那么值得一试向mathworks.PS提交错误报告。我之前做的是通读
bar.m
,发现它列出了一些选项,使您获得了一个传统样式的绘图(
patch
对象,而不是
bar
对象)。你可以仔细看看,看看这是否仍然是真的。