Специальный тип сложенных графиков от ggplot2

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

Первая попытка: Первая попытка

Вторая попытка: Вторая попытка

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

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

Большое спасибо заранее за вашу помощь!


person Hamid Z    schedule 07.03.2016    source источник
comment
Добро пожаловать в СО! Вам нужно будет опубликовать достаточно данных и кода для минимальный воспроизводимый пример, чтобы получить полный ответ, но вам, скорее всего, понадобится scale_fill_brewer или что-то подобное.   -  person alistaire    schedule 08.03.2016


Ответы (1)


Управление прозрачностью (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

И результат выглядит так:

возможное решение

person Bayesric    schedule 07.03.2016
comment
Большое спасибо, Эрик. Вы, ребята, правы. Я должен был предоставить более подробную информацию. Ваш результат именно то, что я ищу. Но сюжет не появляется, когда я запускаю ваш код. - person Hamid Z; 08.03.2016
comment
@HamidZ Добро пожаловать! Есть ли сообщение об ошибке? Или, может быть, вы не сказали R вывести график c? Попробуйте запустить c в консоли? - person Bayesric; 08.03.2016
comment
Я ошибся где-то в другом месте. Теперь это работает. Спасибо! - person Hamid Z; 08.03.2016
comment
Великолепно — не стесняйтесь принимать (нажмите на галочку) и/или проголосовать (нажмите на треугольник вверх), как это принято здесь, в StackOverflow. - person Bayesric; 08.03.2016