ggplot2를 사용하여 대칭 히트 맵을 만들고 싶습니다. x 축은 y 축과 정확히 동일한 레이블을 표시해야합니다. 불행히도 ddply() 메서드는 순서에 영향을 미칩니다.대칭 (동일 축) ggplot2를 사용한 히트 맵
input.csv은 다음과 같습니다
Names,Peter,Tom,Marc
Peter,1,6,1
Tom,2,4,12
Marc,3,0,21
임 지금까지 다음 코드를 사용 :
library(ggplot2)
library(plyr)
library(reshape2)
library (scales)
dat <- read.csv("input.csv")# read input
dat.m <- melt(dat)# to "melt" the dataset
dat.s <- ddply(dat.m, .(variable), transform, rescale = scale(value)) #pairwise format
file <- ggplot(dat.s, aes(Names,variable)) + geom_tile(aes(fill = value),colour = "white") + theme(axis.text.x = element_text(angle = 90, hjust = 1),legend.position="top")
pdf(file=paste("output",".pdf",sep="")) # write to file
plot(file)
# make plot
dev.off()
이 플롯 결과 위치를 상단 대에서 Y 축 (아래쪽)에는 Marc-Tom-Peter라는 레이블이 있지만 X 축에는 Marc-Peter-Tom이라는 레이블이 있습니다 (왼쪽에서 오른쪽).
알고 계십니까, 두 축의 라벨이 같은 (원래의) 순서를 갖는 음모를 어떻게 얻을 수 있습니까? (Peter, Tom, Marc), 이것은 단지 장난감의 예에 불과합니다. 실제 데이터에는 100 개가 넘는 레이블이 있으므로 수동으로 쌍을 정의하는 데 도움이되지 않습니다.
lvls <- as.character(dat$Names)
는 다음 순서 variable
은 그래서 Names
일치 :
dat.s$variable <- factor(dat.s$variable, levels = lvls)
이제하려 시도
안녕하세요. 여러분이 묻는 첫 번째 질문으로, 여러분은 여러 가지 일을 훌륭하게 해왔습니다. 이를 개선하는 한 가지 방법은 데이터를 추가하여이를 재현 할 수있게하는 것입니다. 이것은 SO에 대한 질문을하는 데 필요한 부분입니다. http://stackoverflow.com/help/mcve –