私は、次のプロットのラベルの混雑上回避に取り組んでいます:回避オーバー混雑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値が同じであればまたは類似。 1つのラベルだけを表示したい(同じポイントに複数のラベルがある場合)。例えば、
mydfの$の位置[1:5]は、すべて0、
が、対応するラベルmydf $ mylab [1:5]は -
MR1 MR2 MR3 MR4 MR5
私は最初のものを表示したいです"MR1"。
同様に、以下の点は近すぎる(例えば0.35の差)ので、単一のクラスタとみなして最初のラベルが表示されます。このようにして、私はラベルの過密を取り除くことができます。どうすれば達成できますか?一般的に
この種の問題に対する自動解決策はありません。いずれにしても、手作業でこれを修正する必要があります。密集したグループのラベルをハードコーディングするか、すべてのラベルを省略して後でイメージエディタで追加するかのいずれかです。 – joran
i-1ポジションデータからiポジションを引くことができます。次に、クラスタを作成するためのしきい値を設定します。おそらくクラスターあたりのラベルを表示する – jon