如何使用ggplot2从geom_tile(热图)中去除白色线条

5
我在我的热力图中删除瓷砖之间的白线时遇到了问题。以下是我的代码和图片。有人遇到过这种情况吗?
t <- ggplot(Drug_heatmap_df_final, 
   aes(x=reorder(Drug,Total_Deaths), y=Start_Date, fill=Total_Deaths)) + 
   geom_tile() + 
   labs(title="Heatmap of Total Deaths per month by Drug", x="Drug", y="Month") + 
   theme(plot.title = element_text(hjust=.5)) +
   scale_y_date(date_breaks="1 year" , labels = date_format("%b-%Y")) +
   theme(axis.text.x = element_text(size=13)) 

plot(t)

enter image description here

3个回答

5
我不知道这是否是最优雅的解决方案,但如果您在中添加color,然后在geom_tile中调整大小,您可以让它们重叠并消除白线:

首先是带有白线的数据外观:

ggplot(mydf, aes(x=grp, y=date, fill=n)) + 
  geom_tile()

enter image description here

现在,我将我的颜色设置为与填充对象相同并调整大小:

ggplot(mydf, aes(x=grp, y=date, fill=n,color=n)) + 
  geom_tile(size=0.6) 

在此输入图片描述

就像我说的,这可能不是最优雅的解决方案,可能有更好、更有效的方法来确定大小值(而不像我这样试错),但总体上看,这似乎解决了你的问题。


这正是我所需要的!我还尝试在代码末尾添加geom_raster()。它将每行中的白线数量减少到整个图中的6条白线,但我需要删除所有的白线。你的解决方案完全去除了它,非常感谢! - Jeffy
1
使用ggplot2 3.3.2,geom_tile(size= ...)对我没有任何改变。然而,我的y轴上没有日期,而是整数。对我有用的是geom_tile(height=1.01)。该值略大于默认值,也许默认值在日期y轴上不同。当条纹是垂直的时,可以类似地使用geom_tile(width=...) - akraf

2

我曾经也遇到过同样的问题,无法使我的轴(一个24小时的时间段)离散化。最后我发现,在我每2分钟绘制一个瓷砖(1/30小时),我的csv数据文件会将点四舍五入到0.03的间隔,留下了瓷砖之间的空白线。我只需将Excel表格中的小数位数从2更改为多个数字,即给出0.03333333的间隔,这些白线就消失了。太棒了!我的热力图之前和之后


1
如果你在两个轴上绘制连续变量,并且使用的是geom_tile,你应该考虑使用geom_raster代替。在我的使用案例中,geom_raster去掉了线条,并且速度更快! geom_raster要求每个瓷砖的大小相同,但在我的经验中,这通常已经足够了。在这里查看文档:https://ggplot2.tidyverse.org/reference/geom_tile.html

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接