2017-08-10 48 views
0

我剛剛開始使用R,我試圖繪製一些我作爲數據框加載的虛擬數據,但經過大量的試驗和錯誤以及搜索後,我試圖使得一些列的barplot和下面的代碼沒有工作:ggplot - 條狀圖美學錯誤

Termcount <- count(dummydata$Term) 
ggplot(data=dummydata, aes(x=Term, y=Termcount, fill=Term)) + geom_bar(stat = "identity") 

但是,下面的代碼沒有和產生的情節我後,但我不明白爲什麼。

ggplot() + aes(dummydata$Term, fill=dummydata$Term) + geom_bar() 

這將生成以下情節:

enter image description here

當第一個代碼運行時我看到下面的錯誤:

不知道如何自動挑選規模用於data.frame類型的對象。默認連續。 錯誤:美觀必須是長度1或與數據(17)相同:x,y,填充

如果需要,我可以上傳數據(如果有幫助的話)。

+0

第一個在dummydata中沒有'Termcount'列 –

+0

請在這裏發佈(您的data.frame的一部分),以便我們看到它的樣子並幫助您更好:) – user3640617

回答

1

像上面的意見所述,ggplot()希望所有的aes()參數都成爲您數據中的列名稱,dummydata,這就是爲什麼它會給你錯誤。如果添加的「計數」變量作爲一個新列會工作,是這樣的:

library(tidyverse) 

data(iris) 

dummy <- iris %>% count(Species) 

ggplot(data = dummy, aes(Species, y = n, fill = Species)) + 
    geom_bar(stat = "identity") 

上面的代碼基本上是什麼geom_bar()在你的第二個例子做「引擎蓋下」,因爲它默認使用使用stat = "count"。 FYI geom_col()stat = "identity"版本geom_bar()

順便說一句,歡迎來到SO,它總是一個好主意,包括一個微小的數據示例(通過表格格式或dput())或使用內置的數據集之一,如data(iris)。示例數據加上示例代碼和您的預期輸出將使人們更好地幫助您,並確保您解決了特定的問題。

+0

感謝您的歡迎。因此,如果我不想向數據框添加一個計數列,我最好使用在我的原始代碼中工作的示例?還是建議添加一個計數列? 發佈數據時,上傳可接受的CSV文件還是dput()足夠? – rockdoctor

+0

我認爲你的第二個例子是「最好」的選擇。如果你不需要它們,不需要創建新的列。 'dput()'是可複製數據的黃金標準,因爲它捕獲了關於數據結構的所有內容,因此所有類和因子級別都是相同的。我會盡可能避免使用csvs,因爲它需要一個輔助站點(例如DropBox或GoogleDrive)並且需要其他人下載文件(潛在的安全問題和額外的工作) – Nate

+0

感謝您的提示Nate。 – rockdoctor