Гистограмма с двумя факторами с градиентным цветом в R

У меня есть такой фрейм данных:

df = data.frame(time = rep(0.5:9.5, each = 10), roi = rep(1:10, 10), area = runif(100, 5.0, 7.5))

Я хотел бы нарисовать график, включающий 10 баров по 10 значений time и roi. В этом случае ось x будет roi, ось y будет time, а значения area будут показаны в столбцах с градиентным цветом (самое высокое = белое, самое низкое = черное). Ось Y перевернута с 0,5 сверху на 9,5 снизу, ширина полосы равна 2.

Ожидаемая цифра выглядит как это изображение.

Я с нетерпением жду ответов, и я ценю вашу помощь.


person Hoang Le    schedule 04.08.2016    source источник
comment
Можете ли вы объяснить, как бы вы нарисовали полосу (скажем, ту, что сверху, рядом с time == 0.5), если бы вы делали это вручную (бумага + цветной карандаш)?   -  person Qaswed    schedule 04.08.2016
comment
Извините, я немного запутался во фрейме данных, не могли бы вы изменить его на df=data.frame(time=rep(0.5:9.5,each=10),roi=rep(1:10,10),area=runif( 100, 5.0, 7.5))   -  person Hoang Le    schedule 04.08.2016
comment
@Qaswed: я нашел параметр yAxisReversed от ggplot2.barplot здесь sthda.com/english/wiki/   -  person Hoang Le    schedule 04.08.2016


Ответы (1)


Это то, что вы имели в виду?

df=data.frame(time=as.factor(rep(0.5:9.5,each=10)),roi=rep(1:10,10),area=runif(100, 5.0, 7.5))

df$time <- factor(df$time, levels=rev(levels(df$time)))

ggplot(data=df, aes(y=factor(roi), x=time, fill = area)) +
  theme_minimal()  + coord_flip() +
  geom_tile(colour = "white", width = .9, height = 1) + 
  scale_fill_gradient(low="blue",high="red")

введите здесь описание изображения

person Shirin Elsinghorst    schedule 04.08.2016
comment
Да, это то, что мне нужно. Я очень люблю тебя и твой ответ. Я хлопаю в ладоши. Спасибо оооооочень большое. - person Hoang Le; 04.08.2016
comment
Привет Ширин Гландер, я хочу уменьшить ширину (фактически высоту) столбцов следующим образом: df=data.frame(time=as.factor(rep(0.5:9.5,each=10)),roi=rep(1:10 ,10),площадь=runif(100, 5.0, 7.5)) df$time ‹- фактор(df$time, level=rev(levels(df$time))) ggplot(data=df, aes(y=factor( roi), x=время, fill = площадь)) + theme_minimal() + coord_flip() + geom_tile(цвет = белый, ширина = 0,9, высота = 0,5) + scale_fill_gradient(low=синий,high=красный) Как я могу удалите пространство между стержнями (я имею в виду пробелы между rois). Большое тебе спасибо. - person Hoang Le; 06.08.2016
comment
Отрегулируйте параметры ширины и высоты (до нуля, если вы не хотите места) в geom_tile (цвет = белый, ширина = 0,9, высота = 1. - person Shirin Elsinghorst; 15.08.2016