Matlab:排序条形图行数据时如何同步匹配对应国家名称?
解决Matlab排序后国家名称与数据匹配的问题
嘿,你其实已经摸到解决问题的关键啦!你用来排序d2018的那个SortLR2018索引,就是让国家名称cell数组和排序后数据完美对应的核心。
具体操作步骤
你现在已经通过
sort拿到了排序的索引,只需要用这个索引对存储国家名称的Combined数组做同步索引,就能让名称和数据行完全匹配:% 先按你的方式排序double数组 [~,SortLR2018] = sort(d2018(:,4)); LR2018 = d2018(SortLR2018,:); % 同步排序国家名称cell数组 sorted_country_labels = Combined(SortLR2018, 1);之后设置X轴刻度标签时,直接用这个排序后的cell数组就行:
set(gca,'XTickLabel', sorted_country_labels);
为什么这样可行?
sort函数返回的第二个输出参数(也就是SortLR2018),记录的是原数组中元素在排序后数组里的位置索引。比如原数组第5行的元素是排序后的最小值,那SortLR2018(1)就会是5。用这个索引去取cell数组对应行的国家名称,自然就能保证每个名称都和对应的数据行一一对应,不会出现标签错位的情况。
如果需要降序排序(比如找表现最优的国家),只需要给sort加个'descend'参数,索引依然可以直接复用:
[~,SortLR2018] = sort(d2018(:,4), 'descend'); LR2018 = d2018(SortLR2018,:); sorted_country_labels = Combined(SortLR2018, 1);
这样处理后,不管你怎么调整数据的排序顺序,国家名称都会跟着同步变化,条形图的X轴标签就能准确对应每个国家的数据啦!
内容的提问来源于stack exchange,提问作者Wizard
相关产品推荐
相关产品推荐

