Ceci est un exemple de traçage d'une "équation paramétrique", c'est-à-dire un couplage de deux équations distinctes pour x et y qui partagent un paramètre commun. Vous pouvez trouver de nombreuses courbes et formes courantes qui peuvent être écrites dans un tel cadre.
dat <- data.frame(t = seq(0, 2*pi, by = 0.1))
xhrt <- function(t) 16*sin(t)^3
yhrt <- function(t) 13*cos(t)-5*cos(2*t)-2*cos(3*t)-cos(4*t)
dat$y = yhrt(dat$t)
dat$x = xhrt(dat$t)
with(dat, plot(x, y, type = "l"))
Autres équations paramétriques (et implicites et polaires) de cœur
Vous pouvez également "chauffer" les choses en utilisant la fonction "remplissage" de la fonction polygon
:
with(dat, polygon(x, y, col = "hotpink"))
Et si vous voulez juste de petits cœurs à saupoudrer à divers endroits, vous pouvez utiliser la version de police Symbol du "cœur" après avoir consulté la page d'aide de points
et utilisé la fonction TestChars
:
points(c(10, -10, -15, 15), c(-10, -10, 10, 10), pch = 169, font = 5)
Les utilisateurs de Windows peuvent essayer d'ajouter le package Cairo pour accéder aux symboles de cartes, y compris les "cœurs".( Lorsque j'ai testé la fonction TestChars sur le côté WinXP de mon MacPro je n'ai pas obtenu de cœurs, et le défilement des "symboles spéciaux" dans MS-Word n'a rien révélé. J'ai donc fait une recherche sur Rhelp et trouvé un message récent de Ivo Welch. Il signalait un bug, mais ils semblent corrects sur ma machine.) Note supplémentaire... je pense que les codes des cœurs et des carreaux dans son message étaient inversés.
library(Cairo)
clubs <- expression(symbol('\247'))
hearts <- expression(symbol('\251'))
diamonds <- expression(symbol('\250'))
spades <- expression(symbol('\252'))
csymbols <- c(clubs, hearts, diamonds, spades)
plot(0, xlim = c(0, 5), ylim = c(0, 2), type = "n")
clr <- c("black", "red", "red", "black")
for (i in 1:4) {
hline <- function(yloc, ...)
for (i in 1:length(yloc))
lines(c(-1, 6), c(yloc[i], yloc[i]), col = "gray")
hline(0.9);
hline(1.0);
hline(1.1);
hline(1.2)
text(i, 1, csymbols[i], col = clr[i], cex = 5)
text(i, 0.5, csymbols[i], col = clr[i])
}
# Essayez aussi ceci
plot(1, 1)
text(x = 1 + 0.2 * cos(seq(0, 2*pi, by = .5)),
y = 1 + 0.2 * sin(seq(0, 2*pi, by = .5)),
expression(symbol('\251')))
32 votes
La Saint-Valentin est encore à 3 mois, Cupidon a dû te frapper vraiment fort.
6 votes
Pas sûr de l'implémentation en
r
, mais vous serez probablement intéressé par l'équation polaire de la cardioïde, et / ou d'autres routes.0 votes
J'ai utilisé la dernière équation sur la page Wolfram dans le lien ci-dessus comme source de l'équation paramétrique et ai simplement calculé sur 0 -> 2pi.
4 votes
Pour une version ombragée, consultez ceci : stackoverflow.com/q/6542825/269476
0 votes
Il ne s'agit pas vraiment d'un doublon exact, n'est-ce pas? il y a juste quelques réponses qui se chevauchent ...
0 votes
Je vote pour la fermeture, mais il devrait rester non supprimé pour ses excellentes réponses et un titre plus facilement trouvable sur Google.