用R语言写一颗圣诞树

方法一

install.packages('ggplot2')
library(ggplot2)

# generowanie losowych punktów
x1 <- runif(100000, -1, 1)
y1 <- runif(100000, -1, 1.6)
# równanie na serce
which1 <- x1^2+(y1-(x1^2)^(1/4))^2<=1
x1 <- x1[which1]
y1 <- y1[which1]
# drugi poziom
x2 <- 1.5*x1 -1
y2 <- 1.5*y1
# trzeci poziom
x3 <- 2*x1 -2
y3 <- 2*y1
dt <- data.frame(c(x1,x2,x3),c(y1,y2,y3))
colnames(dt) <- c("x", "y")
dt$y <- dt$y - 0.25
dt <- dt[dt$x>-2 & dt$x<1 & dt$y>-2.25 & dt$y<0,]
dt <- data.frame(c(dt$x,dt$x), c(dt$y, -dt$y))
colnames(dt) <- c("x", "y")
#pieniek
p1 <- runif(1000, -0.5, 0.5)
p2 <- runif(1000, -2.5, -2)
pieniek <- data.frame(p1,p2)
colors <- c('green', 'green2', 'green4', 'darkgreen')
colors2 <- rep(colors,length.out=dim(dt)[1])
bombki <- data.frame(c(-1.8, -1.7, -1.1, -0.6, 0, 0.3), c(-1,0.7,-0.9,0.1,-0.3,0.3))
colnames(bombki) <- c("x", "y")
lancuch <- data.frame(data.frame(x1 = -0.5, x2 = 1, y1 = 21.0, y2 = 15.0))
gwiazda <- data.frame(c(0), c(0.7))
colnames(gwiazda)<- c("x", "y")
ggplot(data=NULL) + geom_point(data=dt, aes(x = y, y=x), col=colors2) +
  geom_point(data=bombki, aes(x=y, y=x), size=10, col='blue') +
  geom_point (data=pieniek, aes(x=p1, y=p2), col='brown') +
  geom_point(data=gwiazda, aes(x=x, y=y),size=10,shape=24, col="yellow", fill='yellow') +
  geom_point(data=gwiazda, aes(x=x ,y=y),size=10,shape=25, col="yellow", fill='yellow') +
  geom_curve(aes(x=-1,xend=1.2,y=-0.65,yend=-1.2), col='red',size=2, curvature = 0.3) +
  geom_curve(aes(x=1.2, y=-1.2, xend=-1.2, yend=-1.5), size=2, col="red", curvature = -0.3) +
  geom_curve(aes(x=-1,xend=0.8,y=-0.65,yend=-0.5), col='red',size=2, curvature = 0.3) +
  geom_curve(aes(x=-0.8,xend=0.8,y=-0.2,yend=-0.5), col='red',size=2, curvature = 0.2) +
  geom_curve(aes(x=-0.8,xend=0.9,y=-0.2,yend=0.15), col='red',size=2, curvature = 0.3) +
  geom_curve(aes(x=-0.65,xend=0.9,y=0.35,yend=0.15), col='red',size=2, curvature = 0.3) +
  theme(axis.line=element_blank(),axis.text.x=element_blank(),
        axis.text.y=element_blank(),axis.ticks=element_blank(),
        axis.title.x=element_blank(),
        axis.title.y=element_blank(),legend.position="none",
        panel.background=element_blank(),panel.border=element_blank(),panel.grid.major=element_blank(),
        panel.grid.minor=element_blank(),plot.background=element_blank())


最后得到的图是这个样子的:
在这里插入图片描述

方法二

L <- matrix(c(0.03,0,0,0.1,0.85,0.00,0.00,0.85,0.8,0.00,0.00,0.8,0.2,-0.08,0.15, 0.22, -0.2,0.08,0.15, 0.22,0.25, -0.1,0.12, 0.25,-0.2,0.1,0.12,0.2),nrow=4)
B <- matrix(c(0,0,0,1.5,0,1.5,0,0.85,0,0.85,0,0.3,0, 0.4),nrow=2)
prob = c(0.02, 0.6,.08, 0.07, 0.07, 0.07, 0.07)
N = 1e5
x = matrix(NA,nrow=2,ncol=N)
x[,1] = c(0,2)
k <- sample(1:7,N,prob,replace=TRUE)
for(i in 2:N){x[,i] = crossprod(matrix(L[,k[i]],nrow=2),x[,i-1]) + B[,k[i]]}
par(bg='black',mar=rep(0,4))
plot(x=x[1,],y=x[2,],col=grep('green',colors(),value=TRUE),axes=FALSE,cex=.1, xlab='', ylab='',pch='.')
bals <- sample(N,20)
points(x=x[1,bals],y=x[2,bals]-.1,col=c('red','blue','yellow','orange'),cex=1.5,pch=19)
text(x=-.7,y=8, labels='Merry', adj=c(.5,.5), srt=45,vfont=c('script','plain'),cex=3,col='gold')
text(x=0.7,y=8,labels='Christmas',adj=c(.5,.5),srt=-45, vfont=c('script','plain'),cex=3, col='gold')
text(x=-0.6,y=0,cex=0.8,labels="",col="white") #label参数可以写一点自己想写的内容, hhhh......

最后得到的图片是这个样子的:
在这里插入图片描述

  • 13
    点赞
  • 54
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
### 回答1: 你可以使用Python的Turtle模块来绘制一棵圣诞树,例如: from turtle import * # 设置画笔颜色 color('green') # 设置画笔宽度 width(5) # 绘制圣诞树 forward(200) right(90) forward(300) right(135) forward(150) right(90) forward(150) right(135) forward(200) # 绘制圣诞树的叶子 right(90) forward(50) circle(50) left(120) forward(50) circle(50) left(120) forward(50) circle(50) # 绘制圣诞树的圣诞老人帽 penup() right(90) forward(50) right(90) forward(150) pendown() right(90) forward(50) # 绘制圣诞树的圣诞老人帽把手 penup() forward(25) pendown() forward(25) penup() forward(25) right(90) forward(25) pendown() forward(25) ### 回答2: 用Python编一棵圣诞树可以通过打印一系列字符来模拟树的形状。以下是一个示例代码: ```python def draw_christmas_tree(height): for i in range(1, height + 1): print(' ' * (height - i) + '*' * (2 * i - 1)) print(' ' * (height - 1) + '*') print(' ' * (height - 1) + '*') print(' ' * (height - 2) + '***') # 调用函数,传入树的高度 height = 5 draw_christmas_tree(height) ``` 在这个示例代码中,使用了一个`for`循环来打印树的每一行。每一行由两部分组成:空格部分和星号部分。首先打印一定数量的空格,然后打印一定数量的星号。`height`参数用于表示树的高度,可以根据需要自行更改。最后,额外打印几个星号来表示树干部分。 运行以上代码,将会输出如下的圣诞树形状: ``` * *** ***** ******* ********* * * *** ``` ### 回答3: 以下是使用Python编一棵圣诞树的代码: ```python def draw_christmas_tree(height): for i in range(height+1): print(" "*(height-i) + "*"*(2*i-1)) print(" "*(height-1) + "|") height = int(input("请输入圣诞树的高度:")) draw_christmas_tree(height) ``` 运行以上代码后,你将被要求输入圣诞树的高度。根据输入的高度,代码将输出相应高度的圣诞树。例如,如果输入 5,代码将输出如下: ``` * *** ***** ******* ********* | ``` 希望这能满足你的需求,祝你圣诞快乐!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值