按升序绘制值,并相应地重新排序分类元素(Matlab)

问题描述 投票:0回答:1

我想按升序绘制附加到分类数据(x 轴中的字符串)的值(在 y 轴中),并相应地对 x 轴中的元素进行重新排序。

我的代码与此示例类似:

s = cellstr(["A";"B";"C";"D"]); % Original data
y = [5; 0.5; 7.8; 2]; % Original data

[~,n_sort] = sort(y);
x = categorical(s);
x_sort = reordercats(x,n_sort);
scatter(x_sort,y(n_sort))

我预计 x 轴为 [B, D, A, C],y 轴为 [0.5, 2, 5, 7.8]。但相反,我得到了这个: output 因此,x 轴元素的顺序是令人满意的,但这些值遵循一个我尚未弄清楚的奇怪顺序(在我的原始代码中)。在这里的例子中,它的顺序与原始 y 的顺序相反,但我没有发现发生这种情况的原因。

我很想知道这背后的解释,并寻求替代代码。 预先感谢您。

matlab sorting categorical
1个回答
0
投票

要修复您的代码,请将最后一行替换为:

scatter(x_sort,y)

当分类数组重新排序时,分散函数会自动对 y 轴进行排序,因此您可以通过包含 y(n_sort) 来排序两次。

© www.soinside.com 2019 - 2024. All rights reserved.