ggplot热图无法填充图块

Rei*_*ien 5 r heatmap ggplot2

这个(最小的,自包含的)示例被打破:

require(ggplot2) 

min_input = c(1, 1, 1, 2, 2, 2, 4, 4, 4)
input_range = c(4, 470, 1003, 4, 470, 1003, 4, 470, 1003)
density = c(
    1.875000e-01,
    5.598958e-04,
    0.000000e+00,
    1.250000e-02,
    3.841146e-04,
    0.000000e+00,
    1.250000e-02,
    1.855469e-04,
    0.000000e+00)       

df = data.frame(min_input, input_range, density)

pdf(file='problemspace.pdf')
ggplot(df, aes(x=min_input, y=input_range, fill=density)) +
    geom_tile()
dev.off()
Run Code Online (Sandbox Code Playgroud)

生产:

有缺口的瓷砖

为什么会有很大差距?

sea*_*erd 5

由于您没有所有图块的数据,因此存在间隙.如果您想尝试填充它们,您唯一的选择是插值(假设您无法访问其他数据).理论上,geom_raster()(近亲geom_tile())支持插值.但是,根据这个github问题,该功能目前尚未正常运行.

但是,作为一种解决方法,您可以使用qplot,它只是ggplot的包装器:

qplot(min_input, input_range, data=df, geom="raster", fill=density, interpolate=TRUE)
Run Code Online (Sandbox Code Playgroud)

如果您拥有数据的点之间的空间太大,您仍然会在图表中找到空格,但这会扩展您可以估算值的范围.

编辑:

根据您发布的示例,这将是输出

在此输入图像描述

正如您所看到的,由于缺少2到4之间的数据点,因此在中间有一条垂直的白色带.