2016-06-04 9 views
5

Ich habe ein R-Diagramm, wo ich die Werte als Symbole verwenden. Die Punkte haben auch Fehlerbalken: R Symbol Hintergrund für benutzerdefinierte Symbole

Das Problem ist offensichtlich, dass die Fehlerbalken (ich benutze Pfeile dafür) durch die Zahlen und das sieht nur hässlich aus und macht sie schwer zu lesen.

Das ist mein Code, irgendwelche Ideen?

x = c(45.58333, 89.83333, 114.03333,138.65000,161.50000,185.15000,191.50000) 
y_mean = c(3.350000,6.450000,7.200000,7.033333,8.400000,7.083333,6.750000) 
y_sd = c(0.1802776,0.1732051,0.2500000,0.2020726,0.3500000,0.2020726,0.1000000) 

values = data.frame(x, y_mean, y_sd) 

plot(values$x, values$y_mean, type="n") 

arrows(values$x, values$y_mean - values$y_sd, 
    values$x, values$y_mean + values$y_sd, 
    length=0.05, angle=90, 
    code=3, col="red") 

lines(values$x, values$y_mean, type="b", 
    pch=" ", 
    col="red", bg="white") 

text(values$x, values$y_mean, label=round(values$y_mean), col="red") 

EDIT: ausgeführt ich den genauen Code oben gezeigt, wie gefragt: enter image description here

+0

keine reproduzierbare Daten zu spielen? – 989

+0

Ja, sicher, ich habe es hinzugefügt :-). –

+0

'Werte $ y_mean',' Werte $ y_sd'? – 989

Antwort

2

Eine Idee ist es, den Inhalt der Handlung, wo der Text wird gezeichnet, vor den Text zeichnen. Dies kann mit erfolgen. Obwohl Sie riskieren, die Fehlerbalken vollständig mit diesem Ansatz auszublenden.

Wir können verwenden, um die entsprechenden Größen für die Whiteout-Rechtecke zu erhalten.

x <- c(45.58333, 89.83333, 114.03333,138.65000,161.50000,185.15000,191.50000); 
y_mean <- c(3.350000,6.450000,7.200000,7.033333,8.400000,7.083333,6.750000); 
y_sd <- c(0.1802776,0.1732051,0.2500000,0.2020726,0.3500000,0.2020726,0.1000000); 
xlim <- range(x); 
ylim <- c(min(y_mean-y_sd),max(y_mean+y_sd)); 
plot(NA,xlim=xlim,ylim=ylim,xlab='x',ylab='y'); 
arrows(x,y_mean-y_sd,x,y_mean+y_sd,length=0.05,angle=90,code=3,col='red'); 
lines(x,y_mean,type='b',pch=' ',col='red',bg='white'); 
ls <- as.character(round(y_mean)); 
ex <- 0.4; ## whiteout expansion factor 
lsw <- strwidth(ls); w <- lsw/2*(1+ex); 
lsh <- strheight(ls); h <- lsh/2*(1+ex); 
rect(x-w,y_mean-h,x+w,y_mean+h,col='white',border=NA); 
text(x,y_mean,ls,col='red'); 

plot

+0

Danke, das ist perfekt! :-D –

3

ich mit der horizontalen Rechtfertigung spielen würde und kleine Punkte hinzufügen Spur der ursprünglichen Position zu halten

points(values$x, values$y_mean, pch=19, col="red", cex=0.5) 
text(values$x, values$y_mean, label=round(values$y_mean), col="red", adj = -0.2) 

enter image description here

2

Wenden Sie einfach diese Änderungen:

plot(values$x, values$y_mean, type="n", 
xlim = c(min(values$x), max(values$x) + 20), 
ylim = c(min(values$y_mean)-1, max(values$y_mean)+1)) 

text(values$x, values$y_mean, label=round(values$y_mean), col="blue", pos = 3) 

+0

Nicht genau was ich wollte aber eine andere Möglichkeit es zu lösen :-). –

+0

Nun, geringfügige Änderungen führten zu einer Lösung. Du hast dein Problem folgendermaßen formuliert: 'Das Problem ist offensichtlich, dass die Fehlerbalken (ich benutze Pfeile dafür) die Zahlen durchqueren und das sieht nur hässlich aus und macht sie schwer lesbar. Und jetzt sieht es nicht hässlich aus und es ist einfach zu lesen. Mission erfüllt :) – 989

Verwandte Themen