Мне нужно добавить вертикальную линию абзаца () на диаграмму Парето. Я использую 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
для горизонтальных и вертикальных линий.)