Je veux comparer deux courbes, il est possible avec R de tracer un tracé puis d'en dessiner un autre? Comment ?dessine une ou plusieurs parcelles dans la même fenêtre
merci.
Je veux comparer deux courbes, il est possible avec R de tracer un tracé puis d'en dessiner un autre? Comment ?dessine une ou plusieurs parcelles dans la même fenêtre
merci.
Jetez un oeil à la valeur nominale
Avec base R> ?par
> plot(rnorm(100))
> par(new=T)
> plot(rnorm(100), col="red")
, vous pouvez tracer votre courbe une, puis ajoutez la deuxième courbe avec l'argument lines()
. Voici un exemple rapide:
x <- 1:10
y <- x^2
y2 <- x^3
plot(x,y, type = "l")
lines(x, y2, col = "red")
Sinon, si vous vouliez utiliser ggplot2, voici deux méthodes - on trace différentes couleurs sur la même parcelle, et l'autre génère des parcelles séparées pour chaque variable. L'astuce ici est de "fondre" les données en format long en premier. Dessinez plusieurs courbes en même temps avec la fonction matplot.
library(ggplot2)
df <- data.frame(x, y, y2)
df.m <- melt(df, id.var = "x")
qplot(x, value, data = df.m, colour = variable, geom = "line")
qplot(x, value, data = df.m, geom = "line")+ facet_wrap(~ variable)
Dessinez plusieurs courbes en même temps avec la fonction matplot. Aidez-nous (matplot) pour plus.
En utilisant lattice package:
require(lattice)
x <- seq(-3,3,length.out=101)
xyplot(dnorm(x) + sin(x) + cos(x) ~ x, type = "l")
+1 pour utiliser le réseau –
Il y a eu des solutions déjà pour vous. Si vous restez avec le paquet de base, vous devriez faire connaissance avec les fonctions plot(), lines(), abline(), points(), polygon(), segments(), rect(), box(), arrows(), ...
Jetez un oeil à leurs fichiers d'aide.
Vous devriez voir une parcelle à partir du package de base en tant que volet avec les coordonnées vous lui avez donné. Sur ce volet, vous pouvez dessiner un ensemble d'objets avec les fonctions mentionnées ci-dessus. Ils vous permettent de construire un graphique comme vous le souhaitez. Vous devriez vous rappeler cependant que, sauf si vous jouez avec les paramètres de par, comme le Dr G l'a montré, chaque appel à plot() vous donne un nouveau volet. Veuillez également prendre en compte que les choses peuvent être complot sur d'autres choses, alors pensez à l'ordre que vous utilisez pour tracer les choses.
Voir par exemple:
set.seed(100)
x <- 1:10
y <- x^2
y2 <- x^3
yse <- abs(runif(10,2,4))
plot(x,y, type = "n") # type="n" only plots the pane, no curves or points.
# plots the area between both curves
polygon(c(x,sort(x,decreasing=T)),c(y,sort(y2,decreasing=T)),col="grey")
# plot both curves
lines(x,y,col="purple")
lines(x, y2, col = "red")
# add the points to the first curve
points(x, y, col = "black")
# adds some lines indicating the standard error
segments(x,y,x,y+yse,col="blue")
# adds some flags indicating the standard error
arrows(x,y,x,y-yse,angle=90,length=0.1,col="darkgreen")
Cela vous donne:
ggplot2 est un grand paquet pour ce genre de chose:
install.packages('ggplot2')
require(ggplot2)
x <- 1:10
y1 <- x^2
y2 <- x^3
df <- data.frame(x = x, curve1 = y1, curve2 = y2)
df.m <- melt(df, id.vars = 'x', variable_name = 'curve')
# now df.m is a data frame with columns 'x', 'curve', 'value'
ggplot(df.m, aes(x,value)) + geom_line(aes(colour = curve)) +
geom_point(aes(shape=curve))
Vous obtenez le tracé coloré par courbe, et avec différentes marques piont pour chaque courbe, et une belle légende, tous sans travail sans douleur supplémentaire:
votre code ne fonctionne pas sous sa forme actuelle. Il vous manque un parent après l'appel initial à 'ggplot' et référençons le mauvais objet. Voici une version de travail: ' ggplot (df.m, aes (x, valeur)) + geom_line (aes (couleur = courbe)) + geom_point (aes (forme = courbe)) ' – Chase
Merci Chase, et des excuses pour la négligence. –
Si vous voulez plus d'exemples, vous devriez jeter un oeil à la bibliothèque graphique R (http://addictedtor.free.fr/graphiques/) est une bonne source de l'inspiration comme le code et les résultats sont là. –