R - ggplot2 - графики и aes в зависимости от нескольких переменных создает зигзаг, несмотря на монотонные данные - PullRequest
0 голосов
/ 05 апреля 2019

Мне дана таблица цен в зависимости от года и различных параметров.

structure(list(Year = c(1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 
3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 
3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 
3L, 4L, 1L, 2L, 3L, 4L), guar = c(0.01, 0.01, 0.01, 0.01, 0.02, 
0.02, 0.02, 0.02, 0.01, 0.01, 0.01, 0.01, 0.02, 0.02, 0.02, 0.02, 
0.01, 0.01, 0.01, 0.01, 0.02, 0.02, 0.02, 0.02, 0.01, 0.01, 0.01, 
0.01, 0.02, 0.02, 0.02, 0.02, 0.01, 0.01, 0.01, 0.01, 0.02, 0.02, 
0.02, 0.02, 0.01, 0.01, 0.01, 0.01, 0.02, 0.02, 0.02, 0.02), 
vol = c(0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 
0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 
0.1, 0.1, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 
0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 
0.2, 0.2), fee = c(0, 0, 0, 0, 0, 0, 0, 0, 0.01, 0.01, 0.01, 
0.01, 0.01, 0.01, 0.01, 0.01, 0.02, 0.02, 0.02, 0.02, 0.02, 
0.02, 0.02, 0.02, 0, 0, 0, 0, 0, 0, 0, 0, 0.01, 0.01, 0.01, 
0.01, 0.01, 0.01, 0.01, 0.01, 0.02, 0.02, 0.02, 0.02, 0.02, 
0.02, 0.02, 0.02), value = c(103.490219783939, 104.64694534429, 
105.423021866961, 106.003997632507, 103.987761167674,      105.637197779702, 
106.901255344043, 107.965567455406, 102.953065656004, 103.545441115507, 
103.741845779355, 103.732177003242, 103.490219783939, 104.64694534429, 
105.423021866961, 106.003997632507, 102.460474891754, 102.574796992078, 
102.307300703979, 101.84752143324, 103.036847936938, 103.785353707651, 
104.185436261084, 104.417467321901, 107.438302065026, 110.172519129122, 
112.120314291466, 113.657230720516, 107.965567455406, 111.246291601828, 
113.750976986408, 115.851941887821, 106.891292109859, 109.043467438409, 
110.389127553239, 111.309322271107, 107.438302065026, 110.172519129122, 
112.120314291466, 113.657230720516, 106.369273097772, 107.990957085228, 
108.806658224208, 109.200666959571, 106.935904609248, 109.17460141814, 
110.636502202272, 111.697991480364), rate = c(0.02, 0.02, 
0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 
0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 
0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 
0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 
0.02, 0.02, 0.02, 0.02, 0.02, 0.02)), row.names = c(NA, -48L
), class = "data.frame")

    Year guar vol  fee    value rate
 1     1 0.01 0.1 0.00 103.4902 0.02
 2     2 0.01 0.1 0.00 104.6469 0.02
 3     3 0.01 0.1 0.00 105.4230 0.02
 4     4 0.01 0.1 0.00 106.0040 0.02

и хотел бы теперь построить это с помощью ggplot таким образом, чтобы "year" была осью x, "value" дает значение y, цвет зависит от "guar", форма на«vol» и график разбит на три диаграммы в соответствии с «fee»:

 ggplot(df_tot,aes(x=Year,y=value,colour=as.factor(guar),shape=as.factor(vol)))+
   geom_line()+geom_point()+ facet_wrap(as.factor(fee))

Тем не менее, полученные графики зигзагообразно

enter image description here

несмотря на монотонность данных.Например, у нас есть

 > df_tot[df_tot$fee==0 & df_tot$guar==0.01 & df_tot$vol==0.1,5]
 [1] 103.4902 104.6469 105.4230 106.0040

1 Ответ

1 голос
/ 05 апреля 2019

Я не смог воспроизвести пример, получил ошибку.

Я изменил фасет на facet_wrap(~as.factor(fee)) и получил следующее:

ggplot(df_tot,
       aes(x=Year,y=value,colour=as.factor(guar),shape=as.factor(vol)))+
  geom_line()+geom_point() + facet_wrap(as.factor(fee))

enter image description here

...