【问题标题】:Grouping bar3 plots like bar分组 bar3 像 bar 一样的图
【发布时间】:2011-03-17 02:10:30
【问题描述】:

我想知道是否可以将 bar 的相同分组行为绘制到 bar3 中。 例如,如果你绘制

  bar(rand(3));

每个点获得 3 条; bar 对每个 x 的不同 y 值进行分组。现在我想对 3D 数据做同样的事情。那就是我有几个二维数据切片,我想将它们可视化为条形组。那么,如果我的数据是

data = rand(3,3,2);

我希望将data(1,1,:) 视为一组酒吧,将data(1,2,:) 视为另一组,依此类推。

有可能吗?我找不到实现这一目标的方法。

编辑:我正在添加更多细节,以便更好地解释它。

假设我们有两个或更多数据集{x_(i,j)^s}。我需要的是分组在同一网格位置(i,j),所有集合s。在this question 中,他们将数据集并排分组,而不是按元素分组,如下所示:

x1(s1) x1(s2) x1(s3)   x2(s1) x2(s2) x2(s3)   x3(s1) x3(s2) x3(s3)
x4(s1) x4(s2) x4(s3)   x5(s1) x5(s2) x5(s3)   x6(s1) x6(s2) x6(s3)
x7(s1) x7(s2) x7(s3)   x8(s1) x8(s2) x8(s3)   x9(s1) x9(s2) x9(s3)

我想要bar 命令行为,当放置多个数据集时它倾向于分组。我想知道是否可以。

【问题讨论】:

  • This duplicate question 说明如何对 3-D 条形图进行分组。
  • 虽然他们正在解决分组问题,但我需要将所有 x_1、x_2 和 x_3 分组在一起,在同一个网格中。

标签: matlab 3d bar-chart


【解决方案1】:

我不确定我是否完全理解,但如果您正在寻找像 bar(rand(3)) 提到的分组行为,那么您可以尝试

figure; bar3(rand(5),'grouped');
% or maybe
figure; bar3(rand(5),'stacked');

或尝试重新排列 data 中的数据,以便它可以更好地与带有 reshape 的 bar3 一起使用:

data = rand(3,3,2);
% now each data(i, j, :) will be in single row 
changeddata = reshape(data , [size(data , 1)*size(data , 2) 2]);
figure; bar3(changeddata);
figure; bar3(changeddata ,'grouped');
figure; bar3(changeddata ,'stacked');

如果您可以提供一个代码示例说明它在一组中的外观,可能有助于更好地理解您的问题。

【讨论】:

  • 谢谢,问题是我不知道如何生成那种图表......向你展示......我想要这样的东西:{+.-} {+.- } {+.-} 分组在一行,然后 {+.-} {+.-} {+.-} 另一组数据分组在下一行,其中 '+' '.'和 '-' 是数据值,在这种情况下,我有 3 组数据,例如,rand(2,3,3)
【解决方案2】:

如果您想在 3D 条形图中对条形图进行分组,但您喜欢小分组(假设每组 2 或 3 个条形图),那么您可以简单地利用 bar3 中的 Y 参数: BAR3(Y,Z,宽度) 因此,您可以使用两个移位的 Y 向量指定两组条形的位置。

示例: bar3(0:3:9,rand(4,4),0.3) 坚持,稍等 bar3(1:3:10,rand(4,4),0.3)

然后您可以按照适合您的方式编辑标签。

【讨论】:

    猜你喜欢
    • 2014-11-12
    • 1970-01-01
    • 2011-05-29
    • 2021-12-13
    • 2015-07-02
    • 2020-10-11
    • 2017-12-28
    • 2014-12-15
    • 2019-02-08
    相关资源
    最近更新 更多