我有以下格式的数据(此处,从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
为“count”,值为19。
qplot(factor(PAIR), data=d, geom="bar", fill=factor(PREFERENCE_FIXED))
结果:
顺便说一句,这与this question没有关系,只与this略有关系(即可能是相同的想法,但不是连续的值,而是分为条形)。< /子>
答案 0 :(得分:9)
也许你想要这样的东西:
ggplot() +
geom_bar(data = dat,
aes(x = factor(PAIR),fill = factor(PREFERENCE)),
position = "fill")
我已将您的数据读入dat
。这输出如下:
y标签仍为“count”,但您可以通过添加以下内容手动更改:
+ scale_x_discrete("Pairs") + scale_y_continuous("Votes")