MATLAB中barh图的排序

MATLAB中barh图的排序,matlab,sorting,plot,Matlab,Sorting,Plot,我在barh plot中绘制了数据: 现在我想按升序或降序排序,有人能帮我吗 提前谢谢 干杯, Marko在Matlab中,排序(以及所有数据操作)在生成图形之前进行处理。渲染后,您最多只能更改其外观 我不知道你的(生物信息学?)数据集的细节,但根据你提供的图像,我猜测你有一些向量数据,然后是一个包含字符串的单元格数组,标签 要获取条形图,我们需要: 对数据向量进行排序 重新排列单元格数组以反映新序列 barh() (可选)更改条形图的排序顺序 在Matlab中跟踪默认排序顺序非常重要: b

我在barh plot中绘制了数据:

现在我想按升序或降序排序,有人能帮我吗

提前谢谢

干杯, Marko在Matlab中,排序(以及所有数据操作)在生成图形之前进行处理。渲染后,您最多只能更改其外观

我不知道你的(生物信息学?)数据集的细节,但根据你提供的图像,我猜测你有一些向量
数据
,然后是一个包含字符串的单元格数组,
标签

要获取条形图,我们需要:

  • 对数据向量进行排序
  • 重新排列单元格数组以反映新序列
  • barh()
  • (可选)更改条形图的排序顺序
  • 在Matlab中跟踪默认排序顺序非常重要:

    • barh
      根据向量的索引降序绘制向量(即索引较高的元素首先出现)
    • 排序
      根据向量的值按升序对向量进行排序
    以下是一个简化的示例:

    data = [35.42, 32.9, 36.8];
    labels = { 'FOO_fastqc', 'BAR_fastqc', 'BAZ_fastqc'};
    
    % Sort the Data & Rearrange Labels
    [sorted_data, new_indices] = sort(data); % sorts in *ascending* order
    sorted_labels = labels(new_indices); 
    
    % Plot in Descending Order
    figure();
    barh(sorted_data);
    set(gca,'YTickLabel',sorted_labels);
    
    % Plot in Ascending Order
    figure();
    barh(sorted_data);
    set(gca,'YTickLabel',sorted_labels);
    set(gca,'YDir','reverse'); % Flips the Y Axis
    

    您如何准确地绘制数据?在创建绘图之前,您不能对其进行排序吗?请发布您用于创建
    barh
    绘图的代码,以便我们提供更好的答案。