问题描述
我正在处理以下数据框:
structure(c(NA,52,22,111,3,16,5,80,NA,14,243,41,1,177,20,26,8,13,21,10,59,29,7,15,9,273,1733,60,164,171,53,932,135,33,144,2,23,81,146,19,11,4,12,32,40,NA),.Dim = c(11L,11L),.Dimnames = list(c("WILL_","WOULD_","MAY_","MIGHT_","CAN_","Could_","SHALL_","SHOULD_","MUST_","OUGHT TO_","USED TO_"),c("_WILL","_WOULD","_MAY","_MIGHT","_CAN","_Could","_SHALL","_SHOULD","_MUST","_OUGHT TO","_USED TO")))
我有以下情节:
reshape2::melt(twitter_us_no_clit_matrix_nohave,value.name = "Freq") %>%
mutate(label = ifelse(is.na(Freq) | Freq == 0,"",as.character(Freq))) %>%
ggplot(aes(Var2,fct_rev(Var1))) +
geom_tile(aes(fill = Freq),color = "black") +
geom_text(aes(label = label),color = "black") +
scale_fill_gradient(low = "grey",high = "purple",na.value = "black") +
scale_x_discrete(NULL,expand = c(0,0),position="top") +
scale_y_discrete(NULL,0)) +
theme(axis.text.x = element_text(angle=60,vjust = 0.5,hjust = 0))
一切看起来都不错,但我想弄清楚如何更改中断,以便相应地更改热图及其“频率”标签。
中断将是 c(0,50,100,500,100000)
并且会使值在色热方面看起来或多或少类似于以下内容:
我应该在 geom_tile() 中调整哪些确切的线条?
解决方法
如果我理解正确,您想将连续音阶划分为多个步骤。我 had some success 使用 scale_fill_steps()
函数:
library(tidyverse)
twitter_us_no_clit_matrix_nohave <- structure(c(NA,52,22,111,3,16,5,80,NA,14,243,41,1,177,20,26,8,13,21,10,59,29,7,15,9,273,1733,60,164,171,53,932,135,33,144,2,23,81,146,19,11,4,12,32,40,NA),.Dim = c(11L,11L),.Dimnames = list(c("WILL_","WOULD_","MAY_","MIGHT_","CAN_","COULD_","SHALL_","SHOULD_","MUST_","OUGHT TO_","USED TO_"),c("_WILL","_WOULD","_MAY","_MIGHT","_CAN","_COULD","_SHALL","_SHOULD","_MUST","_OUGHT TO","_USED TO")))
breaks <- c(0,50,100,500,100000)
reshape2::melt(twitter_us_no_clit_matrix_nohave,value.name = "Freq") %>%
mutate(label = ifelse(is.na(Freq) | Freq == 0,"",as.character(Freq))) %>%
ggplot(aes(Var2,fct_rev(Var1))) +
geom_tile(aes(fill = Freq),color = "black") +
geom_text(aes(label = label),color = "black") +
scale_fill_steps(low = "grey",high = "purple",breaks = breaks,na.value = "black") +
scale_x_discrete(NULL,expand = c(0,0),position="top") +
scale_y_discrete(NULL,0)) +
theme(axis.text.x = element_text(angle=60,vjust = 0.5,hjust = 0))
但是,考虑到休息之间的距离不同,大部分比例是灰色的。我不知道你是否想保留这种观点。
要重新缩放颜色,请将线条更改为
scale_fill_steps(low = "grey",na.value = "grey",trans = "log")
这将使它们在您的体重秤中evenly distributed。我手动设置它们没有成功。我更改了 NA
值的颜色,因为由于对数转换,现在所有的零都是 NA
。