我想在没有网格线的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")
答案 0 :(得分:1)
你想要那样的东西吗?
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
转换为因数,即可对其进行修正,而无需进行任何其他调整。
想着,您可能想固定图解的边缘。