R Ggplot2删除网格线后更改y轴值的位置

R Ggplot2删除网格线后更改y轴值的位置,r,ggplot2,R,Ggplot2,我想在ggplot2中创建一个没有网格线的热图。我使用主题函数和panel.grid参数删除了它们,但它在y轴值和绘图之间留下了空间: 我尝试使用主题函数的axis.text参数来缩小此差距,但它会使值不对齐: 有人能提出一个解决方案,使情节看起来像这样: 以下为可复制代码: library(ggplot2) tmp<-data.frame(cbind(rep(c("Sun", "Sat", "Fri", "Thu", "Wed", "Tue", "Mon"), 24),

我想在ggplot2中创建一个没有网格线的热图。我使用主题函数和panel.grid参数删除了它们,但它在y轴值和绘图之间留下了空间:

我尝试使用主题函数的axis.text参数来缩小此差距,但它会使值不对齐:

有人能提出一个解决方案,使情节看起来像这样:

以下为可复制代码:

library(ggplot2)
tmp<-data.frame(cbind(rep(c("Sun", "Sat", "Fri", "Thu", "Wed", "Tue", "Mon"), 24),
                      rep(0:23, 7),
                      runif(168, 0, 3)))
tmp$X1<-factor(tmp$X1, levels= c("Sun", "Sat", "Fri", "Thu", "Wed", "Tue", "Mon"))
tmp$X2<-as.numeric(tmp$X2)
tmp$X3<-as.numeric(tmp$X3)
ggplot(tmp, aes(X2, X1, fill=X3, label=round(X3,2))) +
  geom_tile() +
  theme_minimal() +
  scale_fill_gradient(low="springgreen", high="darkgreen") +
  scale_x_continuous(breaks=0:23) +
  geom_text() +
  theme(panel.grid.major.x = element_blank(),
        panel.grid.major.y = element_blank(),
        panel.grid.minor.x = element_blank(),
        panel.grid.minor.y = element_blank(),
        axis.title.x = element_blank(),
        axis.title.y = element_blank(),
        #axis.text.y = element_text(hjust = 3.2),
        legend.position = "none")
库(ggplot2)

tmp你想要那样的东西吗

ggplot(tmp, aes(factor(X2 - 1), X1, fill = X3, label = round(X3, 2))) +
  geom_tile() +
  geom_text() +
  scale_fill_gradient(low = "springgreen", high = "darkgreen") +
  coord_fixed(.5) +
  theme(
    panel.grid.major.x = element_blank(),
    panel.grid.major.y = element_blank(),
    panel.grid.minor.x = element_blank(),
    panel.grid.minor.y = element_blank(),
    panel.background   = element_blank(),
    axis.title.x       = element_blank(),
    axis.title.y       = element_blank(),
    axis.ticks         = element_blank(),
    legend.position    = "none"
  )

y-lab间距的问题是由于
X2
var是连续的。因此
geom_tile()
将瓷砖的中心定位在1、2、3…23处,瓷砖的宽度==1。第一个平铺的左侧从1-.5=0.5开始,这就是为什么在-.5和.5之间有一个空白位置(没有中间为0的平铺)。将
X2
转换为系数,将在不进行任何额外重新调整的情况下修复它

你可能想修正情节的边缘,心想