Ich habe ein Liniendiagramm mit einigen Zeitpunkten, die nur schwer durch die Färbung zu unterscheiden sind und ich möchte daher die Zeitpunkte auf der Zeichnung beschriften, aber die Beschriftungen überlappen sich (siehe unten) in einer Weise, wo es schwierig ist, die Etiketten zu lesen. organize text auf geom_point mit geom_text
Das Grundstück suchen derzeit wie folgt aus,
Ich frage mich, ob es einen Weg zu ‚Stack‘ ist die Etiketten oder irgendeiner Weise (Skript), die sicherstellen, dass sie sich nicht überlappen. So etwas wie dies,
Jede Hilfe würde geschätzt. Hier
ist der Code, den ich verwendet, um die Handlung zu produzieren,
require(ggplot2)
require(plyr)
require(reshape)
# create sample data
set.seed(666)
dfn <- data.frame(
Referral = seq(as.Date("2007-01-15"), len= 26, by="23 day"),
VISIT01 = seq(as.Date("2008-06-15"), len= 24, by="15 day")[sample(30, 26)],
VISIT02 = seq(as.Date("2008-12-15"), len= 24, by="15 day")[sample(30, 26)],
VISIT03 = seq(as.Date("2009-01-01"), len= 24, by="15 day")[sample(30, 26)],
VISIT04 = seq(as.Date("2009-03-30"), len= 24, by="60 day")[sample(30, 26)],
VISIT05 = seq(as.Date("2010-11-30"), len= 24, by="6 day")[sample(30, 26)],
VISIT06 = seq(as.Date("2011-01-30"), len= 24, by="6 day")[sample(30, 26)],
Discharge = seq(as.Date("2012-03-30"), len= 24, by="30 day")[sample(30, 26)],
Patient = factor(1:26, labels = LETTERS),
openCase = rep(0:1, 100)[sample(100, 26)])
# set today's data for cases that do not have an Discharge date
dfn$Discharge[ is.na(dfn$Discharge) ] <- as.Date("2014-01-30")
mdfn <- melt(dfn, id=c('Patient', 'openCase'), variable_name = "Visit")
names(mdfn)[4] <- 'Year' # rename
# order data in mdfn by 'Referral' in dfn
mdfn$Patient <- factor(mdfn$Patient,levels =
(dfn$Patient[order(dfn$Referral)]),ordered = TRUE)
# subset a dataset to avoid 'Discharge' for cases that are not closed
mdfn2 <- subset(mdfn,!(Visit=="Discharge" & Year > as.Date("2014-01-01")))
# the plot as it looks now
ggplot(mdfn, aes(Year, Patient)) +
geom_blank() +
geom_line(data = mdfn[mdfn$openCase == 0,], colour = "black") +
geom_line(data = mdfn[mdfn$openCase == 1,], colour = "grey") +
geom_point(data = mdfn2, aes(colour = Visit), size = 4, shape = 124) +
geom_text(data=mdfn2, mapping=aes(x=Year, y=Patient,
label=substr(Visit, 1, 7), colour=Visit), size=2,
vjust=-.4, hjust=-.1, angle = 00)
Fehlende Funktionen, fehlende Daten, nicht reproduzierbar. –
Ich weiß nicht, wie es geht, aber brauchen Sie wirklich Etiketten? Es gibt bereits eine Legende, die diese Informationen liefert. –
mögliches Duplikat von [Intelligente Punktbeschriftung in R] (http://stackoverflow.com/questions/7611169/intelligent-point-label-placement-in-r) – joran