首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在堆叠条形图中添加标记

在堆叠条形图中添加标记
EN

Stack Overflow用户
提问于 2019-05-13 20:29:43
回答 1查看 39关注 0票数 0

在一些帮助下,我能够实现我需要的堆叠条形图。只缺少一个部分:代表中位数的标记。遗憾的是,我想不出如何添加的任何想法,也无法在互联网上找到任何帮助。这张图片显示了我的图表,以及我希望如何按显示的方式添加标记。它不一定是那样的,一件衣服或其他东西也可以做这项工作。

生成绘图的代码:(breite是我导入的excel工作表。可以使用testw并删除testw = breite来测试代码)

代码语言:javascript
复制
% testw = [0.3568 0.452 0.494 0.2982 0.3892 0.675 0.576 0.489 0.745 0.225 ...
%     0.3568 0.452 0.494 0.2982 0.3892 0.675 0.576 0.489 0.745 0.225 ...
%     0.3568 0.452 0.494 0.2982 0.3892 0.675 0.576 0.489 0.745 0.225 ...
%     0.3568 0.452 0.494 0.2982 0.3892 0.675 0.576 0.489 0.745 0.225 ...
%     0.3568 0.452 0.494 0.2982 0.3892 0.675 0.576 0.489 0.745 0.225 ...
%     0.3568 0.452 0.494 0.2982 0.3892 0.675 0.576 0.489 0.745 0.225 ...
%     0.3568 0.452 0.494 0.2982 0.3892 0.675 0.576 0.489 0.745 0.225 ...
%     0.3568 0.452 0.494 0.2982 0.3892 0.675 0.576 0.489 0.745 0.225 ...
%     0.3568 0.452 0.494 0.2982 0.3892 0.675 0.576 0.489 0.745 0.225 ...
%     0.3568 0.452 0.494 0.2982 0.3892 0.675 0.576 0.489 0.745 0.225 ];
testw = breite;

%Datenvorbereitung
gerundet = round(testw,1);

maximum = max(gerundet),1;
anzahl = ceil(maximum / 0.1);

werte = zeros([1 anzahl]);
sz = size(werte);
haeufigkeit = zeros(sz);

for i= 1:anzahl
    werte(i) = 0.1*i;
end

wertebereich = zeros(sz);

for i = 1:anzahl
    wertebereich(i) = 0.1;
end

%Häufigkeitsverteilung
for i = 1:10000
    if gerundet(i) <= 0.2
        haeufigkeit(1) = haeufigkeit(1) + 1
    else
        for j = 2:anzahl
            if gerundet(i) >= werte(j-1) && gerundet(i) < werte(j)
                haeufigkeit(j) = haeufigkeit(j) + 1
            end
        end
    end
end

%Grauwerte
prozentual = zeros(sz);

for i = 1:anzahl
    prozentual(i) = haeufigkeit(i)/sum(haeufigkeit)
end

grauwerte = zeros(sz);

for i = 1:anzahl
    grauwerte(i) = round(1-1*prozentual(i),3);
end

colormap gray
b = bar([wertebereich; nan(size(wertebereich))],'stacked');
% colorbar('Direction','reverse')
colorbar('Ticks',[0, 0.2, 0.4, 0.6 ,0.8, 1],...
         'TickLabels',{'100%','80%','60%','40%','20%', '0%'})

for i = 1:anzahl
     b(1,i).FaceColor = [grauwerte(i) grauwerte(i) grauwerte(i)];
     b(1,i).EdgeColor = 'none';
end
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-13 22:22:25

如果我理解正确的话,只需在代码后面添加如下内容:

代码语言:javascript
复制
hold on
med = median(gerundet);
plot([.5 1.5], [med med], '-', 'color', [.2 .6 1], 'linewidth', 2)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56112396

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档