【问题标题】:error in plotting a 3D matrix as a 3D bar graph将 3D 矩阵绘制为 3D 条形图时出错
【发布时间】:2012-08-23 18:51:50
【问题描述】:

您好,我有 3D 矩阵 daily_renewables_excess,我正在尝试为轴上的 x y 和 z 维度绘制 3D 条形图。 大小(daily_renewables_excess)是 11,7,10。所以我试图得到一个 3D 条形图,其中 11 个 x 间隔 x、7 个 y 和 10 个 z。

但是当我尝试时

figure;
bar3(daily_renewables_excess(:,:,:))

我收到一条错误消息“使用 bar3 时出错(第 39 行) 输入必须是二维的。”

根据我对文档的理解,bar3 函数将绘制一个如上所示的 3D 条形图。 我需要以某种方式重新排列矩阵吗?

谢谢你

【问题讨论】:

    标签: matlab multidimensional-array 3d matrix


    【解决方案1】:

    由于您有一个 3D 矩阵(体积),您不能同时显示 3 个间隔(3 轴)+ 条形的比例值(第 4 个变量)。这相当于绘制 4D 图(例如,使用颜色对第 4 维进行颜色编码,使用条形大小对其进行尺寸编码,甚至垂直堆叠)。

    例如,以下卷 D 的大小为 [11x10x7],通过在第 3 (z) 维中进行索引,您可以获得 7 个 bar3 绘图

    % random 3D input
    D = randi(10, [11, 10, 7]);
    [m,n,l] = size(D);
    % plot bar for first z-
    figure; bar3(D(:,:,1));
    

    您可以做的是在x-y- 维度中重塑形状,排序(为了保持有序间隔的概念(分别在x-y- 中)并用bar3 绘制结果矩阵.

    % reshape to x
    Dx = reshape(D, m*l, n);
    Dx = sort(Dx, 1, 'descend'); 
    figure; bar3(Dx)
    

    % reshape to y
    Dy = reshape(D, m, n*l);
    Dy = sort(Dy, 2, 'descend'); 
    figure; bar3(Dy)
    

    【讨论】:

      猜你喜欢
      • 2020-01-06
      • 1970-01-01
      • 2014-05-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-30
      • 1970-01-01
      相关资源
      最近更新 更多