Формирование столбчатой ​​диаграммы / сетки стека с интенсивностью цвета, варьирующейся по значению

Я пытаюсь сделать сетку похожей на гистограмму с накоплением. Различные секции бара представляют категорию приложения, а ось x представляет столбец в своем ценовом классе. Я хочу, чтобы интенсивность цвета раздела панели изменялась в зависимости от количества приложений в категории. Я пытался использовать ggplot2 geom_bar, но не могу понять, как я могу построить категории на оси Y. Мои данные выглядят так:

Category    No.Apps Price
Utilities   400     0
Utilities   300     1-10
Utilities   500     11-20
Utilities   200     21-30
Games       1000    0
Games       900     1-10
Games       400     11-20
Games       100     21-30
Productivity 300    0
Productivity 100    1-10
Productivity 50     11-20
Productivity 80     21-30

Я хочу, чтобы мой график выглядел примерно так:

с категориями по оси Y и ценовым классом по оси X.

2 ответа

Решение
library(ggplot2)

#making some fake data and putting it into a data.frame
price <- rnorm(n = 10000,mean = 5,sd = 2)
app <- sample(x = LETTERS[1:10],size = 10000,replace = T)
df <- data.frame(price,app)
head(df)

#now the plot
ggplot(df, aes(x=price,y=app))+
  geom_bin2d()

Кажется, это близко к вашей графике, хотя цвета разные.

library(ggplot2)
ggplot(df, aes(x=Price,y=Category, fill=No.Apps)) + 
  geom_tile()+
  scale_fill_gradientn(colours=rev(heat.colors(10)))+
  scale_x_discrete(expand=c(0,0))+
  scale_y_discrete(expand=c(0,0))+
  coord_fixed()

Заметки:

  1. Используемый geom_tile(...) сделать блоки.
  2. Используемый rev(heat.colors(10)) создать цветовую палитру (красные для высоких значений, бледно-желтые для низких значений).
  3. Используемый coord_fixed(...) поэтому блоки квадратные (соотношение сторон 1:1).
  4. Используемый expand=c(0,0) таким образом, блоки заполняют всю область построения.
Другие вопросы по тегам