在直方图/条形图中绘制两个分类数组?

rb612

我有一个分类数组,种族和一个是/否数组,我想以某种方式创建一个堆叠的条形图/直方图,其中每个种族都有自己的条形图,每个条形图分为两种不同的颜色-一种用于受访者说是的,其他人说不。有没有办法在MATLAB中相对简单地做到这一点?至少有一种方法可以创建一张表格来显示每个种族,有多少人说是,有多少人说不?

为了澄清,我的数据集中有1250行,每一行代表一个人的响应。我将其拆分,因此有一个称为YESNO1250x1标称值的标称数组它具有YN我也有一个称为的标称数组RACE,它是1250x1,并选择了5种不同的种族。

我想以某种方式制作一个像这样的直方图,它是在Tableau中制作的(“是”是橙色,蓝色是“否”): 在此处输入图片说明

如果我做不到这一点,那么我至少希望有一个表格可以显示每个种族,然后显示多少人回答“是”,多少人回答“否”。

我尝试执行以下操作:

bar(RACE,YESNO)

而且我知道XData值必须唯一。

因此,我尝试对数据进行直方图处理:

histogram(RACE,YESNO)

我得到的东西看起来像这样:

在此处输入图片说明

这根本不是我想要的。我一直在寻找所有文档,以查看是否有一种方法可以使用此分类数据绘制堆叠的条形图,或者至少可以构建堆叠的直方图,但是似乎没有任何方法可以向我指出正确的方向。对于分类数据的堆叠直方图,我找不到任何内容,bar也不允许我使用当前数据进行建模。

另外,我愿意使用MATLAB中包含医院数据集来查看示例。可以通过类似的方式绘制性别列来反对吸烟。

在MATLAB中有没有解决的办法?

EBH

假设您的数据如下所示:

yesno = categorical(randi(2,1250,1),[1 2],{'no','yes'});
race = categorical(randi(5,1250,1),1:5,{'Asian','Black','BHispanic','White','WHispanic'});

您可以执行以下操作:

% convert everything to numeric:
yn = double(yesno); 
rac = double(race);
% caluculate all frequencies:
data = accumarray([rac yn],1);
% get the categories names:
races = categories(race);   
answers = categories(yesno);
% plotting:
bar(data,0.4,'stacked');
ax = gca;
ax.XTickLabel = races; % set the x-axis ticks to the race names
legend(answers) % add a legend for the colors
colormap(lines(3)) % use nicer colors (close to your example)
ylabel('YES/NO')% set the y-axis lable
% some other minor fixes:
box off
ax.YGrid = 'on';

结果:

酒吧

您可以使用以下方法制作一张桌子:

T = array2table(data.','VariableNames',races,'RowNames',answers)

输出:

T = 
           Asian    Black    BHispanic    White    WHispanic
           _____    _____    _________    _____    _________
    no     126      123      102          128      144      
    yes    145      126      128          105      123  

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

直方图/条形图,条形图中包含两个变量

如何在条形图中绘制两个变量

使用ggplot2在一张图中绘制两个单独的条形图

在条形图中绘制两个y轴以获取列表列表

在直方图中的每个条形上方放置两个值

matplotlib条形图中的两个图例

如何绘制两个相邻的分组条形图

将两个数据框绘制到一个条形图中,以区分它们的值

条形图-两个条形图彼此相邻并且在单独的窗口中绘制条形图

条形图-两个条形图彼此相邻并且在单独的窗口中绘制条形图

如何制作具有两个显示比例的分类变量的分组条形图?

ggplot2条形图,带有两个分类变量

如何更改条形图的顺序(两个分类变量)

如何在matplotlib熊猫中的一个图中组合两个文件的两个条形图

使用matplotlib在一个子图中从熊猫DataFrame绘制两个直方图

比较直方图中的两个向量

一个分组条形图中的两个数据框

如何在堆叠的条形图中的两个水平条之间插入文本

在带有两个y轴的条形图中并排

如何在两个堆栈条形图中修改图例顺序组合

如何并排绘制两个直方图?

使用 ggplot2 在条形图上绘制两个变量

从两个熊猫groupby对象绘制堆叠的条形图?

如何在R中用单个x轴绘制两个分组的条形图(垂直)?

使用Python库绘制共享相同y轴的两个水平条形图

R:绘制具有两个条件的个人百分比的条形图

以并排的条形图绘制两个具有相同列名的数据框

在MATLAB中绘制带有两个y轴和多个条的条形图

为按两个变量分组的数据框绘制堆积条形图