Я использую R версии 3.5.2 (20.12.2018) - «Eggshell Igloo» на MacBook Pro, OS 10.14.2.
Я пробовал несколько способов получить эти графики. Мой предпочтительный метод заключался в попытке создать столбчатую диаграмму с накоплением моих данных (фактор, сгруппированный по времени, моя ось x и счетчики как y), с дихотомическим счетом переменных 0,1 счет в каждом столбце, поскольку они соответствуют счетчикам по y ось. Однако я гибкий. У меня есть этот код, который работает, если я могу наложить на него штриховой график, который поможет.
ggplot(dat, aes(x=factor(yr),y=n, group=(n>0)))+
stat_summary(aes(color=(n>0)),fun.y=length, geom="line")+
scale_color_discrete("Key",labels=c("NN", "N"))+
labs(title= "1992-2018", x="Years",y="n")
используя свой полный набор данных, я попробовал это и очень близко подошел к составному столбчатому графику, он дал мне правильные подсчеты для переменной «yr», однако для моей переменной «n» он дал мне непрерывный диапазон 0–1,0.
p<-ggplot(data=dat, aes(x=dat$yr, y=n, fill=n)) +
+ geom_bar(stat="identity")
Это данные, которые меня больше всего интересуют. Я попытался затем преобразовать их в таблицу, а затем в фрейм данных.
t2<- table(dat$yr, dat$n)
0 1
1992 6 0
1993 10 0
1994 3 1
1995 20 2
1996 15 2
1997 16 0
1998 16 0
1999 9 3
2000 5 0
2001 5 1
2002 7 1
2003 9 2
2004 4 3
2005 6 3
2006 5 3
2007 6 3
2008 4 3
2009 8 4
2010 7 1
2011 4 5
2012 4 5
2013 6 2
2014 0 2
2015 3 3
2016 5 5
2017 4 4
2018 8 5
t<-table(dat$yr)
1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004
6 10 4 22 17 16 16 12 5 6 8 11 7
2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017
9 8 9 7 12 8 9 9 8 2 6 10 8
2018
13
Затем я попробовал:
df<- data.frame(t, t2)
head(df)
head(df)
Var1 Freq Var1.1. Var2 Freq.1
1 1992 6 1992 0 6
2 1993 10 1993 0 10
3 1994 4 1994 0 3
4 1995 22 1995 0 20
5 1996 17 1996 0 15
6 1997 16 1997 0 16
p<-ggplot(data=df, aes(x=Var1, y=Var2)) +
geom_bar(stat="identity")
p
замена их для переменных набора данных дала мне худшие результаты с осью Y, показывающей отсутствие подсчетов в год для переменной «yr», и каждый столбец был заполнен полностью до вершины диапазона «1».
Опять же, я хотел бы получить столбчатую диаграмму с двоичным "n" в каждом столбце года, чтобы показать сумму 0/1, которая должна соответствовать количеству лет на оси y. или я могу использовать ggplot, который я получил в первом опубликованном мной коде, и получать там суммы за каждый год, я бы тоже взял это.
это действительно очень близко. если бы он также дал общий результат наверху, это было бы идеально.
пакет sjPlot:
sjp.grpfrq(dat$yr, dat$n, bar.pos = c("stack"), show.values = TRUE, show.n = TRUE, show.prc = FALSE, title = NULL)
Основная проблема с кодом sjPlot заключается в том, что я не могу изменить метки легенды. он показывает n = 0, 1. Мне нужно изменить это, чтобы быть конкретным.
Большое спасибо заранее!