Ich arbeite an avoid über Crowding der Etiketten in der folgenden Handlung:Vermeidung von Überbelegung von Etiketten in r Graphen
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)
können Sie einige Bereiche zu sehen sind, mit den Etiketten krähte - wenn x-Wert gleich ist o.ä. Ich möchte nur ein Label anzeigen (wenn mehrere Labels am selben Punkt sind). Zum Beispiel
mydf $ Position [1: 5] sind alle 0,
aber entsprechende Etikett mydf MyLab $ [1: 5] -
MR1 MR2 MR3 MR4 MR5
Ich möchte nur die ersten anzuzeigen "MR1".
Ähnlich sind die folgenden Punkte zu nahe (sagen wir die Differenz von 0,35), sie sollten als ein einziger Cluster betrachtet werden und die erste Beschriftung wird angezeigt. Auf diese Weise würde ich die Überfüllung der Etiketten beseitigen können. Wie kann ich es erreichen?
Es gibt keine automatische Lösung für diese Art von Problemen.Auf die eine oder andere Weise müssen Sie dies "von Hand" beheben: Entweder indem Sie die Beschriftungen für Gruppen enger Zeilen hart codieren oder indem Sie alle Beschriftungen weglassen und sie anschließend mit einem Bildeditor hinzufügen. – joran
Sie können die i-Position von i-1-Positionsdaten subtrahieren und dann einen Schwellenwert erstellen, um einen Cluster zu erstellen. Dann wahrscheinlich ein Label pro Cluster anzeigen – jon