나는 다음과 같은 플롯에서 라벨의 밀집 이상 피할 작업입니다 :피 오버 크롤 R 그래프에서 라벨의
set.seed(123)
position <- c(rep (0,5), rnorm (5,1,0.1), rnorm (10, 3,0.1), rnorm (3, 4, 0.2), 5, rep(7,5), rnorm (3, 8,2), rnorm (10,9,0.5),
rep (0,5), rnorm (5,1,0.1), rnorm (10, 3,0.1), rnorm (3, 4, 0.2), 5, rep(7,5), rnorm (3, 8,2), rnorm (10,9,0.5))
group <- c(rep (1, length (position)/2),rep (2, length (position)/2) )
mylab <- paste ("MR", 1:length (group), sep = "")
barheight <- 0.5
y.start <- c(group-barheight/2)
y.end <- c(group+barheight/2)
mydf <- data.frame (position, group, barheight, y.start, y.end, mylab)
plot(0,type="n",ylim=c(0,3),xlim=c(0,10),axes=F,ylab="",xlab="")
#Create two horizontal lines
require(fields)
yline(1,lwd=4)
yline(2,lwd=4)
#Create text for the lines
text(10,1.1,"Group 1",cex=0.7)
text(10,2.1,"Group 2",cex=0.7)
#Draw vertical bars
lng = length(position)/2
lg1 = lng+1
lg2 = lng*2
segments(mydf$position[1:lng],mydf$y.start[1:lng],y1=mydf$y.end[1:lng])
segments(mydf$position[lg1:lg2],mydf$y.start[lg1:lg2],y1=mydf$y.end[lg1:lg2])
text(mydf$position[1:lng],mydf$y.start[1:lng]+0.65, mydf$mylab[1:lng], srt = 90)
text(mydf$position[lg1:lg2],mydf$y.start[lg1:lg2]+0.65, mydf$mylab[lg1:lg2], srt = 90)
당신은 일부 지역이 레이블 울었다되어 볼 수 있습니다 - x 값이 동일한 경우 또는 유사합니다. 한 레이블 만 표시하려고합니다 (같은 지점에 여러 레이블이있는 경우). 예를 들어,
mydf의 $ 위치 [1 : 5] mylab을 $ mydf 모든 0,
하지만 해당 라벨 [1 : 5] -
MR1 MR2 MR3 MR4 MR5
난 그냥 첫 번째를 표시하려면 "MR1".
마찬가지로 다음 사항은 너무 가깝습니다 (차이는 0.35). 단일 클러스터로 간주되어야하며 첫 번째 레이블이 표시됩니다. 이 방법으로 나는 레이블의 과밀을 제거 할 수있을 것이다. 그것을 어떻게 성취 할 수 있습니까? 일반적으로
이러한 종류의 문제에 대한 자동 해결책은 없습니다.한 가지 방법이나 다른 방법으로는 "손으로"고쳐야 할 것입니다. 가까이에있는 그룹의 레이블을 하드 코딩하거나, 모든 레이블을 생략하고 나중에 이미지 편집기로 레이블을 추가하여이 문제를 해결해야합니다. – joran
i-1 위치 데이터에서 i 위치를 빼고 클러스터를 작성하기위한 임계 값을 만들 수 있습니다. 그런 다음 클러스터 당 레이블을 표시하십시오 – jon