Удалить пробелы между столбцами в столбчатой ​​диаграмме 2 фактора

У меня есть следующий код:

df=data.frame(time=as.factor(rep(0.5:9.5,each=10)),roi=rep(1:10,10),area=runif(1‌​00, 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 = 0.9, height = 0.5) + scale_fill_gradient(low="blue",high="red")

Как я могу удалить промежутки между столбцами по 10 руа (я имею в виду пробелы между руа) и сделать так, чтобы 10 баров по 10 руа оставались непрерывно для каждого значения времени. Большое спасибо за любую помощь.


person Hoang Le    schedule 06.08.2016    source источник


Ответы (2)


  • Вместо аргументов height и width для geom_tile используйте coord_fixed(ratio=r) для управления соотношением сторон плиток (где r — это соотношение). В приведенном ниже примере я использовал r=0,5.
  • Поменяйте местами столбцы x и y, чтобы получить roi по оси x без необходимости coord_flip() (вы не можете использовать одновременно coord_flip() и coord_fixed()).
  • Установите colour=NA так, чтобы не было пробела между каждой плиткой в ​​данной строке.
  • Установите height=0.9, чтобы создать пространство между каждым рядом плиток.

    ggplot(data=df, aes(x=factor(roi), y=time, fill = area)) + 
      theme_minimal() + 
      coord_fixed(ratio=0.5) +
      geom_tile(colour = NA, width = 1, height = 0.9) + 
      scale_fill_gradient(low="blue",high="red") 
    

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

person eipi10    schedule 06.08.2016
comment
Большое спасибо за ваш ответ. Основываясь на вашем предложении, я нашел способ, который меня устраивает. ggplot (data = df, aes (x = factor (roi), y = time, fill = area)) + theme_minimal () + coord_fixed (ratio = 2) + geom_tile (цвет = NA, ширина = 1, высота = 0,9) + scale_fill_gradient (низкий = синий, высокий = красный) - person Hoang Le; 06.08.2016

Не уверен, что это то, что вы хотите, но кажется, что вы могли бы просто изменить height в geom_tile?

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

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

person Weihuang Wong    schedule 06.08.2016
comment
Спасибо, Weihuang Wong, но я хочу сохранить высоту 0,5 или меньше. В любом случае спасибо за ваш ответ. - person Hoang Le; 06.08.2016