我的数据集:
我有以下格式的数据(这里是从 CSV 文件导入的)。您可以找到 CSV 格式的示例数据集 here .
PAIR PREFERENCE
1 5
1 3
1 2
2 4
2 1
2 3
… 等等。一共19对,
PREFERENCE
范围从 1
至 5
,作为离散值。我正在努力实现的目标:
我需要的是堆叠直方图,例如每对的 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))
结果是:
顺便说一句,这与this question 没有真正的关系。 ,并且仅与 this 略微相关(即可能是相同的想法,但不是连续值,而是分组为条形)。
最佳答案
也许你想要这样的东西:
ggplot() +
geom_bar(data = dat,
aes(x = factor(PAIR),fill = factor(PREFERENCE)),
position = "fill")
我已将您的数据读入
dat
.这会输出如下内容:y 标签仍然是“计数”,但您可以通过添加以下内容手动更改:
+ scale_x_discrete("Pairs") + scale_y_continuous("Votes")
关于r - 如何在 R 中创建(100%)堆叠直方图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8757680/