2016-03-07 2 views
0

У меня есть структура данных, в которой суммируется количество людей, живущих в разных размерах домохозяйства для разных возрастных групп в городских и сельских районах. Я хотел бы визуализировать значения популяции в многоуровневых графиках, чтобы длина каждого раздела соответствовала подсчетам населения, живущим в этом размере домохозяйства для возрастной группы в сельских или городских районах. Я создал эти два сюжета, но ни то, что я хочу.Специальный тип штабелированных участков по ggplot2

Первое усилие: First Effort

Второе усилие: Second Effort

Они не то, что я хочу, потому что они используют одни и те же цвета для бытовых размеров (S1: s7) в городских и сельских районах. Вместо этого я хочу иметь 7 оттенков зеленого цвета для сельских районов и 7 оттенков красного для городских районов, чтобы эти две настройки можно было легко отличить по сюжету.

Есть ли какой-либо способ в ggplot2, чтобы показать значения, основанные на двух критериях (городских или сельских, бытовых размеров)? Если да, то как это можно было бы отразить в легенде?

Заранее благодарим за помощь!

+2

Добро пожаловать на ТАК! Вам потребуется разместить достаточно данных и кода для [минимального воспроизводимого примера] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example/5963610#5963610) чтобы получить полный ответ, но вам, скорее всего, понадобится «scale_fill_brewer» или тому подобное. – alistaire

ответ

0

Управление прозрачностью (alpha) может дать вам желаемый участок? Я с @alistaire, и в следующий раз вы должны предоставить нам данные или кусок воспроизводимого кода генерации данных.

Ниже мое решение

require(ggplot2) 
# Simulate some data 
n <- 1000 
set.seed(1234) 
df <- data.frame(urban = as.factor(runif(n)<0.3), 
      hsize = as.factor(sample(1:7,n,replace = TRUE)), 
      age = as.factor(sample(1:20,n,replace = TRUE, prob = 1/(sqrt(abs(1:20-10))+1)))) 

c <- ggplot(df, aes(age,fill = urban, alpha = hsize)) 
c <- c + geom_bar() 
c 

И результат выглядит следующим образом:

a possible solution

+0

Большое спасибо Эрик. Вы, ребята, правы. Я должен был предоставить более подробную информацию. Ваш результат - именно то, что я ищу. Но сюжет не появляется, когда я запускаю ваш код. –

+0

@HamidZ Добро пожаловать! Есть ли ошибка msg? Или, может быть, вы не сказали R вывести сюжет 'c'? Попробуйте запустить 'c' в консоли? – Bayesric

+0

Я ошибся где-то в другом месте. Теперь это работает. Благодаря! –