Как создать (100%) сложенную гистограмму в R?
мой набор данных:
у меня есть данные в следующем формате (здесь импортировать из csv-файла). Вы можете найти пример набора данных как CSV здесь.
PAIR PREFERENCE
1 5
1 3
1 2
2 4
2 1
2 3
... и так далее. В общем, есть 19 пар, а PREFERENCE
составляет от 1
до 5
, как дискретные значения.
чего я пытаюсь достичь:
мне нужна гистограмма с накоплением, например, столбец 100% high, для каждой пары, указывающий распределение PREFERENCE
значения.
что-то похожее на "100% многоярусные колонны" в Excel, или (хотя и не совсем то же самое, так называемый "мозаичный сюжет"):
что я пробовал:
я подумал, что проще всего использовать 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))
результаты:
- Итак, что мне нужно сделать, чтобы сложенные бары представляли гистограмму?
- или они уже это делают?
- если да, то что мне нужно изменить, чтобы получить правильные метки (например, проценты вместо "подсчета")?
кстати, это на самом деле не связано с этот вопрос, и только незначительно связаны с этой (т. е., вероятно, та же идея, но не непрерывные значения, вместо этого сгруппированные в бары).
1 ответов
может быть, вы хотите что-то вроде этого:
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")