这个问题已经在这里有了答案:




9年前关闭。






像绘制圆形(使用plotrix)或矩形一样,如何在R中绘制对称心?

我想要为此编写代码,以便我可以实际为自己做,并能够将其推广到类似的 future 需求。我看过比这更复杂的情节,所以这是很可行的,只是我缺乏这样做的知识。

最佳答案

这是绘制“参数方程式”的示例,即,两个共享公共(public)参数的x和y的两个独立方程式的配对。您可以找到许多可以在这种框架内编写的常见曲线和形状。

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"))

Other Parametric (and implicit and polar) Heart Eqns

您还可以使用polygon函数的“填充”功能来“加热”它:
with(dat, polygon(x,y, col="hotpink"))

而且,如果您只是想让小小的心脏散布在各个地方,则可以在查看help(points)页面并使用TestChars函数之后,使用“心脏”的符号字体版本:
points(c(10,-10, -15, 15), c(-10, -10, 10, 10), pch=169, font=5)

Windows用户可能想查看是否添加Cairo软件包是否有助于访问包括“心”在内的卡符号。(当我在MacPro的WinXP“一侧”测试TestChars函数时,我没有得到心,而是通过“特殊”页面进行分页MS-Word中的“符号”没有发现任何内容。因此,我对Rhelp进行了搜索,发现了Ivo Welch的最新帖子。他正在报告错误,但在我的计算机上看起来不错。)他的心和钻石代码被颠倒了。
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] ) }

# Also try this
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') ) )

关于r - 在R上画一颗心,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8082429/

10-12 23:34