【问题标题】:How can I create quantitative stacked bar graphs in Tableau Public?如何在 Tableau Public 中创建定量堆叠条形图?
【发布时间】:2011-08-15 18:33:15
【问题描述】:

我的数据如下所示:

Subcategory    Title   Value
Sub1           Name1   2
Sub1           Name2   5
Sub2           Name3   4
Sub2           Name4   1
Sub3           Name5   2
Sub3           Name6   7
Sub4           Name1   7
Sub4           Name2   5
Sub5           Name3   4
Sub5           Name4   3
Sub6           Name5   9
Sub6           Name6   1

将 Title 添加到 Row 字段并将 Sum(Value) 添加到 Size 架子,我得到一个水平条形图,其中条形的长度等于给定标题的值的总和。例如,一个标有 Name1 且长 9 个单位的条,另一个标有 Name2 且长 10 个单位的条,等等。我想给条着色,以便给定子类别对条长度的贡献被绘制在酒吧。因此,Name1 条将有一个 2 个单位长的蓝色条堆叠在一个 7 个单位长的红色条上。名称 2 条将有一个 5 个单位长的蓝色条堆叠在一个 5 个单位长的橙色条上。

但是,当我将子类别添加到颜色架时,比例会发生变化,因此条形的长度现在等于子类别的最大值,而其他值不是堆叠,而是叠加。我没有将 2 个单位的蓝色条堆叠在 7 个单位的红色条上,总长度为 9,而是得到一个由 7 个单位组成的条,其中 2 个单位涂成蓝色。

这将解释从“具有最高值的类别是什么(以及子类别对此有何贡献)?”到“子类别最高的类别是什么?”因为现在 Name1 条现在是 7 个单位,而 Name2 条现在只有 5 个单位长,你看不到其他颜色。

请告诉我是否有办法在 Tableau 中执行此操作,或者如果您是 ggplot2 向导,我很乐意使用 R 代码来执行此操作。

【问题讨论】:

  • 是“尺寸架子”和“颜色架子”的画面术语吗?
  • stackoverflow.com/questions/2578961/… OP 概述了如何创建 100% 堆叠条
  • 是的,这些是特定于 Tableau 的术语。我不是特别喜欢 Tableau 界面,但如果您的数据符合他们的模型,它确实会制作一些非常漂亮的图表。
  • 知道了——我花了一分钟才弄清楚你需要什么,但我知道了,正如我们给你两个几乎相同的答案的 rcs 一样。我相信position = stackgeom_bar 的默认值。至于长标题,您可以手动插入一些 \n 以强制它们以给定的宽度换行和/或考虑调整轴的角度以适应您的目的。但是,如果您将条形重新定向为垂直方向,那可能会更好。无论如何 - 编辑这些东西的代码是:opts(axis.text.x = theme_text(angle = 90)。祝你好运。

标签: r visualization ggplot2 tableau-api stackedbarseries


【解决方案1】:

检查一下,但我不确定颜色是否正确:

library("ggplot2")
p <- ggplot(data=dat, aes(x=Title, y=Value, fill=Subcategory)) +
       geom_bar(position="stack", stat="identity") +
       coord_flip()
print(p)

【讨论】:

  • 检查了这个,它确实有效。当我在整个数据集上使用它时,它的行为有点古怪,因为我的一些标题真的很长,但它确实可以使用固定大小的标题散列。
  • 我对我的数据集进行了子集化,只包含我想要的数百行中的 44 行,但它仍在轴上绘制数百个标题。我需要p &lt;- ggplot(data=dat, aes(x=factor(Title), y=Value, fill=Subcategory)) + geom_bar(position="stack", stat="identity") + coord_flip() 现在我只需要弄清楚为什么 ggplot 翻转了我的图表,因此条形图从右到左而不是正常的从左到右延伸,以及如何将标题限制为固定数量的字符。我要去检查opts(axis.text.x),看看是否有办法做到这一点,也许翻转会自行修复。
  • 您将如何编辑上述内容以使标题按总值顺序绘制?在上面的示例中,顺序为 Name5、Name2、Name1、Name3、Name6、Name4。
  • 更改因子水平的顺序:dat &lt;- transform(dat, Title=reorder(Title, Value, sum))
  • 非常感谢。这行得通。我正在寻找一种将reorder 语句添加到我的ggplot 调用的方法,但我更喜欢这个。出于好奇,是否可以在ggplot 调用中添加reorder 语句来执行此操作,或者是否需要单独的transform?另外,在某个地方我可以找到我可以传递给reorder 的所有参数的列表吗?我知道总和、平均值和中位数。
【解决方案2】:

这应该在 ggplot 中做你想要的:

ggplot(dat, aes(x = Title,y = Value, fill = Subcategory)) + 
  geom_bar(stat = "identity") +
  coord_flip()

【讨论】:

    【解决方案3】:

    在 Tableau 中,将标题放在行上,将值放在列上,将子类别放在颜色上。

    我在 Tableau Public 上放了一个例子——http://public.tableausoftware.com/views/QuantitativeStackedBars/Sheet1?:embed=y

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-25
      • 2016-01-21
      • 1970-01-01
      • 1970-01-01
      • 2017-07-14
      • 1970-01-01
      相关资源
      最近更新 更多