我想按升序绘制附加到分类数据(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]。但相反,我得到了这个: 因此,x 轴元素的顺序是令人满意的,但这些值遵循一个我尚未弄清楚的奇怪顺序(在我的原始代码中)。在这里的例子中,它的顺序与原始 y 的顺序相反,但我没有发现发生这种情况的原因。
我很想知道这背后的解释,并寻求替代代码。 预先感谢您。
要修复您的代码,请将最后一行替换为:
scatter(x_sort,y)
当分类数组重新排序时,分散函数会自动对 y 轴进行排序,因此您可以通过包含 y(n_sort) 来排序两次。