Настройка второй оси Y на диаграмме Парето в R

Я создал две диаграммы Парето в R, обе с использованием одних и тех же данных. Один использует ggplots stat_pareto, а другой - функцию pareto.chart из библиотеки qcc.

ggplot(DT4, aes(x = reorder(sap_object_type_desc, -sum_duration), y = 
  sum_duration)) + 
  geom_bar(stat="identity") +
  theme(axis.text.x=element_text(angle=90,hjust=1)) + 
  stat_pareto(point.color = "red",   
              point.size = 2,        
              line.color = "black",  
              #size.line = 1,        
              bars.fill = c("blue", "orange"))

ggplot plot stat_pareto

Или используя функцию pareto.chart

pareto.chart(avector, 
             ylab = "Sum", 
             # xlab = "Objective Type Description", 
             main = "Avector Pareto Chart",
             cumperc = c(20,40,60,80,100)) # or = seq(0, 100, by =25)

функция pareto_chart

Что я хотел бы сделать, так это настроить вторую ось Y на обоих вышеприведенных графиках так, чтобы совокупный процент 100% совпадал с самой высокой полосой, как в третьем примере. Какие-либо предложения?

пример сюжета


person Luke_DataSci    schedule 11.12.2018    source источник
comment
Сложно ответить, так как вы не сделали минимального рабочего примера. Но для ggplot2 с stat_pareto (где последний поступает из пакета ggQC) я подозреваю, что вы можете изменить координату, добавив + coord_cartesian(ylim=c(0,3400)).   -  person MrGumble    schedule 12.12.2018


Ответы (1)


Вот полный пример того, как это сделать, включая всю обработку данных, заголовки и т. Д. Надеюсь, это поможет :)

counts <- c(0.2, 1.3,4.2,9.0,1.0,1.7,1.0,1.0,13.1)
tags <- c("BL11-a","BL-11b","BL-12","BL-13","BL-15","BL-16","BL-17","BL-18","Everything Else")

df <- data.frame(counts=counts,tags=tags,stringsAsFactors = FALSE)

df <- df[order(df$counts,decreasing=TRUE), ]

df$tags <- factor(df$tags, levels=df$tags)

df$cumulative <- cumsum(df$counts)

df$cumulative <- 100 * df$cumulative/tail(df$cumulative, n=1)

scaleRight <- tail(df$cumulative, n=1)/head(df$counts, n=1)

library(ggplot2)
ggplot(df, aes(x=df$tags)) +
  geom_bar(aes(y=df$counts), fill='deepskyblue4', stat="identity") +
  geom_path(aes(y=df$cumulative/scaleRight, group=1),colour="red", size=0.9) +
  geom_point(aes(y=df$cumulative/scaleRight, group=1),colour="red") +
  scale_y_continuous(sec.axis = sec_axis(~.*scaleRight, name = "Cumulative (%)")) +
  theme(axis.text.x = element_text(angle=90, vjust=0.6)) +
  labs(title="Pareto Chart", subtitle="SNS Hyspec Background Contributions", x="Background Source", y=expression(Counts(~mu~Ah/~mu~s)))

ggsave("snsParetoChart.png")

Что производит:

Эта диаграмма Парето с масштабированными осями

person Phil Bentley    schedule 30.04.2019
comment
Можно ли добавить точное количество совокупных частот над красными точками на графике? Кроме того, есть ли возможность иметь n счетчиков над каждой полосой? - person Jo-Achna; 08.02.2021