2016-09-21 3 views
0

I am plotting categorical variable vs continuous variable, AGE vs Smoking habits Unten ist der Code.Streudiagramm Textbeschriftungen in R

stripchart(Age~Smoke, data = survey_clean_data , pch=16 , col = "blue", method = "jitter" ,main = "AGE VS SMOKE",na.rm = T) 

Ich möchte es Labels wie unten Bild hinzuzufügen, versucht enter image description here

ich mehrere Optionen .. aber es ist auf der anderen geschrieben zu werden.

means = c(paste("mean_Age =",roumean(survey_clean_data[Smoke == "Heavy","Age"],na.rm =T)), 
      paste("mean_Age =",mean(survey_clean_data[Smoke == "Never","Age"],na.rm =T)), 
      paste("mean_Age =",mean(survey_clean_data[Smoke == "Regul","Age"],na.rm =T)), 
      paste("mean_Age =",mean(survey_clean_data[Smoke == "Occas","Age"],na.rm =T))) 


text(50,survey_clean_data$Smoke,labels = means) 

DATA: Bibliothek (MASS) befestigen (Umfrage)

+1

Für den R-Tag bitten wir Sie, ein reproduzierbares Beispiel liefern (das heißt, die Daten und der Code). Wenn Sie die Daten zur Verfügung stellen, kann ich Ihnen zeigen, wie das geht. –

Antwort

1

Es gibt ein paar Probleme mit Ihrem Code. Die Hauptsache ist, dass Sie text() vier Etiketten senden (den Inhalt von means), aber eine Anzahl von Y-Koordinaten entspricht der Anzahl der Datenpunkte, da Sie es survey_clean_data senden. R versucht diese ungleichmäßigen Vektoren auszugleichen, was zu einer Überzeichnung führt.

Stattdessen könnten Sie tun (Daten künstlich sind, da Sie nicht zur Verfügung gestellt hat):

stripchart(Age~Smoke, data = survey_clean_data , pch=16 , col = "blue", method = "jitter" ,main = "AGE VS SMOKE",na.rm = T) 

means <- aggregate(Age~Smoke, data = survey_clean_data, FUN = mean) # mean of each category 
means$y <- 1:4 # add y-coordinates for each category 

with(means, text(50, Smoke, labels = sprintf('Mean Age = %0.1f', Age))) # plot text labels on top of stripchart 

Ergebnis:

enter image description here

0

Antwort von jdobres geben hat gut funktioniert. Das Folgende ist eine weitere Lösung.

Parameter ylim=c(0.8,4.2) zum Streudiagramm hinzufügen. Sie können diese Bereiche von c (1,4) bis c (0,8,4,2) anpassen. Der spätere arbeitete für mich.

stripchart(Age~Smoke, data = survey_clean_data , pch=16 , col = 634, method = "jitter" ,main = "AGE VS SMOKE",na.rm = T,ylim=c(0.8,4.2)) 

Mit der folgenden Zeile können Sie die vertikale Höhe des Textes anpassen. zB: +0,1 -0,1 etc

text(50,c(1:4)+0.1,means) 
Verwandte Themen