Wskazanie statystycznie istotnej różnicy w wykresie słupkowym za pomocą R
Jest to powtórzenie pytania pierwotnie zadanego tutaj: wskazujące statystycznie istotną różnicę w wykresie słupkowym , ale zapytane o R zamiast Pythona.
Moje pytanie jest bardzo proste. Chcę produkować pręty w R, używając ggplot2, jeśli to możliwe, ze wskazaniem znaczącej różnicy między różnymi prętami, np. produkować coś takiego. Szukałem w okolicy, ale nie mogę znaleźć innego pytania zadającego dokładnie to samo.
3 answers
Możesz użyć geom_path()
i annotate()
, aby uzyskać podobny wynik. W tym przykładzie musisz samodzielnie określić odpowiednią pozycję. W geom_path()
podano cztery liczby, aby uzyskać te małe kleszcze dla linii łączących.
df<-data.frame(group=c("A","B","C","D"),numb=c(12,24,36,48))
g<-ggplot(df,aes(group,numb))+geom_bar(stat="identity")
g+geom_path(x=c(1,1,2,2),y=c(25,26,26,25))+
geom_path(x=c(2,2,3,3),y=c(37,38,38,37))+
geom_path(x=c(3,3,4,4),y=c(49,50,50,49))+
annotate("text",x=1.5,y=27,label="p=0.012")+
annotate("text",x=2.5,y=39,label="p<0.0001")+
annotate("text",x=3.5,y=51,label="p<0.0001")
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-02-19 13:18:52
Wiem, że to stare pytanie, a odpowiedź Didzisa Elfertsa dostarcza już jednego rozwiązania problemu. Ale ostatnio stworzyłem rozszerzenie ggplot, które upraszcza cały proces dodawania pasków znaczenia: ggsignif
Zamiast żmudnie dodawać geom_path
i annotate
do wykresu wystarczy dodać jedną warstwę geom_signif
:
library(ggplot2)
library(ggsignif)
ggplot(iris, aes(x=Species, y=Sepal.Length)) +
geom_boxplot() +
geom_signif(comparisons = list(c("versicolor", "virginica")),
map_signif_level=TRUE)
PEŁNA DOKUMENTACJA pakietu jest dostępna na stronie CRAN .
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-04-05 12:39:09
Użyłem sugerowanej metody z góry, ale stwierdziłem, że funkcja adnotacji jest łatwiejsza do tworzenia linii niż funkcja geom_path. Wystarczy użyć "segment" zamiast "tekst". Musisz podzielić rzeczy na segmenty i zdefiniować początkowe i końcowe wartości x i y dla każdego segmentu linii.
Przykład wykonania 3 odcinków linii:
annotate("segment", x=c(1,1,2),xend=c(1,2,2), y= c(125,130,130), yend=c(130,130,125))
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-17 20:57:01