
使用R语言绘制圣诞树
简介
通过R语言的ggplot2包及ggThemeAssist包根据预先导入的数据绘制圣诞树
画图步骤
Step 1:绘制一颗基础的树
这里选择一棵圣诞树的图片,对其进行网格划分,并将结果存在表格中。
数据集和源码均可在GitHub仓库中获取:https://github.com/NJU-WH/Use-R-To-Draw-A-ChristmasTree-
1 | #将数据导入项目中,路径根据自己保存的位置进行调整 |
参数解释
geom_tile() :该函数将每个数据点都绘制成一个实心的正方形。
theme_bw():该函数将背景颜色更改为白色。
scale_x_continuous(breaks = NULL):该函数将x轴标记和网格线去掉。
scale_y_continuxous(breaks = NULL):该函数将y轴标记和网格线去掉。
labs(x = “”, y = “”):该函数将坐标轴删去。
运行后效果如下:

Step 2:添加灯饰
现在就来往圣诞树上挂“灯饰”,这一过程通过在之前绘制好的基础树图上叠加散点实现。这些散点的坐标是基于均匀分布随机产生的。
示例代码中给灯设置的数量是 50 ,底部分布的数量为 35% ,顶部为 5% ,参数值可以根据个人想法修改。
最后一个变量的值从1到4,用以控制每个点的透明度。
1 | ##创建灯饰 |
运行后效果如下:

Step 3:添加装饰物
在第二步的图上添加了另一种散点(这一次是加权散点)。手动绘制了每个点的坐标,并手动分配每个点的颜色和大小。也可以任意修改这些位置和大小。
1 | ##创建装饰物 |
运行后效果如下:

Step 4:装饰礼物
树下的礼物看起来太单调了,可以用缎带来装饰一下,使用 geom_segment() 函数来实现这一点。
1 | tree <- tree + |
可以看到,对于水平色带,设置了一个 x坐标范围,但为了得到一条直线,设置了两个y坐标的相同值,而对于垂直线,则设置了相反的值。还可以使用颜色和大小参数分别改变彩带的颜色和厚度。
运行效果如下:

Step 5:添加祝福语
为了使图片美观,我们使用extrafont包导入一些额外的字体。
1 | #载入extrafont程揖包 |
使用带有 “text”参数的注释选项来插入“Merry Christmas!”字样 。
位置选在坐标(11,20)处。字体选择的是大小为 12 的 Luminari,如要修改字体,可以通过 family 和size 参数来设置。
**ggThemeAssistGadget(图名)**用来交互式的设置图片细节,通过窗口选择想要的属性后点击Done则会自动生成代码插入。

最终效果如下:

参考资料
[1] https://t-redactyl.io/blog/2016/12/a-very-ggplot2-christmas.html




