Создание диаграммы Парето с ggplot2 и R

Запуск приложения без формы означает, что Вы оказываетесь перед необходимостью справляться, приложение запускают/завершают работу себя.

Начинание невидимой формы является более оптимальным вариантом.

19
задан Glorfindel 8 May 2019 в 19:04
поделиться

4 ответа

Полосы в ggplot2 упорядочены по порядку уровней в факторе.

val$State <- with(val, factor(val$State, levels=val[order(-Value), ]$State))
15
ответ дан 30 November 2019 в 02:29
поделиться

Подмножество и сортировка данных;

valact <- subset(val, variable=='actual')
valsort <- valact[ order(-valact[,"Value"]),]

Оттуда это просто стандартный boxplot () с очень ручной кумулятивной функцией вверху:

op <- par(mar=c(3,3,3,3)) 
bp <- barplot(valsort [ , "Value"], ylab="", xlab="", ylim=c(0,1),    
              names.arg=as.character(valsort[,"State"]), main="How's that?") 
lines(bp, cumsum(valsort[,"Value"])/sum(valsort[,"Value"]), 
      ylim=c(0,1.05), col='red') 
axis(4)
box() 
par(op)

, которая должна выглядеть так это

alt text
(источник: eddelbuettel.com )

, и здесь даже не требуется трюк с наложением графика, поскольку lines () с радостью аннотирует исходный график.

23
ответ дан 30 November 2019 в 02:29
поделиться

Также см. Пакет qcc , в котором есть функция pareto.chart () . Похоже, в нем тоже используется базовая графика, так что начните награду за решение ggplot2: -)

3
ответ дан 30 November 2019 в 02:29
поделиться

На простом примере:

 > data
    PC1     PC2     PC3     PC4     PC5     PC6     PC7     PC8     PC9    PC10 
0.29056 0.23833 0.11003 0.05549 0.04678 0.03788 0.02770 0.02323 0.02211 0.01925 

barplot(data) делает все правильно

эквивалент ggplot "должен быть": qplot(x=names(data), y=data, geom='bar')

Но это неправильно упорядочивает/сортирует столбики по алфавиту... потому что именно так levels(factor(names(data))) будут упорядочены.

Решение: qplot(x=factor(names(data), levels=names(data)), y=data, geom='bar')

Фух!

4
ответ дан 30 November 2019 в 02:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: