Мне нужно добавить вертикальную линию абзаца () на диаграмму Парето. Я использую ggplot2 для диаграммы Парето

Я хочу добавить вертикальную линию абзаца к диаграмме Парето в точках, где у - квантиль (см. Изображение ниже). Функцией, которую я использую для диаграммы Парето, является pareto.chart() в пакете "qcc" и пакете ggplot2. Я использую только pareto.chart, чтобы получить кумулятивный y. Я также ранее, сделал диаграмму Парето, используя pareto.chart(). Было бы хорошо, если бы вы могли создать Парето с любым из них.

Моя главная задача - как нарисовать вертикальные линии в квартиле. Мне удалось нарисовать вертикальные линии в децилях оси X, но не в квартилях оси Y.

Вот функция:

xyz<-pareto.chart(Product, ylab = "Number of Products", xlab="Customer", xaxt="n")
xyz<-data.frame(xyz)

i2<-ggplot(data=xyz, 
           aes(x=seq(1,length(xyz$Frequency)),y=Cum.Percent.,group=1)) + geom_line(colour="red", size=1) + theme_classic() + theme(axis.text.x = element_text(angle = 75, hjust = 1, size=8)) + labs(x="Customer",y="Product Share (%)") +ggtitle("Pareto Chart") +ylim(0,100.1)

print(i2)

Изображение показывает как это и как я хочу. В основном, я хочу красные линии, скажем, на 50% и 90% или на некотором дециле или квартиле Y

2 ответа

+ geom_vline(xintercept = rev(stats[trunc(cumsum(xyz$Frequency)*.5) == 50, "x"])[1]

Я бы использовал segments команда. Он не зависит от двух других пакетов, поэтому метод будет работать независимо.

Основная предпосылка состоит в том, чтобы определить точку x,y (или массив) для рисования и точку x,y (или массив) для рисования.

Например:

segments(
         c(cat1,cat2),0,
         c(cat1,cat2),quantile(data, probs = seq(.5, .9)), 
         col = "red", 
         lty = "solid"
         )

куда cat1 а также cat2 ваши две категории в вашей диаграмме Парето, которые соответствуют вероятностям оси Y. Мне нужно поиграть с некоторыми данными, чтобы увидеть, смогу ли я найти простой способ соотнести категории с вероятностями оси y, но этот метод нарисует желаемые линии. (Этот метод также будет работать, если вы хотите нарисовать segments которые были горизонтальными или двумя наборами segments для горизонтальных и вертикальных линий.)

Другие вопросы по тегам