2016-07-25 2 views
0

Я предполагаю, что задаю довольно простой вопрос, однако сам не могу его решить. Как создать возрастные группы по оси x на изображении ниже. Например, 10-20, 20-30, 40-50 и т. Д. В пределах ggplot?Объединение строк по оси x в пределах geom_bar

enter image description here

Я знаю, что я мог бы создать новую dataframe, но я предпочитаю, чтобы мой рабочий лист просто и сделать это в 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

Пробовал это, fyi это код, который я использовал: 'ggplot (newdata, aes (x = factor (Leeftijd))) + geom_histogram (bins = 20) + xlab (" Age ") + ylab (" Одиночество (количество) ") + ggtitle (« Обзор распределения одиноких людей »). Однако у меня появилось следующее сообщение об ошибке: 'Ошибка: StatBin требует непрерывной переменной x, переменная x является дискретной. Возможно, вам нужен stat = "count"? 'Я использую непрерывную переменную, поэтому я не знаю, как справиться с этой ошибкой. У вас есть какие-то подсказки @mtoto? – Keizer

+0

Извлеките вызов 'factor', так что' geom_histogram' (ну, 'stat_bin', действительно) может определить, что такое порядок переменной, и, следовательно, как это сделать. Кроме того, чтобы сделать ваш вопрос воспроизводимым, вам нужно разместить достаточно данных (желательно, результаты 'dput (newdata)'), чтобы имитировать проблему. – alistaire

ответ

0

Первый вопрос, который вы не спрашивали, но я хочу ответить. Я нашел намного лучше, чтобы накормить свою фреймворк через dplyr и tidyr, прежде чем он войдет в ggplot.

Это делает гораздо более удобочитаемый код и делает весь беспорядок намного проще, когда вы обнимаете его.

Во-вторых, это делает то, что вы хотите:

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 –