2016-07-25 63 views
0

我假設我在問一個非常簡單的問題,但是我無法自己解決它。我如何在下圖中的x軸上創建年齡段。例如,10-20,20-30,40-50等在ggplot之內?在geom_bar中結合X軸上的行

enter image description here

我知道我可以創建一個新的數據幀,但我寧願讓我的工作簡單而內ggplot做到這一點。這是我正在使用的代碼:

figure1 <- ggplot(newdata, aes(x = factor(Leeftijd),)) + geom_bar() + xlab("Age") + 
ylab("Loneliness (count)") + ggtitle("Overview of the distrubtion of lonely people") 

figure1 

謝謝!

+2

應該使用'geom_histogram()'與給予'箱='說法箱的您的首選號碼。 – mtoto

+0

試過了,這是我使用的代碼:'ggplot(newdata,aes(x = factor(Leeftijd))+ geom_histogram(bins = 20)+ xlab(「Age」)+ ylab(「Loneliness(count) 「)+ ggtitle(」孤獨的人的分佈概述「)。 但是,我收到以下錯誤消息:'錯誤:StatBin需要一個連續的x變量x變量是離散的。也許你想stat =「count」?'我使用了一個連續變量,所以我不知道如何處理這個錯誤。你有任何線索@mtoto? – Keizer

+0

取出'factor'調用,所以'geom_histogram'(嗯,'stat_bin',真的)可以告訴變量的順序是什麼,因此如何對它進行處理。此外,爲了使問題可重現,您需要發佈足夠的數據(最好是'dput(newdata)'的結果)來模擬問題。 – alistaire

回答

0

首先你沒問的問題,但我想回答。我發現在進入ggplot之前通過dplyr和tidyr提供數據幀要好得多。

它使得代碼更加可讀,並且讓你的頭腦變得更加簡單。

其次,你想要做什麼:

library(ggplot2) 
library(tidyr) 
library(dplyr) 


## I created some dummy data here, you want to use your own, obviously 
newdata <- data.frame(as.numeric(round(rnorm(1000,50,10)))) 
colnames(newdata) <- c("Leeftijd") 


figure1 <- ggplot(newdata, aes(x = factor(Leeftijd),)) + geom_bar() + xlab("Age") + 
    ylab("Loneliness (count)") + ggtitle("Overview of the distrubtion of lonely people") 

figure1 


## This does what you want, change the binwidth to whatever you're interested in. 
newdata %>% 
    ggplot() + 
    aes(x=Leeftijd) + 
    geom_histogram(binwidth=10, stat="bin") + 
    labs(x="Age", 
     y="Loneliness (count)", 
     title="Overview of the distribution of lonely people") 
+1

加載'dplyr'或'tidyr'在這裏完全沒有意義。 – mtoto

+0

感謝您的意見。我總是加載它們 - 我需要dplyr管道進入ggplot –