r - 如何在 R 中创建(100%)堆叠直方图?

标签 r plot ggplot2 histogram

我的数据集:

我有以下格式的数据(这里是从 CSV 文件导入的)。您可以找到 CSV 格式的示例数据集 here .

PAIR   PREFERENCE
1      5
1      3
1      2
2      4
2      1
2      3

… 等等。一共19对,PREFERENCE范围从 15 ,作为离散值。

我正在努力实现的目标:

我需要的是堆叠直方图,例如每对的 100% 高列,表示 PREFERENCE 的分布值。

类似于 Excel 中的“100% 堆叠列”,或者(虽然不完全相同,所谓的“马赛克图”):



我试过的:

我认为使用 ggplot2 最简单,但我什至不知道从哪里开始。我知道我可以创建一个简单的条形图,例如:
ggplot(d, aes(x=factor(PAIR), y=factor(PREFERENCE))) + geom_bar(position="fill")

......然而,这并没有让我走得很远。所以我尝试了这个,它让我更接近我想要实现的目标,但它仍然使用 PREFERENCE 的计数。 , 我想?请注意 ylab在这里被“计数”,并且值范围为 19。
qplot(factor(PAIR), data=d, geom="bar", fill=factor(PREFERENCE_FIXED))

结果是:

enter image description here
  • 那么,我该怎么做才能让堆叠的条形代表直方图?
  • 或者他们真的已经这样做了吗?
  • 如果是这样,我必须改变什么才能使标签正确(例如,使用百分比而不是“计数”)?

  • 顺便说一句,这与this question 没有真正的关系。 ,并且仅与 this 略微相关(即可能是相同的想法,但不是连续值,而是分组为条形)。

    最佳答案

    也许你想要这样的东西:

    ggplot() + 
        geom_bar(data = dat,
                 aes(x = factor(PAIR),fill = factor(PREFERENCE)),
                 position = "fill")
    

    我已将您的数据读入 dat .这会输出如下内容:

    enter image description here

    y 标签仍然是“计数”,但您可以通过添加以下内容手动更改:
    + scale_x_discrete("Pairs") + scale_y_continuous("Votes")
    

    关于r - 如何在 R 中创建(100%)堆叠直方图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8757680/

    相关文章:

    r - geom_text 中每个标签的字体大小不同

    r - 如何解决R中的重要性

    r - cex.axis 只影响y轴,不影响x轴

    r - 每组使用 2 种颜色进行绘图

    r - 在州名称上显示与美国各州对应的值

    r - 当日期范围跨越日历年的变化时,将行分成两行

    r - 如何在r中的国家 map 上绘制位置点?

    R - ggplot2 - 如何在 POSIX 轴上使用限制?

    在 OSX 10.9.5 (R 3.1.2) 中使用 ggplot2 按因子对 geom_point 着色时,R session 崩溃

    r - 即使对于 ggplot2 中的重叠区域,相同/修复 alpha