我已经用连续的温度数据和Scale_ill_viridis_c在ggmap中创建了一个热图:

heatmap continuous

为了更容易阅读,我测试了一个带有scaleill_viridis_b和n.Breakes的二进制版本:

enter image description here

我的问题是,入库的热图图例显示所有级别标签,在本例中是每度.我更喜欢在图例中只显示5到6个标签.我想要的是保持在情节的分辨率一个图例的 colored颜色 ,但只标记其中的一部分(如0,3,6,9,12).

我try 了手动设置标签=c(0,3,6,9,12),但R抱怨 break line 和标签长度不同.我想要它,但不能拥有它.我也考虑过对整个数据集进行Mutations ,但我宁愿不要,因为它相当大,而且还包含温度以外的其他数据.

我知道我应该包括代码和数据的工作样本,但我希望我的问题足够简单,无论如何都可以回答.如能帮助我格式化热图图例,以显示比中断数更少的标签数,我将不胜感激.

推荐答案

您可以指定一个空字符串(也就是"")作为您不想标记的分隔符的标签,从而只标记其中的一些分隔符.为此,我使用了包装在匿名函数中的ifelse,该函数可以传递给scale_fill_viridis_blabels=参数.

使用一些虚假的示例数据:

library(ggplot2)

dat <- expand.grid(
  x = seq(10),
  y = seq(10)
)
dat$temp <- seq(0, 14, length.out = 100)

ggplot(dat) +
  geom_tile(aes(x, y, fill = temp)) +
  scale_fill_viridis_b(
    option = "turbo",
    n.breaks = 14,
    labels = \(x) ifelse(
      x %% 3 == 0, x, ""
    ),
    guide = guide_colorsteps(show.limits = TRUE)
  )

R相关问答推荐

使用预定值列表将模拟数量(n)替换为rnorm()

使用R的序列覆盖

获取一个数据库框架的摘要,该数据库框架将包含一列数据库框架,

如何在xyplot中 for each 面板打印R^2

R for循环返回到先前值

使用strsplit()将向量操作为数据框

如何自定义3D散点图的图例顺序?

使用across,starts_with和ifelse语句变更多个变量

对于变量的每个值,仅 Select 包含列表中所有值的值.R

如何使用ggplot对堆叠条形图进行嵌套排序?

使用R中的dist()迭代ID匹配的欧几里德距离

仅当后续值与特定值匹配时,才在列中回填Nas

将列的值乘以在不同数据集中找到的值

整理曲线图、曲线图和点图

替换在以前工作的代码中有x行&q;错误(geom_sf/gganimate/dow_mark)

如何使用循环从R中的聚合函数创建列,而不会在名称中给出&q;$&q;?

R:如何在数据集中使用Apply

使用显式二元谓词子集化sfc对象时出错

打印的.txt文件,将值显示为&Quot;Num&Quot;而不是值

如何在给定的环境中找到函数的函数参数?