楼主: sssyunsheng
2598 3

[程序分享] R 绘制词云和虚假相关 [推广有奖]

  • 2关注
  • 47粉丝

已卖:107份资源

博士生

52%

还不是VIP/贵宾

-

威望
0
论坛币
3 个
通用积分
4.4708
学术水平
47 点
热心指数
49 点
信用等级
43 点
经验
5127 点
帖子
201
精华
0
在线时间
306 小时
注册时间
2012-2-21
最后登录
2025-9-22

楼主
sssyunsheng 在职认证  发表于 2015-7-9 15:07:00 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

今天我们分析一下美国总统的国情咨文,分析一下总统获得的掌声次数和支持率的关系,及国情咨文的词云简单实现。


#载入包和设置环境目录


  1. library(ggplot2)
  2. library(tm)
  3. library(grid)
  4. library(dplyr)
  5. library(wordcloud)
  6. setwd("H:/自媒体/2015-07-07/掌声不代表支持/SOTU")
复制代码



#整理数据


  1. corpus <- Corpus(DirSource("H:/自媒体/2015-07-07/掌声不代表支持/SOTU"))#批量读入文本
  2. txt <- tm_map(corpus,stripWhitespace)#去除空格
  3. txt <- tm_map(txt,removePunctuation)#去除其他符号
  4. stopwordS<- c(stopwords('english'),"and","that","the")#去除停用词
  5. txt<- tm_map(txt,removeWords,stopwordS)
复制代码



#生成词频矩阵


  1. tdm<- TermDocumentMatrix(txt,control=list(wordLength=c(1,Inf)))
  2. m <- as.matrix(tdm)
  3. sotu<- data.frame(m)
  4. sotu$sum<- rowSums(sotu)
  5. sotu<- sotu[order(-sotu$sum),]
  6. colnames(sotu) <- c("SOTU2009","SOTU2010","SOTU2011","SOTU2012","SOTU2013","SOTU2014","SOTU2015","sum")
  7. sotu<- data.frame(t(sotu[1,1:7]))#转置
  8. sotu$year<- 2009:2015
  9. sotu$approval<-   c(64,48,50,45,51,42,46)
复制代码



#绘制词云


  1. colors<- brewer.pal(8,"Dark2")
  2. tt<- data.frame(m)
  3. remove<- c("applause","and","thats","will")
  4. tt<- tt[!rownames(tt)%in%remove,]
  5. par(bg = rgb(red = 242, green = 242, blue = 242, max = 255))
  6. wordcloud(rownames(tt),tt[,"SOTU2015.txt"],scale = c(5,0.3),min.freq = -Inf, max.words = 100, colors=colors, random.order = F, random.color=T, rot.per = 0.5, font = 2, family = "serif")
复制代码


生成词云时,如果你使用Rstudio那么请将窗口跳到最大,否则会显示不完全


approval.png

生成词云时,如果你使用Rstudio那么请将窗口跳到最大,否则会显示不完全

#解除tm包

  1. detach("package:tm", unload=TRUE)
  2. library(ggplot2)
复制代码


这里为什么多了一步,因为tm包和ggplot2包都有一个函数annotate,如果不解除tm,ggplot2的annotate会被tm里的取代,引起下面做图错误。



#绘制折线图


  1. theme_opts<- theme(panel.background=element_rect(fill=rgb(red = 242, green = 242, blue = 242, max = 255)),
  2. plot.background=element_rect(fill=rgb(red = 242, green = 242, blue = 242, max = 255)),
  3. panel.grid.major=element_line(colour=rgb(red = 146, green = 146, blue = 146, max = 255),size=.75),
  4. panel.border=element_rect(colour=rgb(red = 242, green = 242, blue = 242, max = 255)),
  5. axis.ticks=element_blank(),
  6. axis.text.x = element_text(colour="grey20", size=12),
  7. axis.text.y = element_text(colour="grey20",size=12),
  8. axis.text.y = element_text(size=13,colour=rgb(red = 74, green = 69, blue = 42, max = 255),face="bold"),
  9. axis.title.y=element_text(size=11,colour=rgb(red = 74, green = 69, blue = 42, max = 255),face="bold",vjust=1.5),
  10. axis.title.x=element_text(size=11,colour=rgb(red = 74, green = 69, blue = 42, max = 255),face="bold",vjust=-.5),
  11. legend.position="none")
  12. p <- ggplot(sotu,aes(x = year)) +
  13. geom_line(aes(y=applause,colour="#00bdc4"),size=1.6) +
  14. geom_line(aes(y=approval,colour="#FD6467"),size=1.6) +
  15.   annotate("text",x=2010,y=100,colour="#FD6467",label="掌声",size=7,fontface="bold")+
  16.   annotate("text",x=2010,y=40,colour="#00bdc4",label="支持率",size=7,fontface="bold")+
  17. theme_bw() +
  18.   scale_x_continuous(minor_breaks=0,breaks=c(2009,2010,2011,2012,2013,2014,2015)) + #这里空着这竖行次网格线minor_breaks
  19. ggtitle("") +
  20. ylab("") +
  21. xlab("") +
  22. geom_hline(yintercept=0,size=1.2,colour=rgb(red = 74, green = 69, blue = 42, max = 255)) + #这个能成为做图风格的标志
  23. theme_opts
  24. ggsave(file="掌声和支持率.png", width=10, height=8,scale=0.8)
复制代码


applause.png

相关数据和代码:http://pan.baidu.com/s/1hqxVg7y   密码:微信索取

关于我们,关注理性与文艺,用数据创作内容性的精致阅读,这里是数据分析挖掘人员与文艺青年的集结地,不做培训,不做鼓吹,只踏踏实实的做一个又一个数据驱动的文章,并设计机器人减轻数据分析的负担,无论你感兴趣还是想参与都可以关注,请加微信公众号大音如霜

qrcode_for_gh_89f96c48034b_430.jpg


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:虚假相关 Library ggplot2 BRARY cloud 词云 ggplot 虚假相关

沙发
sssyunsheng 在职认证  发表于 2015-7-9 15:11:23
找到为什么我的代码发上来会乱码了,因为在word里面格式的问题

藤椅
hlw 在职认证  发表于 2015-7-10 17:51:58

板凳
sssyunsheng 在职认证  发表于 2015-9-5 23:00:43
hlw 发表于 2015-7-10 17:51
正在写中文文本挖掘的内容

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-4 04:01