2016-06-22 5 views
2

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

Моей главной задачей является то, как рисовать вертикальные линии в квартиле. Я смог нарисовать линии треугольника на децилях оси 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 enter image description here

ответ

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

его создания вертикальной линии, где х = 0,5, однако я хочу линию, где у = 50% –

+0

Спасибо mate.wНо его еще рисунок в том же месте. Я не знаю, как –

+0

Попробуйте geom_hline(). –

0

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