R 在geom_平铺的颜色栏导轨上调整大小/手动输入打断,并替换y轴标签

R 在geom_平铺的颜色栏导轨上调整大小/手动输入打断,并替换y轴标签,r,ggplot2,heatmap,R,Ggplot2,Heatmap,我正在重温我大约一年前遇到的这个问题。我希望我的“色条”指南能有效地显示在对数刻度上,这样在查看时,蓝色的颜色越深,反映出的意义就越大 使用以下代码,我生成以下图像: pz <- ggplot(dat.m, aes(x=variable,y=Category)) + geom_tile(aes(fill=value)) + xlab(NULL) + ylab(NULL) + scale_fill_gradientn(colours=c("#000066","#0000FF","

我正在重温我大约一年前遇到的这个问题。我希望我的“色条”指南能有效地显示在对数刻度上,这样在查看时,蓝色的颜色越深,反映出的意义就越大

使用以下代码,我生成以下图像:

pz <- ggplot(dat.m, aes(x=variable,y=Category)) +
  geom_tile(aes(fill=value)) +
  xlab(NULL) + ylab(NULL) +
  scale_fill_gradientn(colours=c("#000066","#0000FF","#DDDDDD","white"), 
                   values=c(0,0.05,0.050000000000001,1.0),
                   breaks=c(0, 0.000001, 0.01, 0.05, 1),
                   guide = "colourbar") +
  theme_bw()+
  theme(panel.background = element_blank(),
        panel.border = element_blank(),
        axis.ticks.x = element_blank(),
        axis.ticks.y = element_blank()) +
  theme(legend.position="top",
        legend.text = element_text(angle=45),
        axis.text.x = element_text(angle=45)
  )
这是我的代码:

col_blue <- c("#FFFFFF","#000099","#000066","#000033")
ggplot(dat.m, aes(x=variable,y=Category)) +
  geom_tile(aes(fill=value)) +
  xlab(NULL) + ylab(NULL) +
  scale_fill_gradientn(colours=col_blue, values=c(1,0.05,0.01,0),guide="colorbar") +
  theme_mary(base_size=12)
col_blue对于
(1)
,只需在打印前(或打印时)修改用于删除空行的数据即可。例如:
ggplot(dat.m[!grepl(“^empty”,dat.m$Category),],aes(…)

对于
(2)
,您可以仅为图例覆盖美学。这里有一个例子,根据您的喜好调整:
+指南(fill=guide\u legend(override.aes=list(alpha=1))


我们可以告诉
缩放填充梯度n
不要显示
guide=FALSE
的指南,然后手动添加我们自己的限制设置为
c(0,0.1)
(或任何您想要的范围)


至于你的第二点,为什么不在绘图之前从源数据中删除“空”行?

theme\u mary是从哪里来的?我知道这是一条老评论,但因为我刚刚更新了这个问题,所以答案是-theme\u mary是我以前制作的自定义主题。我已经从更新的代码中删除了它。对不起,给您添了点麻烦!谢谢你,这很有用,但不完全是我想要的。比例实际上与所指示的颜色相反,我可以通过颠倒颜色比例的顺序轻松地解决这个问题。然而,我仍然希望显示整个比例,只是不是线性间隔-这有意义吗?例如,我希望在指南/图例上以大致相同的比例显示0-0.05和0.05-0.00之间的距离。至于空行,我希望在绘图中有一个空间,这就是我添加空行的原因。我的实际数据集有多个类别,我想要一个空格。我重新编写了上面的问题#1,以使我的目标更加明确。你好,李嘉图,谢谢你的输入。我想我对#2问题不太清楚。实际上,我希望那里有一个空行(这是为了分解真实数据中的分类方案),我只想删除标签。至于#1,我确实希望保持连续的色阶。但是,我想让指南/图例以大致相等的长度显示0-0.05和0.05-0之间的渐变。我在帖子中重新编写了问题#1,以使其更清楚。@user2145578,然后更改级别<代码>级别(数据)Ggplot将不再允许您使用重复级别:“不推荐使用因子中的重复级别”。除非我错过了什么。你能把它扩展到代码中吗?
col_blue <- c("#FFFFFF","#000099","#000066","#000033")
ggplot(dat.m, aes(x=variable,y=Category)) +
  geom_tile(aes(fill=value)) +
  xlab(NULL) + ylab(NULL) +
  scale_fill_gradientn(colours=col_blue, values=c(1,0.05,0.01,0),guide="colorbar") +
  theme_mary(base_size=12)
col_blue <- c("#FFFFFF","#000099","#000066","#000033")
ggplot(dat.m, aes(x=variable,y=Category)) +
  geom_tile(aes(fill=value)) +
  xlab(NULL) + ylab(NULL) +
  scale_fill_gradientn(colours=col_blue, values=c(1,0.05,0.01,0), guide=FALSE) +
  scale_colour_gradientn(guide = "colourbar", limits = c(0,1),breaks=c(1,0.05,0.01,0),values=c(1,0.05,0.01,0),colours=c("#FFFFFF","#000099","#000066","#000033"))
ggplot(dat.m, aes(x=variable,y=Category)) +
  geom_tile(aes(fill=value)) +
  xlab(NULL) + 
  ylab(NULL) + 
  scale_fill_gradientn(colours=col_blue, values=c(1,0.05,0.01,0), guide=FALSE) +
  scale_colour_gradientn(guide = "colorbar", limits = c(0,0.1), colours=col_blue)