2017-02-21 79 views
-1

我是R新手,嘗試爲不同組別的分類變量(度)創建條形圖。這是我與迄今使用的代碼:使用ggplot2的百分比和圖形標籤中的條形圖

graph_data <- gss %>% 
      group_by(degree, owngun) %>% 
      summarise(total = n()) %>% 
      ungroup() %>% 
      mutate(percent = total/57061)  

     ggplot(graph_data, aes(x=degree, fill=owngun, y=percent) + 
      geom_bar(stat="identity") + 
      geom_text(size = 3, position = position_stack(vjust = 0.5)) 

第一部分的作品,我能夠創建一個新的變量,gunowners的百分比。然而,當我運行第二部分圖表中的變量,我得到以下錯誤信息:

> ggplot(aes(x=degree, fill=owngun, y=percent) + 
     + geom_bar(stat="identity") 
     + ggplot(graph_data, aes(x=degree, fill=owngun, y=percent) + 
     Error: unexpected symbol in: 
     " geom_bar(stat="identity") 
     ggplot" 
     > geom_bar(stat="identity") + 
     + geom_text(size = 3, position = position_stack(vjust = 0.5)) 
     Error in position_stack(vjust = 0.5) : unused argument (vjust = 0.5) 
+1

'ggplot(aes())'中缺少一個閉括號# – beetroot

回答

1

你的語法是錯誤的第二部分。我已經盡最大努力糾正它,但根據您的數據集是如何定義的,這可能會或可能不會完全解決問題

ggplot(graph_data, aes(x=degree, y=percent, fill=owngun)) + geom_bar(stat="identity") + geom_text(size = 3, position = position_stack(vjust = 0.5))

要在什麼是錯的擴大,你定義ggplot()兩次。你應該只需要這樣做一次。 ggplot()爲圖表定義了「全局」參數。您還重複了geom_bar()兩次,我不知道是否會拋出錯誤,但您肯定只需要一個實例。你的括號在ggplot()這兩行都是錯誤的,你錯過了第二個「)」兩次,這本身就會導致圖不起作用。

+0

感謝您使用您的建議,我做了一些調整,並能夠使代碼正常工作: – Christina

+0

@Christina根據您的評論, HenryRice幫助解決了你的問題。那麼你應該考慮[當某人回答我的問題時該怎麼辦?](http://stackoverflow.com/help/someone-answers)。 – Uwe

0

謝謝

我用你的建議做了一些調整,並能得到的代碼使用工作如下:

ggplot(graph_data, aes(x=degree, y=percent, fill=owngun, label=percent)) + 
     geom_bar(stat="identity") + 
     geom_text(size = 3, position="stack") 

剩下的唯一問題是,文本被定位在地方這使它很難閱讀。我會爲此努力。

+0

除了[Henry Rice]的答案(http://stackoverflow.com/a/42357529/3817004)已經解決了你的問題(根據你自己的評論),你發佈你的其他SO用戶還是沒用的自己的答案,因爲你沒有提供任何數據來重現你的問題,並在你的答案最終的解決方案。 – Uwe