나는 data file에 3 차원 플롯에 "히트 맵"을 그리기에 충분한 데이터 포인트가 있습니다.ggtern contour plot in R
내가 다음 ggtern
를 사용하여 뭔가를 얻으려면 :
library(ggtern)
library(reshape2)
N=90
trans.prob = as.matrix(read.table("./N90_p_0.350_eta_90_W12.dat",fill=TRUE))
colnames(trans.prob) = NULL
# flatten trans.prob for ternary plot
flattened.tb = melt(trans.prob,varnames = c("x","y"),value.name = "W12")
# delete rows with NA
flattened.tb = flattened.tb[complete.cases(flattened.tb),]
flattened.tb$x = (flattened.tb$x-1)/N
flattened.tb$y = (flattened.tb$y-1)/N
flattened.tb$z = 1 - flattened.tb$x - flattened.tb$y
ggtern(data = flattened.tb, aes(x=x,y=y,z=z)) +
geom_point(size=1, aes(color=W12)) +
theme_bw() +
scale_color_gradient2(low = "green", mid = "yellow", high = "red")
은 내가 가진 것입니다 (정말 충분한 데이터 포인트 만 산포도 열지도, 아니다)
내 질문 : ggtern
을 사용하여 두 번째 그림과 같은 것을 어떻게 얻을 수 있습니까?
편집 1 : 파일 이름이 잘못되었습니다. 나는 파일 이름을 고쳤다. 데이터 파일에 여기에 직접 붙여 넣을 수있는 데이터 포인트가 너무 많습니다.
두 번째 그림은 타사 Matlab 패키지 ternplot
에 의해 작성되었습니다. 내 첫 번째 그림에서 히트 맵보다는 이산 라인이있는 3 차원 등고선을 원합니다. 보다 구체적으로, 등고선 목록을 지정하고자합니다. 예 : W12=0.05,0.1,0.15,...
. 나는 geom_density_tern
과 geom_interpolate_tern
으로 몇 시간 동안 놀았지만, 내가 원하는 것을 얻는 방법을 아직 모른다.
MATLAB 코드 :
[HCl, Hha, cax] = terncontour(X,Y,1-X-Y,data,[0.01,0.1,0.2,0.3,0.4,0.5]);
X,Y,1-X-Y
가 플롯상의 좌표 지정
가 data
저장 값과 벡터의 윤곽 값을 지정
가 해킹-R @, 내 최신 편집에 첫 두 의견을 해결. – wdg
대단히 감사합니다. 이 질문에 대해 걱정할 필요는 없지만 나중에 참조 할 수 있도록 이해하기 위해 데이터 자체를 붙여 넣기를 원하지는 않지만 데이터의 '출력'또는 너무 길면 GitHub 또는 PasteBin (등) ** 또는 **의 데이터의'dput '에 대한 링크는 새로운 예제 데이터를 만들거나 패키지에 내장 된 데이터 세트 ('data()')를 사용하는 것이 더 좋습니다. –
@ Hack-R, 나는 그 기사를 철저히 읽었다. 그건 내가 원하는 것이 아니야. 나는 웹 사이트 ggtern.com을 통해서도 갔다. 내 사건과 관련된 예를 찾을 수 없었다. 필자의 경우 전체 공간의 모든 점에 대해 정확히 하나의 값을 갖는다. – wdg