Ich brauche eine einfache Liniendiagramm mit Gruppen mit folgenden Daten zu erstellen:Wie erstellt man ein Liniendiagramm mit Gruppen in Base R ohne Schleifen?
library(ggplot2)
#GGPLOT
qplot(x=x, y=y,
data=test,
colour=group,
main="GGPLOT line plot with groups") +
geom_line()
ich es auch tun kann, mit: kann
test = data.frame(x = rep(1:3, each = 2),
group = rep(c("Group 1","Group 2"),3),
groupcd= rep(c(1,2),3),
y= c(22,8,11,4,7,5)
)
ich es leicht mit GGPLOT tun TRELLIS:
library(lattice)
xyplot(y~x,
type="b",
group=group,
data=test,
main="TRELLIS line plot with groups",
auto.key =list(
lines = TRUE)
)
Allerdings bin ich ein wenig widerwillig, GGPLOT oder TRELLIS jetzt zu verwenden. Ich möchte in der Lage sein, diese Grafik zu erstellen mit Basis R. Die einzige Art, wie ich dieses Grundstück bekommen kann in der Base R zu arbeiten, ist durch for-Schleife:
# set up empty plot
plot(test$y ~test$x, ylab="y", xlab="x", type="n", main="Base R line plot with groups")
colors<-c("red","blue")
#plot each group in the for loop
number_of_groups <- as.numeric(max(unique(test$groupcd))) #calculate number of groups
for (i in 1:number_of_groups)
{
temp <- subset(test, groupcd==i)
lines(temp$x, temp$y, col=colors[i])
points(temp$x, temp$y, col=colors[i])
}
legend("top", legend=unique(test$group), text.col =colors )
Dieser Ansatz scheint ziemlich verschachtelt. Gibt es einen einfacheren Weg, dies in Base R zu tun? Gibt es eine Gruppenoption in der Basis-R-Plot-Funktion? Ich danke dir sehr.
wandeln Sie Ihre Daten in Großformat um und verwenden Sie 'matplot' ... –
Vielen Dank! Ich war mir Matplot gar nicht bewusst - das ist sehr hilfreich. Es ist eine sehr gute Lösung und scheint die beste Option zu sein. Ich bin nur wirklich überrascht, Gruppierung kann nicht einfach mit PLOT getan werden. Nochmals vielen Dank –
Ich denke, Sie sollten Ihre 'matplot' Lösung als Antwort anstatt als Bearbeitung Ihrer Frage einreichen (obwohl abhängig von Ihrem Ruf müssen Sie vielleicht eine Weile warten - ich weiß es nicht). Ich denke, ich kann ziemlich sicher sagen, dass es in base :: plot keine einfache Gruppenoption gibt.Ein paar andere Gedanken zu Ihrem Code oben: (1) Ich denke, Sie können 'subset (test_transposed, select = -x)' verwenden, um die 'x' Spalte fallen zu lassen; (2) du willst wahrscheinlich 'lty = 1: 2, col = farben, pch = 1: 2' in deiner' legend'-Anweisung. –