画出一头优秀的牛

Syn*_*rnu 26 r ggplot2

我作为统计学家在一个大农场工作,我的主人让我画一些东西来提醒他他的童年.我这样做并不容易,因为有一个很大的限制:只用R做一切.这就是我做到的.你能这么善良,帮助我画出更好的牛吗?

library(ggplot2)

sim=function(xy){
  xx=xy[,"x"]*(-1)
  yy=xy[,"y"]
  gg=xy[,"gr"]
  xy=rbind(xy,cbind(xx,yy,gg))
  return(as.data.frame(xy))
}

circleFun <- function(center = c(0,0),diameter = 1, npoints = 100){
  r = diameter / 2
  tt <- seq(0,2*pi,length.out = npoints)
  xx <- center[1] + r * cos(tt)
  yy <- center[2] + r * sin(tt)
  return(data.frame(x = xx, y = yy))
}

n=100 

akys <- circleFun(c(1,5),1.5,npoints = n)
akys=as.matrix(cbind(akys,gr=4))
akys=sim(akys)

akys21 <- circleFun(c(1,4.5),0.5,npoints = n)
akys21=as.matrix(cbind(akys21,gr=5))

akys22 <- circleFun(c(-1,5.3),0.7,npoints = n)
akys22=as.matrix(cbind(akys22,gr=5))

nosis=circleFun(c(0.6,1),0.6,npoints = n)
nosis=as.matrix(cbind(nosis,gr=6))
nosis=sim(nosis)

x=c(0,1,3,3,2,0,0,1,1,0,3,5,2)
y=c(0,0,4,6,7,7,0,0,2,2,6,10,7)
gr=c(2,2,2,2,2,2,3,3,3,3,1,1,1)
xy=cbind(x=x,y=y,gr=gr)

data=sim(xy)
data=rbind(data,akys,akys21,akys22,nosis)

ggplot()+geom_polygon(data=data,mapping=aes(x=x,y=y,fill=factor(gr),group=gr), linetype=0, colour="black")+theme_bw()+
  scale_fill_manual(values=c("cornsilk2","chocolate4","lightpink","white","black","maroon4"))+
  theme(axis.line=element_blank(),axis.ticks=element_blank(),axis.text=element_blank(),legend.position="none",panel.grid=element_blank(),panel.border=element_blank())+xlab("")+ylab("")+
  ggtitle("Crazy Cow Wishing You Happy Easter!!!")
Run Code Online (Sandbox Code Playgroud)

看这里

Dre*_*way 23

如果您使用的是Linux并已cowsay安装解决方案,则相当简单:

> system("cowsay I quit")
 ________
< I quit >
 --------
    \   ^__^
     \  (oo)\_______
        (__)\       )\/\
            ||----w |
            ||     ||
Run Code Online (Sandbox Code Playgroud)

  • 他想要一只'R`品种的牛,而不是'Perl` -_- (11认同)
  • 我相信雄性牛是公牛.我也相信这太棒了 (7认同)
  • 它不是男性 (4认同)
  • @Arun抱歉,但我不同意你的不同.例如,S旨在轻松引入现有的fortran代码.如果解决方案是安排调用一些花哨的wizz-bang javascript dataviz代码来进行绘图,那么没有人会抱怨,这将有超过18的投票.而Drew**确实**使用R代码...... (2认同)