直方图箱位置放置文本分类数据

28日视图(30天)
你好,
我想找本位置分类数据的直方图。使用文本我可以计数的数量为每一本像下面的例子:
C =分类(X, 1:1:长度(categorical_edges_x) categorical_edges_x);
h1 =直方图(C);
xloc = h1。BinEdges;
yloc = h1。值;
文本(xloc (1: end-1) yloc, num2str (yloc '),“绿色”,“底”,“水平的”,“中心”);
问题是,它不喜欢分类,然后返回下列错误:
未被认可的方法、财产或字段“BinEdges”类“matlab.graphics.chart.primitive.categorical.Histogram”。
有什么建议吗?

接受的答案

沃斯
沃斯 2022年7月20日
您可以使用 h1.Categories 而不是 h1.BinEdges
% X和categorical_edges_x猜测你的样子
categorical_edges_x = {“A”“B”“C”' D ' ' E '};
X =兰迪(元素个数(categorical_edges_x), 10);
%的分类数组
C =分类(X, 1:元素个数(categorical_edges_x) categorical_edges_x);
%的直方图
h1 =直方图(C);
%的文本
xloc = 1:元素个数(h1.Categories);
yloc = h1.Values;
文本(xloc yloc sprintfc (' % d 'yloc),“绿色”,“底”,“水平的”,“中心”)

答案(1)

亚当Danz
亚当Danz 2022年7月20日
既然你x数据分类,您正在使用一个绝对统治者。这使得很难位置文本数字值。
选项1:不要使用分类数据
使用数字数据直方图,然后应用x-tick标签的类别名称。你可以这样做 酒吧 如果你想保持cateogries之间的差距。这将创建一个数字xruler你可以沿着x轴位置文本的任何地方。
选项2 沿着cateogory:把你的标签值
@Voss 提供一个很好的例子 其他回答这个页面上 。你也可以把文本底部的酒吧在白色字体颜色,建议另一个风格。
选项3 :添加一个第二行标记标签的绝对统治者
如果你宁愿使用cateogrical价值观和你想要的标签底部的轴而不是重叠的类别名称
A = [1 3 3;2 1 3;1 1 2];
值= (1、2、3);
categoryNames = {“红”“绿色”“蓝”};
C =分类(A值categoryNames);
h1 =直方图(C);
ax =祖先(h1,“轴”);
tickValues = vertcat (ax。XTickLabel’, num2cell(值));
newTickLabels = sprintf (' % s \ \换行符% .0f \ n”,tickValues {:});
斧子。XTickLabel = newTickLabels;

类别

找到更多的在分类数组帮助中心文件交换

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!