直方图箱位置放置文本分类数据
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),“绿色”,“底”,“水平的”,“中心”)
0评论
答案(1)
亚当Danz
2022年7月20日
既然你x数据分类,您正在使用一个绝对统治者。这使得很难位置文本数字值。
选项1:不要使用分类数据
使用数字数据直方图,然后应用x-tick标签的类别名称。你可以这样做
酒吧
如果你想保持cateogries之间的差距。这将创建一个数字xruler你可以沿着x轴位置文本的任何地方。
选项2
沿着cateogory:把你的标签值
选项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;