Я боролся с тем, как сделать диаграмму Парето в R, используя пакет ggplot2. Во многих случаях при создании гистограммы или гистограммы мы хотим, чтобы элементы сортировались по оси X. В диаграмме Парето мы хотим, чтобы элементы упорядочивались по убыванию значения по оси Y. Есть ли способ получить ggplot для построения элементов, упорядоченных по значению по оси Y? Сначала я попытался отсортировать фрейм данных, но, похоже, ggplot переупорядочивает их.
Пример:
val <- read.csv("http://www.cerebralmastication.com/wp-content/uploads/2009/11/val.txt")
val<-with(val, val[order(-Value), ])
p <- ggplot(val)
p + geom_bar(aes(State, Value, fill=variable), stat = "identity", position="dodge") + scale_fill_brewer(palette = "Set1")
фрейм данных val сортируется, но вывод выглядит так:
(источник: cerebralmastication.com)
Хэдли правильно указал, что это дает гораздо лучший график для отображения фактических и прогнозируемых значений:
ggplot(val, aes(State, Value)) + geom_bar(stat = "identity", subset = .(variable == "estimate"), fill = "grey70") + geom_crossbar(aes(ymin = Value, ymax = Value), subset = .(variable == "actual"))
который возвращает:
(источник: cerebralmastication.com)
Но это все еще не диаграмма Парето. Какие-нибудь советы?