R 如何在ggplot中重新排列热图y轴上的对象?

R 如何在ggplot中重新排列热图y轴上的对象?,r,ggplot2,heatmap,axes,R,Ggplot2,Heatmap,Axes,这就是我目前的情况: heat=read.csv("heat.csv") head(heat) heat$trap <- as.character(heat$trap) class(heat$trap) levels(heat$trap) <- c("T1", "T2", "T3", "T4","T5", "T6", "T7", "T8", "T9", "T10") saeat <- ggplot(data = heat, mapping = aes(x = trip, y

这就是我目前的情况:

heat=read.csv("heat.csv")
head(heat)
heat$trap <- as.character(heat$trap)
class(heat$trap)
levels(heat$trap) <- c("T1", "T2", "T3", "T4","T5", "T6", "T7", "T8", "T9", "T10")

saeat <- ggplot(data = heat, mapping = aes(x = trip, y = trap, fill = sand)) + geom_tile() + ylab(label = "Trap") + xlab(label = "Month") + scale_fill_gradient(name = "Proportion of eggs", low = "#000033", high = "#FFFF33")
saeat

sand.heat <- veat + theme(strip.placement = "outside",plot.title = element_text(hjust = 0.5), axis.title.y = element_blank(), strip.background = element_rect(fill = "#EEEEEE", color = "#FFFFFF")) + ggtitle(label = "Sand treatment") + scale_y_discrete(breaks=c("T1", "T2", "T3", "T4","T5", "T6", "T7", "T8", "T9", "T10"))

swallows.heat
heat=read.csv(“heat.csv”)
头部(热)

heat$trap我不确定是否以同样的方式使用
字符
变量,但是如果使用
因子
变量,则可以按照您想要的方式重新排列级别

# make a factor variable
heat$trap <- as.factor(heat$trap)

# check the current levels
levels(heat$trap)
[1] "T1"  "T10" "T2"  "T3"  "T4"  "T5"  "T6"  "T7"  "T8"  "T9"

# reorder the levels
heat$trap <- factor(heat$trap, levels = levels(heat$trap)[c(1, 3:10, 2)])

# check the correct order
levels(heat$trap)
[1] "T1"  "T2"  "T3"  "T4"  "T5"  "T6"  "T7"  "T8"  "T9"  "T10"
#制作一个因子变量

热量$trap排序是按字典顺序进行的,其中
“T10”
位于
“T2”
之前。任何关于在轴上排序的问题都可以归结为:将y轴变量转换为一个因子并强制执行级别,如
因子(…,级别=…)
。像这样硬编码索引有点脆弱。我建议您找到一种编程方式,例如
levels(heat$trap)[order(as.integer(gsub(\\d“,”,levels(heat$trap)))]
。谢谢-这非常有效!