tracer des fonctions remplie point de symboles et de légendes

Je veux tracer les deux fonctions dans différentes couleurs et de styles avec une légende, dans la plaine R.

J'ai plusieurs questions:

  1. Je suis en utilisant pch=21 et pch=22. Ma compréhension, c'est qu'ils sont "remplis" de symboles. Ils ne semblent pleins comme prévu dans la légende, mais ils semblent creux sur le graphique lui-même. Quel est le problème?

  2. Puis-je obtenir plus d'espace entre les points, sans spécification d'une grille manuellement? peut-être en sélectionnant le nombre de points pour être imprimé?

  3. N'hésitez pas à ajouter tout type de conseils que vous souhaitez. Je suis très nouveau à R. En particulier, est-il une meilleure façon de tracer les deux fonctions? par exemple, en définissant des vecteurs de fonctions? et ne serait-il pas y avoir un moyen pour la légende pour être automatiquement généré sans avoir à spécifier les couleurs et les formes, dans la plaine de R?

Voici mon code:

par(new=TRUE)
p1 <- plot(function(x){ x^(2)/2 }
       , 0, 100
       , xlab = "x"
       , ylab = "y"
       , ylim = c(0,5000)
       , las = 1
       , type = "p"
       , cex = 0.8
       , pch = 21
       , col = "red"
)
par(new=TRUE)
p2 <- plot(function(x){ (1-x^(2))/2 }
       , 0, 100
       , xlab = ""
       , ylab = ""
       , axes = FALSE
       , type = "p"
       , cex = 0.8
       , pch = 22
       , col = "blue"
)
par(new=TRUE)
l <- legend( "topleft"
         , inset = c(0,0.4) 
         , cex = 1.5
         , bty = "n"
         , legend = c("A", "B")
         , text.col = c("red", "blue")
         , pt.bg = c("red","blue")
         , pch = c(21,22)
)

Après diverses explorations, j'ai opté pour l'utilisation de la par(new=TRUE) "truc" pour superposer les deux fonctions (plutôt que, par exemple, à l'aide de matplot ou une combinaison de l'intrigue et de points ou de mise en page). Était-ce un mauvais coup pour commencer? (Edit: oui, très mal, voir ci-dessous) +1 si vous ne me demandez pas de lire le manuel 😉

tracer des fonctions remplie point de symboles et de légendes

Edit: Résumé des Solutions

Grâce à joran et Didzis Elferts, j'ai obtenu une solution à plusieurs de mes problèmes. Pour l'enregistrement, j'aimerais résumer ici:

  1. Pour obtenir rempli de symboles sur le graphique, vous devez spécifier à la fois le col (couleur) et bg (background). Cela est vrai même pour pch=21 et pch=22, qui ne sont pas automatiquement rempli par la couleur spécifiée. Pour obtenir rempli de symboles dans la légende, vous devez spécifier à la fois le col et le pt.bg. Ici, bg seul n'est pas assez bon.

  2. c'est une très mauvaise idée d'utiliser par(new=TRUE) avec axes=FALSE, comme je l'avais fait d'abord, parce que, la superposition de parcelles ne sont pas nécessairement utiliser le même système de coordonnées. La fonction prévue pour le deuxième tracé a été (100^2-x^2)/2 mais par hasard, j'ai écrit (1-x^2)/2 et ne s'en rendent pas compte parce que j'avais mis axes=FALSE.

Tous dans tous, voici ma solution préférée:

curve( x^2/2
  , from = 0
  , to = 100
  , n = 30
  , type = "p"
  , pch = 21 # alternatively pch=15 is a solid symbol
  , col = "red" # colors the outline of hollow symbol pch=21
  , bg = "red" # fills hollow symbol pch=21 with color
  , xlab = "x"
  , ylab = "y"
)
curve( (100^2-x^2)/2
  , from = 0
  , to = 100
  , n = 30
  , type = "p"
  , pch = 22  # alternative pch=16
  , col = "blue"
  , bg = "blue"
  , add = TRUE
)
legend( "topleft"
  , inset = c(0,0.4), 
  , cex = 1.5, 
  , bty = "n", 
  , legend = c("A", "B"), 
  , text.col = c("red", "blue"),
  , col = c("red", "blue"), 
  , pt.bg = c("red","blue")
  , pch = c(21,22)
)

Cela donne un terrain comme celui montré par joran. Merci beaucoup à vous deux pour votre aide.

  • Vous dit de manière explicite la légende de remplir les symboles de point par la mise en pt.bg.
  • Grâce joran, je ne savais pas que. Si j'utilise le col au lieu de pt.bg, les symboles sont creux dans la légende comme ils le sont dans l'intrigue.
  • Oui, voir ma réponse, qui aborde la plupart des questions que vous soulevez.
  • Bon résumé! Notez que le but principal de pch 21 et 22 est la possibilité de définir des couleurs différentes pour le contour et le remplissage de chaque point. Lorsque vous voulez un point particulier, n'avoir qu'une couleur, c'est plus facile à utiliser pch 15 et 16. Lors de l'utilisation de 15 et 16 ans, vous n'avez pas à vous soucier de bg et pt.bg à tous.
  • Grâce shujaa. J'avais mal compris ce. Je comprends maintenant que j'étais à la recherche d'un SOLIDE symbole plutôt qu'un symbole. Rempli de symboles ne sont pas automatiquement rempli avec le symbole de la couleur. Donc oui, les pouces pour pch=15,16. Joran a laissé entendre que, dans sa réponse, mais je n'avais pas compris la première fois.
InformationsquelleAutor PatrickT | 2013-04-04