Die*_*Arg 0 grid r time-series heatmap ggplot2
该热图有一个内置网格,我无法找到自定义的方法。
我想保留网格中的水平线,如果可能的话增加厚度,并禁用垂直线。每行应该看起来像一个连续的时间序列,其中存在数据,而不存在数据则为空白。
在顶部添加垂直/水平线可能会覆盖一些数据,因为网格线或小矩形之间的受控间隙是更好的选择。
或者,geom_raster根本不显示任何网格。我需要添加网格的水平线。
我尝试更改线型,即 geom_tile 参数,它似乎确实更改了类型或允许使用 linetype=0 完全禁用它,完全禁用网格,但它不允许保留水平网格线。通过修改大小参数,我没有看到任何变化。
这是生成上述绘图的代码:
ggplot( DF, aes( x=rows, y=name, fill = value) ) +
#geom_raster( ) +
geom_tile( colour = 'white' ) +
scale_fill_gradient(low="steelblue", high="black",
na.value = "white")+
theme_minimal() +
theme(
legend.position = "none",
plot.margin=margin(grid::unit(0, "cm")),
#line = element_blank(),
#panel.grid = element_blank(),
panel.border = element_blank(),
panel.grid = element_blank(),
panel.spacing = element_blank(),
#panel.grid = element_line(color="black"),
#panel.grid.minor = element_blank(),
plot.caption = element_text(hjust=0, size=8, face = "italic"),
plot.subtitle = element_text(hjust=0, size=8),
plot.title = element_text(hjust=0, size=12, face="bold")) +
labs( x = "", y = "",
#caption= "FUENTE: propia",
fill = "Legend Title",
#subtitle = "Spaces without any data (missing, filtered, etc)",
title = "Time GAPs"
)
Run Code Online (Sandbox Code Playgroud)
我尝试附加DF %>% dput,但发现正文仅限 30000 个字符;您输入了 203304。如果有人熟悉类似的数据集,请告知。
此外,
plot.margin。以下数据集与您的数据集具有相同的名称和基本结构,足以作为示例:
set.seed(1)
DF <- data.frame(
name = rep(replicate(35, paste0(sample(0:9, 10, T), collapse = "")), 100),
value = runif(3500),
rows = rep(1:100, each = 35)
)
Run Code Online (Sandbox Code Playgroud)
让我们用您自己的代码重新创建您的绘图,使用以下geom_raster版本:
library(ggplot2)
p <- ggplot( DF, aes( x=rows, y=name, fill = value) ) +
geom_raster( ) +
scale_fill_gradient(low="steelblue", high="black",
na.value = "white") +
theme_minimal() +
theme(
legend.position = "none",
plot.margin=margin(grid::unit(0, "cm")),
panel.border = element_blank(),
panel.grid = element_blank(),
panel.spacing = element_blank(),
plot.caption = element_text(hjust=0, size=8, face = "italic"),
plot.subtitle = element_text(hjust=0, size=8),
plot.title = element_text(hjust=0, size=12, face="bold")) +
labs( x = "", y = "", fill = "Legend Title", title = "Time GAPs")
p
Run Code Online (Sandbox Code Playgroud)

这里的关键是要认识到离散轴“实际上”是“在幕后”的数字轴,离散刻度被放置在整数值处,并且因子级别名称被替换为轴上的那些整数。这意味着我们可以使用 , 绘制分隔白线geom_hline,其值为 0.5、1.5、2.5 等:
library(ggplot2)
p <- ggplot( DF, aes( x=rows, y=name, fill = value) ) +
geom_raster( ) +
scale_fill_gradient(low="steelblue", high="black",
na.value = "white") +
theme_minimal() +
theme(
legend.position = "none",
plot.margin=margin(grid::unit(0, "cm")),
panel.border = element_blank(),
panel.grid = element_blank(),
panel.spacing = element_blank(),
plot.caption = element_text(hjust=0, size=8, face = "italic"),
plot.subtitle = element_text(hjust=0, size=8),
plot.title = element_text(hjust=0, size=12, face="bold")) +
labs( x = "", y = "", fill = "Legend Title", title = "Time GAPs")
p
Run Code Online (Sandbox Code Playgroud)

要更改线条的粗细,只需更改size参数即可。
由reprex 包于 2022 年 8 月 1 日创建(v2.0.1)