MATLAB:条形图_修改轴上的参数

MATLAB : bar graph_ modify parameters on axis

我有一个条形图,其中包含 2 个不同的数据(每个数据的颜色都不同,如您在图片中所见)。我想移动 x-axis 使其在 y=-100 处交叉(例如)。所以如果数据 = -40,我想要一个从 -100 到 -40 的柱。

另一个问题:是否可以垂直写入 x-axis 的每个值(因为对于所有值,我们看不到任何东西)。

最后一个问题:x_axis 是否可以有 2 个不同的比例?

提前谢谢你,

此致,

这里有一些代码可以让你开始。所有内容均已注释,以便于理解:

clear
clc
close all

%// Generate dummy data
y = -90*rand(1,20);
NumY = numel(y);

HalfData = round(NumY/2);

%// Loop to color half in pink and half in blue
hold all
for k = 1:NumY

    hBar = bar(k,y(k));

    if k <= HalfData
        set(hBar,'FaceColor',[1 0 1])

    else
        set(hBar,'FaceColor',[0 0 1])

    end
end
hold off

%// Get xtick labels and position for future use
xtLabels = cellstr(get(gca,'XTickLabel')).';
xtPos = get(gca,'XTick');

%// Change baseline value
set(hBar,'BaseValue',-40)

%// Get baseline to change its properties if you want
hBaseL = get(hBar,'Baseline');

set(hBaseL,'LineStyle','--','Color','k','LineWidth',3)

%// Adjust axis limits. Remove labels to place them vertically
set(gca,'XLim',[0 NumY],'XTickLabel',{''})

%// Get correct position for xlabel text
YLimPoArrays = min(get(gca,'YLim'));

YLimPoArrays = repmat(YLimPoArrays,numel(xtPos),1);

%// Place text positioned vertically with a small y offset
text(xtPos,YLimPoArrays-3,xtLabels,'HorizontalAlignment','center','Rotation',90,'FontSize',15)

并且输出:

希望对您有所帮助!