Вопрос по r, ggplot2 – Как заставить отметки оси X появляться в конце столбца на графике тепловой карты?

2

Я создал простой график тепловой карты сggplot2 но мне нужно сделать так, чтобы отметки оси X появлялись в конце моей переменной x, а не в ее центре. Например, я ожидал бы, что 1 появится в позиции, где сейчас 1.5. Я полагаю, что тепловая карта, сделанная в Base R, сделает это.

library(car) #initialize libraries
library(ggplot2)  #initialize libraries
library(reshape)

df=read.table(text= "x  y  fill
1 1 B
2 1 A
3 1 B
1 2 A
2 2 C
3 2 A
",  header=TRUE, sep=""  )

#plot data
qplot(x=x, y=y, 
      fill=fill, 
      data=df, 
      geom="tile")+  
      scale_x_continuous(breaks=seq(1:3) ) 

enter image description here

Идея состоит в том, чтобы создать простую тепловую карту, которая выглядит следующим образом: enter image description here

Отметки на этом графике располагаются в конце столбцов вместо их центров

Ваш Ответ

2   ответа
4

Как насчет этого?

object = qplot(x=x, y=y, 
      fill=fill, 
      data=df, 
      geom="tile")+  
      scale_x_continuous(breaks=seq(1:3))

object + scale_x_continuous(breaks=seq(.5,3.5,1), labels=0:3)

enter image description here

@MaxC Попробуйте, если хотите, чтобы первый тик начинался с 0,5: object + scale_x_continuous (breaks = seq (.5,3.5,1), label = seq (.5,3.5,1))
Спасибо!!! Я надеялся, что есть возможность сделать это без настройки шкалы x, но возможно, что я не совсем понимаю, как работает тепловая карта. я ценю вашу помощь Max C
Что вы имеете в виду, не регулируя шкалу х? например, вместо того, чтобы начинать с 0, вы хотите начать с правильного значения, которое составляет 0,5?
@SandyMuspratt Хороший улов. Спасибо!
3

geom_tile центрирует каждую плитку по заданным координатам. Поэтому вы ожидаете выход, который он дает.

Поэтому, если вы дадите ggplot центры (не координаты верхнего правого угла) для каждой ячейки, это сработает.

ggplot(df, aes(x = x-0.5, y = y-0.5, fill = fill)) + 
  geom_tile() + 
  scale_x_continuous(expand = c(0,0), breaks = 0:3) + 
  scale_y_continuous(expand = c(0,0), breaks = 0:3) + 
  ylab('y') + 
  xlab('x')

или используя qplot

qplot(data = df, x= x-0.5, y = y-0.5, fill = fill, geom = 'tile')  + 
   scale_x_continuous(expand = c(0,0), breaks = 0:3) + 
   scale_y_continuous(expand = c(0,0), breaks = 0:3) + 
   ylab('y') + 
   xlab('x')

Похожие вопросы