ggplot 热图无法填充图块
ggplot heatmap failing to fill tiles
这个(最小的,自包含的)例子被破坏了:
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()
制作中:
为什么差距这么大?
存在差距,因为您没有所有图块的数据。如果您想尝试填充它们,您唯一的选择是插值(假设您无权访问其他数据)。理论上,geom_raster()
(geom_tile()
的近亲)支持插值。但是,根据 this github issue,该功能目前无法使用。
但是,作为解决方法,您可以使用 qplot,它只是 ggplot 的包装器:
qplot(min_input, input_range, data=df, geom="raster", fill=density, interpolate=TRUE)
如果您拥有数据的点之间的 space 太多,您的图表中仍会出现空白 space,但这会扩大您可以处理的范围估计值。
编辑:
根据您发布的示例,这将是输出
如您所见,由于 2 和 4 之间缺少数据点,中间有一条垂直的白色带 运行。
这个(最小的,自包含的)例子被破坏了:
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()
制作中:
为什么差距这么大?
存在差距,因为您没有所有图块的数据。如果您想尝试填充它们,您唯一的选择是插值(假设您无权访问其他数据)。理论上,geom_raster()
(geom_tile()
的近亲)支持插值。但是,根据 this github issue,该功能目前无法使用。
但是,作为解决方法,您可以使用 qplot,它只是 ggplot 的包装器:
qplot(min_input, input_range, data=df, geom="raster", fill=density, interpolate=TRUE)
如果您拥有数据的点之间的 space 太多,您的图表中仍会出现空白 space,但这会扩大您可以处理的范围估计值。
编辑:
根据您发布的示例,这将是输出
如您所见,由于 2 和 4 之间缺少数据点,中间有一条垂直的白色带 运行。