查看: 3746|回复: 6

[R语言] 2-14 |“特殊”的日子,多学一种表达爱的方式

[复制链接]

版主

Rank: 10Rank: 10Rank: 10

主题
34
注册时间
2016.3.21
在线时间
133 小时

活跃会员突出贡献


发表于 2020.2.14 15:25:52 | 显示全部楼层 |阅读模式
                                                                                                    全世界所有的语言都有表达爱意的方式,R语言当然也有!特殊的日子,需要一个特殊的数据集!ggwordcloud内置数据集包含全世界147种爱你的语言,用R送给TA一份远程的爱。一 道具 氛围
准备好R的环境,和“爱”的数据集
#install.packages("ggwordcloud")
library(ggwordcloud)
data("love_words")
head(love_words)
# A tibble: 6 x 4
  lang  word  native_speakers speakers
  <chr> <chr>           <dbl>    <dbl>
1 zh    愛             1200      1200
2 en    Love            400       800
3 es    Amor            480       555
4 ar    حب              245       515
5 hi    प्यार            322       442
6 fr    Amour            76.8     351.嗯,我也只能看懂2种,但知道都是表达爱的就可以了!二 初始“印象”

geom_text_wordcloud 看一下世界范围内的不同国家说“爱”的人数#AI的大小由speakers的人数决定
ggplot(love_words, aes(label = word, size = speakers)) +
  geom_text_wordcloud() +
  scale_size_area(max_size = 40)

三 ”钻石“和”心“1 )将爱变成钻石的形状
#钻石形状
love_words <- love_words %>%
  mutate(angle = 90 * sample(c(0, 1), n(), replace = TRUE, prob = c(60, 40)))
ggplot(love_words, aes(label = word, size = speakers)) +
  geom_text_wordcloud_area(shape = "diamond") +
  scale_size_area(max_size = 40)

2 )自定义爱心的形状设置字形的角度
love_words <-love_words %>%
mutate(angle = 45 *sample(-2:2, n(), replace = TRUE, prob = c(1, 1, 4, 1, 1)))ggplot(love_words,aes(label = word, size = speakers,
    color = speakers, angle = angle)) +
  geom_text_wordcloud_area(
    mask = png::readPNG(system.file("extdata/hearth.png",
      package = "ggwordcloud", mustWork = TRUE
    )),
    rm_outside = TRUE
  ) +
  scale_size_area(max_size = 40) +
  scale_color_gradient(low = "darkred", high = "red")


四 ”密码“VS”对话“既然是ggplot2的扩展包,那么就可以做很多事情。
1)“密码”更改label ,变成“密码”#更改label ,变成“密码”set.seed(42)ggplot(love_words_small, aes(label = word, size = speakers,
                             label_content = sprintf("%s<span style='font-size:7.5pt'>(%g)</span>", word, speakers))) +
  geom_text_wordcloud_area() +
  scale_size_area(max_size = 40) +
  theme_minimal()

注:此为官网图,尝试很多没实现官网中label_content的功能,本来想着新增一列,把想说的话随机打乱加在新列中,然后label_content展示这些“密码”。
2)“对话”统计微信或者QQ中的对话词频,标记出谁说的,然后分页展示library(dplyr)
library(tidyr)#随机生成love_words$MW <- sample(c("M","W"),size=147,replace=T)
ggplot(love_words,aes(label = word, size = speakers,
    color = speakers)) +
  geom_text_wordcloud_area(
    mask = png::readPNG(system.file("extdata/hearth.png",
      package = "ggwordcloud", mustWork = TRUE
    )),
    rm_outside = TRUE
  ) +
  scale_size_area(max_size = 40) +
  scale_color_gradient(low = "darkred", high = "red")+
facet_wrap(~MW) + theme_minimal()

参考资料:
https://lepennec.github.io/ggwordcloud/articles/ggwordcloud.html
好了,自由发挥去吧!
◆ ◆ ◆   ◆  ◆精心整理(含图版)|你要的全拿走!有备无患 (R统计,ggplot2绘图,生信图形可视化汇总)【觉得不错,右下角点个“在看”,期待您的转发,谢谢!】


                                

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

钵水母

Rank: 3Rank: 3

主题
0
注册时间
2020.1.5
在线时间
2 小时

发表于 2020.2.15 11:59:48 | 显示全部楼层
怎么这么牛啊
回复 支持 反对

使用道具 举报

中华鲟

Rank: 5Rank: 5

主题
58
注册时间
2017.12.20
在线时间
46 小时

发表于 2020.2.15 14:33:10 | 显示全部楼层
腻害
是范德萨发
回复

使用道具 举报

中华鲟

Rank: 5Rank: 5

主题
0
注册时间
2020.1.16
在线时间
21 小时

发表于 2020.2.17 10:19:58 | 显示全部楼层
厉害
回复

使用道具 举报

钵水母

Rank: 3Rank: 3

主题
0
注册时间
2019.3.14
在线时间
27 小时

发表于 2020.2.17 11:53:13 | 显示全部楼层
哇好看
回复

使用道具 举报

中华鲟

Rank: 5Rank: 5

主题
11
注册时间
2020.3.29
在线时间
26 小时

灌水之王


发表于 2020.5.6 10:12:46 | 显示全部楼层
厉害,厉害,厉害
回复 支持 反对

使用道具 举报

中华鲟

Rank: 5Rank: 5

主题
0
注册时间
2017.6.6
在线时间
67 小时

灌水之王


发表于 2020.5.8 17:12:05 | 显示全部楼层
新的一天加油!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表