簡體   English   中英

ggplot2或sjPlot總和堆疊的barplot列

[英]ggplot2 or sjPlot sum stacked barplot columns

我正在MacBook Pro OS 10.14.2上運行R版本3.5.2(2018-12-20)-“ Eggshell Igloo”。

我嘗試了幾種方法來獲得這些圖。 我的首選方法是嘗試創建數據的堆疊條形圖(隨時間分組的因子,我的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軸上的“ yr”計數匹配。 或者,我也可以使用在我發布的第一個代碼中獲得的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。我需要將其更改為特定值。

非常感謝!

試試這個,看看那是你想要的嗎?

ggplot(data=df, aes(x=Var1, y=Freq)) +
   geom_bar(stat="identity")

解決。

sjp.grpfrq(dat $ yr,dat $ n,bar.pos = c(“ stack”),legend.title =“ Key”,legend.labels = c(“ NN”,“ N”),show.values = TRUE,show.n = TRUE,show.prc = FALSE,show.axis.values = TRUE,標題=“ 1992-2018”)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM