更改 geom_tile() 中的中断

Posted

技术标签:

【中文标题】更改 geom_tile() 中的中断【英文标题】:changing the breaks in geom_tile() 【发布时间】:2021-09-06 15:36:29 【问题描述】:

我有矩阵数据,想使用 geom_tile() 创建热图。 geom_tile() 成功运行,但“价值”的限制似乎已经过时。 (例如,超过 100 个值是相同的颜色中断)。我想将结果与其他数据集进行比较,所以我认为图表之间的相同颜色中断更好。

 Var1 <- c(0,3,31,316,3162,0,3,31,316,3162,0,3,31,316,3162,0,3,31,316,3162,0,3,31,316,3162)
  Var2 <- c(0,0,0,0,0,3,3,3,3,3,31,31,31,31,31,316,316,316,316,316, 3162, 3162, 3162, 3162, 3162)
  value <- c(67,79,90,20, 5,10,88,82,11, 1, 2,17, 107,41, 4, 3,15,81,66,12, 1, 3,14,16,23)
  longData <- data.frame(cbind(Var1, Var2, value))      

ggplot(longData, aes(x = as.character(Var1), y = as.character(Var2))) + 
      geom_tile(aes(fill=value)) + 
      scale_fill_steps(low="grey90", high="red",  breaks=c(0, 10, 25, 50, 100, 150, 200, 300)) +
      labs(x="2000", y="2007", title="Matrix")+
      geom_text(aes(label = value))

-----更新-----

我想比较这两个图表,但是显示的颜色会因值而异。

Var1 <- c(3, 31,316,3162,3,31,316,3162,3,31, 316,3162,3,31,316, 3162, 31,316,3162)
Var2 <- c(0,0,0,0,3,3,3,3,31,31,31,31,316,316,316,316,3162,3162,3162)
value <- c(36,34,9,4,129,59,12,2,37,277,50,10,3,23,106,22,5,9, 31)
longData2 <- data.frame(cbind(Var1, Var2, value))

ggplot(longData2, aes(x = as.character(Var1), y = as.character(Var2))) + 
      geom_tile(aes(fill=value)) + 
      scale_fill_steps(low="grey90", high="red",  breaks=c(0, 10, 25, 50, 100, 150, 200, 300)) +
      labs(x="2007", y="2012", title="Matrix")+
      geom_text(aes(label = value)) 

【问题讨论】:

我不明白你在问什么。您似乎正在使用breaks=c(0, 10, 25, 50, 100, 150, 200, 300) 明确设置休息时间。这些不是你想要的休息时间吗? 您在第二个情节中是否也使用了breaks=c(0, 10, 25, 50, 100, 150, 200, 300)?如果您包含一个简单的reproducible example 以及可用于测试和验证可能解决方案的示例输入,则更容易为您提供帮助。与dput() 共享数据,以便我们将其复制/粘贴到 R 中。 感谢 cmets!是的,我在第二个图中使用了相同的中断 ()。我更新以包含实际数据。 【参考方案1】:

这似乎比我想象的要难。看来您还需要照顾重新缩放器。为了保持两者相同,您可以定义一次比例,例如

my_fill <- scale_fill_steps(low="grey90", high="red",  
                         breaks=c(0, 10, 25, 50, 100, 150, 200, 300), 
                         rescale=function(x, ...) scales::rescale(x, from=c(0, 300)),
                         limits=c(0,300))

然后将其用于两个地块

ggplot(longData, aes(x = as.character(Var1), y = as.character(Var2))) + 
  geom_tile(aes(fill=value)) + 
  my_fill +   
  labs(x="2007", y="2012", title="Matrix")+
  geom_text(aes(label = value))
ggplot(longData2, aes(x = as.character(Var1), y = as.character(Var2))) + 
  geom_tile(aes(fill=value)) + 
  my_fill + 
  labs(x="2007", y="2012", title="Matrix")+
  geom_text(aes(label = value)) 

【讨论】:

以上是关于更改 geom_tile() 中的中断的主要内容,如果未能解决你的问题,请参考以下文章

如何更改我的 t_map 对象图例中的中断

更改 Bundle ID 会导致应用中断

如何更改/指定超出渐变条限制的填充颜色?

当我使用 Webpack HMR 在 Chrome DevTools 中更改样式时,页面样式会中断

调整ggplot代码以更改所有文本颜色的快捷方式-R

USN NFTS 更改通知事件中断