这个微信聊天记录词云分析。可以看出什么?从记录中分析一下。分析他们各自是怎样的人?

干货:QQ聊天记录数据分析a year ago结构化的数据格式如下:三、绘图绘图主题一:群中哪些天最热闹统计每月每天总的聊天次数library(sqldf)
my.data1 &- sqldf('select month,day,count(*) Freq from data
group by month,day')
首先来一张热图,图中反映了哪月哪些天群里最热闹library(ggplot2)
p1 &- ggplot(data = my.data1, mapping = aes(x = factor(day), y = factor(month), fill = Freq))
p1 &- p1 + geom_tile() + scale_fill_gradient(low = 'steelblue', high = 'darkred')
绘图主题二:群中哪些人最活跃#每个用户的说话频次
df &- as.data.frame(table(data$Name)
#这里挑出发言量前10的群员
top10 &- df[order(df$Freq, decreasing = TRUE),][1:10,]
#绘制没有排序的条形图
p2 &- ggplot(data = top10, mapping = aes(x = Name, weight = Freq, fill = Name)) + xlab(NULL) + ylab(NULL)
p2 &- p2 + geom_bar() + coord_flip() #+ scale_fill_manual(values = rainbow(10), guide = FALSE)
#绘制排序的条形图p3 &- ggplot(data = top10)+ xlab(NULL) + ylab(NULL)
p3 &- p3 + geom_bar(aes(x = reorder(Name, Freq), y = Freq, fill = Name), stat="identity") + coord_flip()
绘图主题三:这群活跃的人都喜欢什么时候发言#读取10人的发言汇总信息
my.data3 &- sqldf('select Name,hour,count(*) Freq from data where Name in (select Name from top10) group by Name,hour')
Encoding(my.data3$Name) &- 'UTF-8'
#绘制面积图
p4 &- ggplot(data = my.data3, mapping = aes(x = hour, y = Freq, fill = Name))
p4 &- p4 + geom_area() + facet_wrap(~Name) + scale_fill_manual(values = rainbow(10), guide = FALSE)
绘图主题四:这段时间内,大家都聊了什么?#分词
library(Rwordseg)
library(tmcn)
library(tm)
#读入自定义的停止词
my.stopwords &- readLines('stopwords.txt', encoding = 'UTF-8')
#添加自定义词汇
insertWords(c('顺丰','外卖','快递','娜娜','丽娜','9楼','10楼','小李','帐号','it','IT','客服','楼下','门禁'))
#根据分词结果再一次添加自定义停止词
my.stopwords &- c(my.stopwords, '下','人','图片','表情','号','好','请','录','机','群')
segwd1 &- unlist(segmentCN(strwords = data$text))
Encoding(segwd1) &- 'UTF-8'
#剔除停止词
segwd2 &- segwd1[which((segwd1 %in% my.stopwords) == FALSE)]
#分词后的词语频率汇总
wdfreq &- as.data.frame(table(segwd2))
#排列语频顺序
wdfreq &- arrange(df = wdfreq, Freq, decreasing = TRUE)
#取出前50的词频
wdfreq &- wdfreq[1:50,]
前50的词频格式如下图所示(图中记录了每个词语的出现频次):#绘制文字云library(wordcloud)
par(bg = 'black')
wordcloud(words = wdfreq$segwd2, freq = wdfreq$Freq, random.color=TRUE, colors=rainbow(10))
参考资料R语言与网站分析总结:文中涉及到的R包和函数stats包regexpr()substring()rbind()transform()table()%in%sqldf包sqldf()plyr包arrange()ggplot2包ggplot()geom_tile()scale_fill_gradient()geom_bar()geom_area()facet_wrap()scale_fill_manual()Rwordseg包tm包insertWords()segmentCN()wordcloud包wordcloud()----------------------------------------------作者:刘顺祥出处:公众号:每天进步一点点2015大家也可以加小编微信:tswenqu,进R语言中文社区 交流群,可以跟各位老师互相交流63收藏分享举报文章被以下专栏收录R语言专业学习平台、视频、资讯、核心资源资源库、{&debug&:false,&apiRoot&:&&,&paySDK&:&https:\u002F\u002Fpay.zhihu.com\u002Fapi\u002Fjs&,&wechatConfigAPI&:&\u002Fapi\u002Fwechat\u002Fjssdkconfig&,&name&:&production&,&instance&:&column&,&tokens&:{&X-XSRF-TOKEN&:null,&X-UDID&:null,&Authorization&:&oauth c3cef7c66aa9e6a1e3160e20&}}{&database&:{&Post&:{&&:{&isPending&:false,&contributes&:[{&sourceColumn&:{&lastUpdated&:,&description&:&国内最大的R语言专业学习平台| R官方学习实践社区,提供R核心网站学习、视频直播 、R核心学习资源库、R全球会议资讯等内容!&,&permission&:&COLUMN_PUBLIC&,&memberId&:8781987,&contributePermission&:&COLUMN_PUBLIC&,&translatedCommentPermission&:&all&,&canManage&:true,&intro&:&R语言专业学习平台、视频、资讯、核心资源资源库、&,&urlToken&:&rshequ&,&id&:25975,&imagePath&:&v2-c27619baa137e5cc4a17f000cea10dc1.jpg&,&slug&:&rshequ&,&applyReason&:&0&,&name&:&R语言中文社区&,&title&:&R语言中文社区&,&url&:&https:\u002F\u002Fzhuanlan.zhihu.com\u002Frshequ&,&commentPermission&:&COLUMN_ALL_CAN_COMMENT&,&canPost&:true,&created&:,&state&:&COLUMN_NORMAL&,&followers&:9009,&avatar&:{&id&:&v2-c27619baa137e5cc4a17f000cea10dc1&,&template&:&https:\u002F\u002Fpic1.zhimg.com\u002F{id}_{size}.jpg&},&activateAuthorRequested&:false,&following&:false,&imageUrl&:&https:\u002F\u002Fpic1.zhimg.com\u002Fv2-c27619baa137e5cc4a17f000cea10dc1_l.jpg&,&articlesCount&:161},&state&:&accepted&,&targetPost&:{&titleImage&:&https:\u002F\u002Fpic4.zhimg.com\u002Fv2-dd9c7efef3d80f7912bd0_r.jpg&,&lastUpdated&:,&imagePath&:&v2-dd9c7efef3d80f7912bd0.jpg&,&permission&:&ARTICLE_PUBLIC&,&topics&:[,63708],&summary&:&如果您对某个QQ聊天群感兴趣,并想了解某段时间内大家都聊了什么话题?或者是群里哪些人最活跃?或者这些群员都在哪些时间段比较活跃?本文将教你用R实现这些问题的回答。 \u003Cstrong\u003E一、下载QQ群聊天记录\u003C\u002Fstrong\u003E如果您还不知道如何下载某个QQ群的聊天记录,您可以参考下文链…&,&copyPermission&:&ARTICLE_COPYABLE&,&translatedCommentPermission&:&all&,&likes&:0,&origAuthorId&:0,&publishedTime&:&T10:43:07+08:00&,&sourceUrl&:&&,&urlToken&:,&id&:2255047,&withContent&:false,&slug&:,&bigTitleImage&:false,&title&:&干货:QQ聊天记录数据分析&,&url&:&\u002Fp\u002F&,&commentPermission&:&ARTICLE_ALL_CAN_COMMENT&,&snapshotUrl&:&&,&created&:,&comments&:0,&columnId&:25975,&content&:&&,&parentId&:0,&state&:&ARTICLE_PUBLISHED&,&imageUrl&:&https:\u002F\u002Fpic4.zhimg.com\u002Fv2-dd9c7efef3d80f7912bd0_r.jpg&,&author&:{&bio&:&&,&isFollowing&:false,&hash&:&40526e74fffbc0be71bc415f&,&uid&:48,&isOrg&:false,&slug&:&liangyong1107&,&isFollowed&:false,&description&:&&,&name&:&李晓文&,&profileUrl&:&https:\u002F\u002Fwww.zhihu.com\u002Fpeople\u002Fliangyong1107&,&avatar&:{&id&:&v2-92ddc3c7f56eca5aa78b2e8&,&template&:&https:\u002F\u002Fpic3.zhimg.com\u002F{id}_{size}.jpg&},&isOrgWhiteList&:false,&isBanned&:false},&memberId&:8781987,&excerptTitle&:&&,&voteType&:&ARTICLE_VOTE_CLEAR&},&id&:543372}],&title&:&干货:QQ聊天记录数据分析&,&author&:&liangyong1107&,&content&:&\u003Cp\u003E如果您对某个QQ聊天群感兴趣,并想了解某段时间内大家都聊了什么话题?或者是群里哪些人最活跃?或者这些群员都在哪些时间段比较活跃?本文将教你用R实现这些问题的回答。\u003Cbr\u003E\u003C\u002Fp\u003E\u003Ch3\u003E\u003Cstrong\u003E一、下载QQ群聊天记录\u003C\u002Fstrong\u003E\u003C\u002Fh3\u003E\u003Cp\u003E如果您还不知道如何下载某个QQ群的聊天记录,您可以参考下文链接:\u003C\u002Fp\u003E\u003Cp\u003E\u003Ca href=\&https:\u002F\u002Flink.zhihu.com\u002F?target=http%3A\u002F\u002Fjingyan.baidu.com\u002Farticle\u002Fa3a3f811f5aac5.html\& class=\& external\& target=\&_blank\& rel=\&nofollow noreferrer\&\u003E\u003Cspan class=\&invisible\&\u003Ehttp:\u002F\u002F\u003C\u002Fspan\u003E\u003Cspan class=\&visible\&\u003Ejingyan.baidu.com\u002Fartic\u003C\u002Fspan\u003E\u003Cspan class=\&invisible\&\u003Ele\u002Fa3a3f811f5aac5.html\u003C\u002Fspan\u003E\u003Cspan class=\&ellipsis\&\u003E\u003C\u002Fspan\u003E\u003C\u002Fa\u003E\u003C\u002Fp\u003E\u003Ch3\u003E\u003Cstrong\u003E二、聊天记录格式化\u003C\u002Fstrong\u003E\u003C\u002Fh3\u003E\u003Cp\u003E您下载下来的聊天记录是这样的格式:\u003C\u002Fp\u003E\u003Cfigure\u003E\u003Cnoscript\u003E\u003Cimg src=\&https:\u002F\u002Fpic2.zhimg.com\u002Fv2-00fabbc9fd9_b.jpg\& data-rawwidth=\&610\& data-rawheight=\&408\& class=\&origin_image zh-lightbox-thumb\& width=\&610\& data-original=\&https:\u002F\u002Fpic2.zhimg.com\u002Fv2-00fabbc9fd9_r.jpg\&\u003E\u003C\u002Fnoscript\u003E\u003Cimg src=\&data:image\u002Fsvg+utf8,&svg%20xmlns='http:\u002F\u002Fwww.w3.org\u002FFsvg'%20width='610'%20height='408'&&\u002Fsvg&\& data-rawwidth=\&610\& data-rawheight=\&408\& class=\&origin_image zh-lightbox-thumb lazy\& width=\&610\& data-original=\&https:\u002F\u002Fpic2.zhimg.com\u002Fv2-00fabbc9fd9_r.jpg\& data-actualsrc=\&https:\u002F\u002Fpic2.zhimg.com\u002Fv2-00fabbc9fd9_b.jpg\&\u003E\u003C\u002Ffigure\u003E\u003Cp\u003E\u003Cstrong\u003E如何将这样的文本记录转换为二维表格式呢?即一张表中包含用户名、说话时间和说话内容三列。\u003C\u002Fstrong\u003E\u003C\u002Fp\u003E\u003Cp\u003E\u003Cstrong\u003E如下是我的R脚本实现聊天记录的格式化:\u003C\u002Fstrong\u003E\u003C\u002Fp\u003E\u003Cdiv class=\&highlight\&\u003E\u003Cpre\u003E\u003Ccode class=\&language-text\&\u003E\u003Cspan\u003E\u003C\u002Fspan\u003E#定义数据框和变量\ndata &- data.frame(user_name = c(), datetime = c(), text = c())\nuser_name &- character()\ndatetime &- character()\ntext &- character()\n#开始遍历整个文本,取出三列数据\nfor(i in 5:length(file_data)){\ndt_pattern &- regexpr('[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]+:[0-9]+:[0-9]+',file_data[i])\nif(dt_pattern == 1) {\nuser_begin &- dt_pattern+attr(dt_pattern,'match.length') + 1\nuser_end &- nchar(file_data[i])\nuser_name &- substring(file_data[i],user_begin,user_end)\n\ndt_begin &- dt_pattern\ndt_end &- dt_pattern+attr(dt_pattern,'match.length')-1\ndatetime &- substring(file_data[i],dt_begin,dt_end)\n\ntext &- file_data[i+1]\n\ndata &- rbind(data, data.frame(Name = user_name,datetime = datetime,text = text))\n}\n}\n#字段类型转换\ndata$user_name &- as.character(data$Name)\ndata$text &- as.character(data$text)\ndata$datetime &- as.POSIXlt(data$datetime)\n#取出时间戳(datetime)的年、月、日、时、分、秒部分\ndata &- transform(data,\nyear = datetime$year+1900,\nmonth = datetime$mon+1,\nday = datetime$mday,\nhour = datetime$hour,\nmin = datetime$min,\nsec = datetime$sec)\ndata$datetime &- as.character(data$datetime)\n\u003C\u002Fcode\u003E\u003C\u002Fpre\u003E\u003C\u002Fdiv\u003E\u003Cp\u003E结构化的数据格式如下:\u003C\u002Fp\u003E\u003Cfigure\u003E\u003Cnoscript\u003E\u003Cimg src=\&https:\u002F\u002Fpic4.zhimg.com\u002Fv2-43fab6a061f8a1f2ee8a3c_b.jpg\& data-rawwidth=\&643\& data-rawheight=\&120\& class=\&origin_image zh-lightbox-thumb\& width=\&643\& data-original=\&https:\u002F\u002Fpic4.zhimg.com\u002Fv2-43fab6a061f8a1f2ee8a3c_r.jpg\&\u003E\u003C\u002Fnoscript\u003E\u003Cimg src=\&data:image\u002Fsvg+utf8,&svg%20xmlns='http:\u002F\u002Fwww.w3.org\u002FFsvg'%20width='643'%20height='120'&&\u002Fsvg&\& data-rawwidth=\&643\& data-rawheight=\&120\& class=\&origin_image zh-lightbox-thumb lazy\& width=\&643\& data-original=\&https:\u002F\u002Fpic4.zhimg.com\u002Fv2-43fab6a061f8a1f2ee8a3c_r.jpg\& data-actualsrc=\&https:\u002F\u002Fpic4.zhimg.com\u002Fv2-43fab6a061f8a1f2ee8a3c_b.jpg\&\u003E\u003C\u002Ffigure\u003E\u003Ch3\u003E\u003Cstrong\u003E三、绘图\u003C\u002Fstrong\u003E\u003C\u002Fh3\u003E\u003Cp\u003E\u003Cstrong\u003E绘图主题一:群中哪些天最热闹\u003C\u002Fstrong\u003E\u003C\u002Fp\u003E\u003Cp\u003E统计每月每天总的聊天次数\u003C\u002Fp\u003E\u003Cdiv class=\&highlight\&\u003E\u003Cpre\u003E\u003Ccode class=\&language-text\&\u003E\u003Cspan\u003E\u003C\u002Fspan\u003Elibrary(sqldf)\nmy.data1 &- sqldf('select month,day,count(*) Freq from data\ngroup by month,day')\n\u003C\u002Fcode\u003E\u003C\u002Fpre\u003E\u003C\u002Fdiv\u003E\u003Cp\u003E首先来一张热图,图中反映了哪月哪些天群里最热闹\u003C\u002Fp\u003E\u003Cdiv class=\&highlight\&\u003E\u003Cpre\u003E\u003Ccode class=\&language-text\&\u003E\u003Cspan\u003E\u003C\u002Fspan\u003Elibrary(ggplot2)\np1 &- ggplot(data = my.data1, mapping = aes(x = factor(day), y = factor(month), fill = Freq))\np1 &- p1 + geom_tile() + scale_fill_gradient(low = 'steelblue', high = 'darkred')\np1\n\u003C\u002Fcode\u003E\u003C\u002Fpre\u003E\u003C\u002Fdiv\u003E\u003Cfigure\u003E\u003Cnoscript\u003E\u003Cimg src=\&https:\u002F\u002Fpic6.zhimg.com\u002Fv2-21d1becaa2ea6cee2f85aeb_b.jpg\& data-rawwidth=\&653\& data-rawheight=\&371\& class=\&origin_image zh-lightbox-thumb\& width=\&653\& data-original=\&https:\u002F\u002Fpic6.zhimg.com\u002Fv2-21d1becaa2ea6cee2f85aeb_r.jpg\&\u003E\u003C\u002Fnoscript\u003E\u003Cimg src=\&data:image\u002Fsvg+utf8,&svg%20xmlns='http:\u002F\u002Fwww.w3.org\u002FFsvg'%20width='653'%20height='371'&&\u002Fsvg&\& data-rawwidth=\&653\& data-rawheight=\&371\& class=\&origin_image zh-lightbox-thumb lazy\& width=\&653\& data-original=\&https:\u002F\u002Fpic6.zhimg.com\u002Fv2-21d1becaa2ea6cee2f85aeb_r.jpg\& data-actualsrc=\&https:\u002F\u002Fpic6.zhimg.com\u002Fv2-21d1becaa2ea6cee2f85aeb_b.jpg\&\u003E\u003C\u002Ffigure\u003E\u003Cp\u003E\u003Cstrong\u003E绘图主题二:群中哪些人最活跃\u003C\u002Fstrong\u003E\u003C\u002Fp\u003E\u003Cdiv class=\&highlight\&\u003E\u003Cpre\u003E\u003Ccode class=\&language-text\&\u003E\u003Cspan\u003E\u003C\u002Fspan\u003E#每个用户的说话频次\ndf &- as.data.frame(table(data$Name)\n#这里挑出发言量前10的群员\ntop10 &- df[order(df$Freq, decreasing = TRUE),][1:10,]\n))\n#绘制没有排序的条形图\np2 &- ggplot(data = top10, mapping = aes(x = Name, weight = Freq, fill = Name)) + xlab(NULL) + ylab(NULL)\np2 &- p2 + geom_bar() + coord_flip() #+ scale_fill_manual(values = rainbow(10), guide = FALSE)\np2\n\u003C\u002Fcode\u003E\u003C\u002Fpre\u003E\u003C\u002Fdiv\u003E\u003Cp\u003E\u003Cfigure\u003E\u003Cnoscript\u003E\u003Cimg src=\&https:\u002F\u002Fpic4.zhimg.com\u002Fv2-ae64a08afcf929b6c900388_b.jpg\& data-rawwidth=\&639\& data-rawheight=\&373\& class=\&origin_image zh-lightbox-thumb\& width=\&639\& data-original=\&https:\u002F\u002Fpic4.zhimg.com\u002Fv2-ae64a08afcf929b6c900388_r.jpg\&\u003E\u003C\u002Fnoscript\u003E\u003Cimg src=\&data:image\u002Fsvg+utf8,&svg%20xmlns='http:\u002F\u002Fwww.w3.org\u002FFsvg'%20width='639'%20height='373'&&\u002Fsvg&\& data-rawwidth=\&639\& data-rawheight=\&373\& class=\&origin_image zh-lightbox-thumb lazy\& width=\&639\& data-original=\&https:\u002F\u002Fpic4.zhimg.com\u002Fv2-ae64a08afcf929b6c900388_r.jpg\& data-actualsrc=\&https:\u002F\u002Fpic4.zhimg.com\u002Fv2-ae64a08afcf929b6c900388_b.jpg\&\u003E\u003C\u002Ffigure\u003E\u003Cstrong\u003E#绘制排序的条形图\u003C\u002Fstrong\u003E\u003C\u002Fp\u003E\u003Cdiv class=\&highlight\&\u003E\u003Cpre\u003E\u003Ccode class=\&language-text\&\u003E\u003Cspan\u003E\u003C\u002Fspan\u003Ep3 &- ggplot(data = top10)+ xlab(NULL) + ylab(NULL)\np3 &- p3 + geom_bar(aes(x = reorder(Name, Freq), y = Freq, fill = Name), stat=\&identity\&) + coord_flip()\np3\n\u003C\u002Fcode\u003E\u003C\u002Fpre\u003E\u003C\u002Fdiv\u003E\u003Cfigure\u003E\u003Cnoscript\u003E\u003Cimg src=\&https:\u002F\u002Fpic4.zhimg.com\u002Fv2-4a9a334ddeb9accde4d203ab64cab229_b.jpg\& data-rawwidth=\&637\& data-rawheight=\&393\& class=\&origin_image zh-lightbox-thumb\& width=\&637\& data-original=\&https:\u002F\u002Fpic4.zhimg.com\u002Fv2-4a9a334ddeb9accde4d203ab64cab229_r.jpg\&\u003E\u003C\u002Fnoscript\u003E\u003Cimg src=\&data:image\u002Fsvg+utf8,&svg%20xmlns='http:\u002F\u002Fwww.w3.org\u002FFsvg'%20width='637'%20height='393'&&\u002Fsvg&\& data-rawwidth=\&637\& data-rawheight=\&393\& class=\&origin_image zh-lightbox-thumb lazy\& width=\&637\& data-original=\&https:\u002F\u002Fpic4.zhimg.com\u002Fv2-4a9a334ddeb9accde4d203ab64cab229_r.jpg\& data-actualsrc=\&https:\u002F\u002Fpic4.zhimg.com\u002Fv2-4a9a334ddeb9accde4d203ab64cab229_b.jpg\&\u003E\u003C\u002Ffigure\u003E\u003Cp\u003E\u003Cstrong\u003E绘图主题三:这群活跃的人都喜欢什么时候发言\u003C\u002Fstrong\u003E\u003C\u002Fp\u003E\u003Cdiv class=\&highlight\&\u003E\u003Cpre\u003E\u003Ccode class=\&language-text\&\u003E\u003Cspan\u003E\u003C\u002Fspan\u003E#读取10人的发言汇总信息\nmy.data3 &- sqldf('select Name,hour,count(*) Freq from data where Name in (select Name from top10) group by Name,hour')\nEncoding(my.data3$Name) &- 'UTF-8'\n#绘制面积图\np4 &- ggplot(data = my.data3, mapping = aes(x = hour, y = Freq, fill = Name))\np4 &- p4 + geom_area() + facet_wrap(~Name) + scale_fill_manual(values = rainbow(10), guide = FALSE)\np4\n\u003C\u002Fcode\u003E\u003C\u002Fpre\u003E\u003C\u002Fdiv\u003E\u003Cfigure\u003E\u003Cnoscript\u003E\u003Cimg src=\&https:\u002F\u002Fpic1.zhimg.com\u002Fv2-eecd64de69eeebef963babc_b.jpg\& data-rawwidth=\&650\& data-rawheight=\&373\& class=\&origin_image zh-lightbox-thumb\& width=\&650\& data-original=\&https:\u002F\u002Fpic1.zhimg.com\u002Fv2-eecd64de69eeebef963babc_r.jpg\&\u003E\u003C\u002Fnoscript\u003E\u003Cimg src=\&data:image\u002Fsvg+utf8,&svg%20xmlns='http:\u002F\u002Fwww.w3.org\u002FFsvg'%20width='650'%20height='373'&&\u002Fsvg&\& data-rawwidth=\&650\& data-rawheight=\&373\& class=\&origin_image zh-lightbox-thumb lazy\& width=\&650\& data-original=\&https:\u002F\u002Fpic1.zhimg.com\u002Fv2-eecd64de69eeebef963babc_r.jpg\& data-actualsrc=\&https:\u002F\u002Fpic1.zhimg.com\u002Fv2-eecd64de69eeebef963babc_b.jpg\&\u003E\u003C\u002Ffigure\u003E\u003Cp\u003E\u003Cstrong\u003E绘图主题四:这段时间内,大家都聊了什么?\u003C\u002Fstrong\u003E\u003C\u002Fp\u003E\u003Cdiv class=\&highlight\&\u003E\u003Cpre\u003E\u003Ccode class=\&language-text\&\u003E\u003Cspan\u003E\u003C\u002Fspan\u003E#分词\nlibrary(Rwordseg)\nlibrary(tmcn)\nlibrary(tm)\n#读入自定义的停止词\nmy.stopwords &- readLines('stopwords.txt', encoding = 'UTF-8')\n#添加自定义词汇\ninsertWords(c('顺丰','外卖','快递','娜娜','丽娜','9楼','10楼','小李','帐号','it','IT','客服','楼下','门禁'))\n#根据分词结果再一次添加自定义停止词\nmy.stopwords &- c(my.stopwords, '下','人','图片','表情','号','好','请','录','机','群')\nsegwd1 &- unlist(segmentCN(strwords = data$text))\nEncoding(segwd1) &- 'UTF-8'\n#剔除停止词\nsegwd2 &- segwd1[which((segwd1 %in% my.stopwords) == FALSE)]\n#分词后的词语频率汇总\nwdfreq &- as.data.frame(table(segwd2))\n#排列语频顺序\nwdfreq &- arrange(df = wdfreq, Freq, decreasing = TRUE)\n#取出前50的词频\nwdfreq &- wdfreq[1:50,]\n\u003C\u002Fcode\u003E\u003C\u002Fpre\u003E\u003C\u002Fdiv\u003E\u003Cp\u003E前50的词频格式如下图所示(图中记录了每个词语的出现频次):\u003C\u002Fp\u003E\u003Cfigure\u003E\u003Cnoscript\u003E\u003Cimg src=\&https:\u002F\u002Fpic1.zhimg.com\u002Fv2-8cf6d0fe_b.jpg\& data-rawwidth=\&640\& data-rawheight=\&265\& class=\&origin_image zh-lightbox-thumb\& width=\&640\& data-original=\&https:\u002F\u002Fpic1.zhimg.com\u002Fv2-8cf6d0fe_r.jpg\&\u003E\u003C\u002Fnoscript\u003E\u003Cimg src=\&data:image\u002Fsvg+utf8,&svg%20xmlns='http:\u002F\u002Fwww.w3.org\u002FFsvg'%20width='640'%20height='265'&&\u002Fsvg&\& data-rawwidth=\&640\& data-rawheight=\&265\& class=\&origin_image zh-lightbox-thumb lazy\& width=\&640\& data-original=\&https:\u002F\u002Fpic1.zhimg.com\u002Fv2-8cf6d0fe_r.jpg\& data-actualsrc=\&https:\u002F\u002Fpic1.zhimg.com\u002Fv2-8cf6d0fe_b.jpg\&\u003E\u003C\u002Ffigure\u003E\u003Cp\u003E\u003Cstrong\u003E#绘制文字云\u003C\u002Fstrong\u003E\u003C\u002Fp\u003E\u003Cdiv class=\&highlight\&\u003E\u003Cpre\u003E\u003Ccode class=\&language-text\&\u003E\u003Cspan\u003E\u003C\u002Fspan\u003Elibrary(wordcloud)\npar(bg = 'black')\nwordcloud(words = wdfreq$segwd2, freq = wdfreq$Freq, random.color=TRUE, colors=rainbow(10))\n\u003C\u002Fcode\u003E\u003C\u002Fpre\u003E\u003C\u002Fdiv\u003E\u003Cfigure\u003E\u003Cnoscript\u003E\u003Cimg src=\&https:\u002F\u002Fpic1.zhimg.com\u002Fv2-d6_b.jpg\& data-rawwidth=\&645\& data-rawheight=\&421\& class=\&origin_image zh-lightbox-thumb\& width=\&645\& data-original=\&https:\u002F\u002Fpic1.zhimg.com\u002Fv2-d6_r.jpg\&\u003E\u003C\u002Fnoscript\u003E\u003Cimg src=\&data:image\u002Fsvg+utf8,&svg%20xmlns='http:\u002F\u002Fwww.w3.org\u002FFsvg'%20width='645'%20height='421'&&\u002Fsvg&\& data-rawwidth=\&645\& data-rawheight=\&421\& class=\&origin_image zh-lightbox-thumb lazy\& width=\&645\& data-original=\&https:\u002F\u002Fpic1.zhimg.com\u002Fv2-d6_r.jpg\& data-actualsrc=\&https:\u002F\u002Fpic1.zhimg.com\u002Fv2-d6_b.jpg\&\u003E\u003C\u002Ffigure\u003E\u003Cp\u003E\u003Cstrong\u003E参考资料\u003C\u002Fstrong\u003E\u003C\u002Fp\u003E\u003Cp\u003E\u003Cstrong\u003E\u003Ca href=\&https:\u002F\u002Flink.zhihu.com\u002F?target=http%3A\u002F\u002Ftoutiao.com\u002Fa2F\& class=\& wrap external\& target=\&_blank\& rel=\&nofollow noreferrer\&\u003E手把手:R语言文本挖掘和词云可视化实践 - 今日头条(www.toutiao.com)\u003C\u002Fa\u003E\u003C\u002Fstrong\u003E\u003C\u002Fp\u003E\u003Cp\u003E\u003Cstrong\u003ER语言与网站分析\u003C\u002Fstrong\u003E\u003C\u002Fp\u003E\u003Cp\u003E\u003Cstrong\u003E总结:文中涉及到的R包和函数\u003C\u002Fstrong\u003E\u003C\u002Fp\u003E\u003Cp\u003E\u003Cstrong\u003Estats包\u003Cbr\u003E\u003C\u002Fstrong\u003E\u003C\u002Fp\u003E\u003Cp\u003E\u003Cstrong\u003Eregexpr()\u003C\u002Fstrong\u003E\u003C\u002Fp\u003E\u003Cp\u003E\u003Cstrong\u003Esubstring()\u003C\u002Fstrong\u003E\u003C\u002Fp\u003E\u003Cp\u003E\u003Cstrong\u003Erbind()\u003C\u002Fstrong\u003E\u003C\u002Fp\u003E\u003Cp\u003E\u003Cstrong\u003Etransform()\u003C\u002Fstrong\u003E\u003C\u002Fp\u003E\u003Cp\u003E\u003Cstrong\u003Etable()\u003Cbr\u003E\u003C\u002Fstrong\u003E\u003C\u002Fp\u003E\u003Cp\u003E\u003Cstrong\u003E%in%\u003C\u002Fstrong\u003E\u003C\u002Fp\u003E\u003Cp\u003E\u003Cstrong\u003Esqldf包\u003Cbr\u003E\u003C\u002Fstrong\u003E\u003C\u002Fp\u003E\u003Cp\u003E\u003Cstrong\u003Esqldf()\u003C\u002Fstrong\u003E\u003C\u002Fp\u003E\u003Cp\u003E\u003Cstrong\u003Eplyr包\u003C\u002Fstrong\u003E\u003C\u002Fp\u003E\u003Cp\u003E\u003Cstrong\u003Earrange()\u003C\u002Fstrong\u003E\u003C\u002Fp\u003E\u003Cp\u003E\u003Cstrong\u003Eggplot2包\u003Cbr\u003E\u003C\u002Fstrong\u003E\u003C\u002Fp\u003E\u003Cp\u003E\u003Cstrong\u003Eggplot()\u003C\u002Fstrong\u003E\u003C\u002Fp\u003E\u003Cp\u003E\u003Cstrong\u003Egeom_tile()\u003C\u002Fstrong\u003E\u003C\u002Fp\u003E\u003Cp\u003E\u003Cstrong\u003Escale_fill_gradient()\u003C\u002Fstrong\u003E\u003C\u002Fp\u003E\u003Cp\u003E\u003Cstrong\u003Egeom_bar()\u003C\u002Fstrong\u003E\u003C\u002Fp\u003E\u003Cp\u003E\u003Cstrong\u003Egeom_area()\u003C\u002Fstrong\u003E\u003C\u002Fp\u003E\u003Cp\u003E\u003Cstrong\u003Efacet_wrap()\u003C\u002Fstrong\u003E\u003C\u002Fp\u003E\u003Cp\u003E\u003Cstrong\u003Escale_fill_manual()\u003C\u002Fstrong\u003E\u003C\u002Fp\u003E\u003Cp\u003E\u003Cstrong\u003ERwordseg包\u003C\u002Fstrong\u003E\u003C\u002Fp\u003E\u003Cp\u003E\u003Cstrong\u003Etm包\u003C\u002Fstrong\u003E\u003C\u002Fp\u003E\u003Cp\u003E\u003Cstrong\u003EinsertWords()\u003C\u002Fstrong\u003E\u003C\u002Fp\u003E\u003Cp\u003E\u003Cstrong\u003EsegmentCN()\u003C\u002Fstrong\u003E\u003C\u002Fp\u003E\u003Cp\u003E\u003Cstrong\u003Ewordcloud包\u003C\u002Fstrong\u003E\u003C\u002Fp\u003E\u003Cp\u003E\u003Cstrong\u003Ewordcloud()\u003C\u002Fstrong\u003E\u003C\u002Fp\u003E\u003Cp\u003E----------------------------------------------\u003C\u002Fp\u003E\u003Cp\u003E作者:刘顺祥\u003C\u002Fp\u003E\u003Cp\u003E出处:\u003Ca href=\&https:\u002F\u002Flink.zhihu.com\u002F?target=https%3A\u002F\u002Fask.hellobi.com\u002Fblog\u002Flsxxx2011\& class=\& wrap external\& target=\&_blank\& rel=\&nofollow noreferrer\&\u003E刘顺祥博客\u003C\u002Fa\u003E\u003C\u002Fp\u003E\u003Cp\u003E公众号:每天进步一点点C\u002Fp\u003E\u003Cp\u003E\u003Cb\u003E大家也可以加小编微信:tswenqu,进R语言中文社区 交流群,可以跟各位老师互相交流\u003C\u002Fb\u003E\u003C\u002Fp\u003E&,&updated&:new Date(&T02:43:07.000Z&),&canComment&:false,&commentPermission&:&anyone&,&commentCount&:15,&collapsedCount&:0,&likeCount&:63,&state&:&published&,&isLiked&:false,&slug&:&&,&isTitleImageFullScreen&:false,&rating&:&none&,&titleImage&:&https:\u002F\u002Fpic4.zhimg.com\u002Fv2-dd9c7efef3d80f7912bd0_r.jpg&,&links&:{&comments&:&\u002Fapi\u002Fposts\u002F2Fcomments&},&reviewers&:[],&topics&:[{&url&:&https:\u002F\u002Fwww.zhihu.com\u002Ftopic\u002F&,&id&:&&,&name&:&R(编程语言)&},{&url&:&https:\u002F\u002Fwww.zhihu.com\u002Ftopic\u002F&,&id&:&&,&name&:&数据分析&},{&url&:&https:\u002F\u002Fwww.zhihu.com\u002Ftopic\u002F&,&id&:&&,&name&:&大数据&}],&adminClosedComment&:false,&titleImageSize&:{&width&:580,&height&:331},&href&:&\u002Fapi\u002Fposts\u002F&,&excerptTitle&:&&,&column&:{&slug&:&rshequ&,&name&:&R语言中文社区&},&tipjarState&:&inactivated&,&annotationAction&:[],&sourceUrl&:&&,&pageCommentsCount&:15,&hasPublishingDraft&:false,&snapshotUrl&:&&,&publishedTime&:&T10:43:07+08:00&,&url&:&\u002Fp\u002F&,&lastestLikers&:[{&bio&:&&,&isFollowing&:false,&hash&:&fdde63f277bbb62a3cf351&,&uid&:848500,&isOrg&:false,&slug&:&meng-qi-qi-43-57-96&,&isFollowed&:false,&description&:&&,&name&:&萌奇奇&,&profileUrl&:&https:\u002F\u002Fwww.zhihu.com\u002Fpeople\u002Fmeng-qi-qi-43-57-96&,&avatar&:{&id&:&v2-617d5bda5&,&template&:&https:\u002F\u002Fpic1.zhimg.com\u002F{id}_{size}.jpg&},&isOrgWhiteList&:false,&isBanned&:false},{&bio&:&没有&,&isFollowing&:false,&hash&:&f3ba5ccffcfdf55&,&uid&:702800,&isOrg&:false,&slug&:&zhang-guan-ping-53-39&,&isFollowed&:false,&description&:&不介&,&name&:&A关平&,&profileUrl&:&https:\u002F\u002Fwww.zhihu.com\u002Fpeople\u002Fzhang-guan-ping-53-39&,&avatar&:{&id&:&v2-ea139cf7f1c9bf65a15bc3e&,&template&:&https:\u002F\u002Fpic3.zhimg.com\u002F{id}_{size}.jpg&},&isOrgWhiteList&:false,&isBanned&:false},{&bio&:&不靠谱&,&isFollowing&:false,&hash&:&b9b153a917ceab89ae15ea&,&uid&:528600,&isOrg&:false,&slug&:&kunmingjiehui&,&isFollowed&:false,&description&:&请勿关注我,谢谢!&,&name&:&黑水&,&profileUrl&:&https:\u002F\u002Fwww.zhihu.com\u002Fpeople\u002Fkunmingjiehui&,&avatar&:{&id&:&v2-3abe7ad92c34529ba70fcd&,&template&:&https:\u002F\u002Fpic1.zhimg.com\u002F{id}_{size}.jpg&},&isOrgWhiteList&:false,&isBanned&:false},{&bio&:&就是个很普通的人而已&,&isFollowing&:false,&hash&:&ab71b47f19ac65a1048a2&,&uid&:768400,&isOrg&:false,&slug&:&piajuan-xin-cai-i&,&isFollowed&:false,&description&:&我好的,不好的,高尚的,lowb的,机智的,愚蠢的,都只是因为我是个普通人而已。&,&name&:&Yammay&,&profileUrl&:&https:\u002F\u002Fwww.zhihu.com\u002Fpeople\u002Fpiajuan-xin-cai-i&,&avatar&:{&id&:&v2-986a7fb7b3589eaf42bc51e15e141320&,&template&:&https:\u002F\u002Fpic1.zhimg.com\u002F{id}_{size}.jpg&},&isOrgWhiteList&:false,&isBanned&:false},{&bio&:&年纪尚浅,有点幼稚&,&isFollowing&:false,&hash&:&1593ad5bfd9b07e60f620a0bc999ba39&,&uid&:04,&isOrg&:false,&slug&:&cyclotron&,&isFollowed&:false,&description&:&没什么特长,除了腿毛&,&name&:&回旋加速器&,&profileUrl&:&https:\u002F\u002Fwww.zhihu.com\u002Fpeople\u002Fcyclotron&,&avatar&:{&id&:&v2-594ece4abc7ec957b5be337dc13bba8f&,&template&:&https:\u002F\u002Fpic2.zhimg.com\u002F{id}_{size}.jpg&},&isOrgWhiteList&:false,&isBanned&:false}],&summary&:&\u003Cimg src=\&http:\u002F\u002Fpic2.zhimg.com\u002Fv2-00fabbc9fd9_200x112.png\& data-rawwidth=\&610\& data-rawheight=\&408\& class=\&origin_image inline-img zh-lightbox-thumb\& data-original=\&http:\u002F\u002Fpic2.zhimg.com\u002Fv2-00fabbc9fd9_r.png\&\u003E如果您对某个QQ聊天群感兴趣,并想了解某段时间内大家都聊了什么话题?或者是群里哪些人最活跃?或者这些群员都在哪些时间段比较活跃?本文将教你用R实现这些问题的回答。 \u003Cstrong\u003E一、下载QQ群聊天记录\u003C\u002Fstrong\u003E如果您还不知道如何下载某个QQ群的聊天记录,您可以参考下文链…&,&reviewingCommentsCount&:0,&meta&:{&previous&:{&isTitleImageFullScreen&:false,&rating&:&none&,&titleImage&:&https:\u002F\u002Fpic1.zhimg.com\u002F50\u002Fv2-11a93b5e6c32f683b9533bfb780ffe1b_xl.jpg&,&links&:{&comments&:&\u002Fapi\u002Fposts\u002F2Fcomments&},&topics&:[{&url&:&https:\u002F\u002Fwww.zhihu.com\u002Ftopic\u002F&,&id&:&&,&name&:&R(编程语言)&},{&url&:&https:\u002F\u002Fwww.zhihu.com\u002Ftopic\u002F&,&id&:&&,&name&:&数据挖掘&},{&url&:&https:\u002F\u002Fwww.zhihu.com\u002Ftopic\u002F&,&id&:&&,&name&:&数据分析&}],&adminClosedComment&:false,&href&:&\u002Fapi\u002Fposts\u002F&,&excerptTitle&:&&,&author&:{&bio&:&&,&isFollowing&:false,&hash&:&40526e74fffbc0be71bc415f&,&uid&:48,&isOrg&:false,&slug&:&liangyong1107&,&isFollowed&:false,&description&:&&,&name&:&李晓文&,&profileUrl&:&https:\u002F\u002Fwww.zhihu.com\u002Fpeople\u002Fliangyong1107&,&avatar&:{&id&:&v2-92ddc3c7f56eca5aa78b2e8&,&template&:&https:\u002F\u002Fpic3.zhimg.com\u002F{id}_{size}.jpg&},&isOrgWhiteList&:false,&isBanned&:false},&column&:{&slug&:&rshequ&,&name&:&R语言中文社区&},&content&:&\u003Cp\u003E我之前写了一篇关于使用wordcloud包的文本可视化的博客,\u003C\u002Fp\u003E\u003Cp\u003E链接为 \u003Ca href=\&https:\u002F\u002Flink.zhihu.com\u002F?target=http%3A\u002F\u002Fblog.csdn.net\u002Fwzgl__wh\u002Farticle\u002Fdetails\u002F\& class=\& wrap external\& target=\&_blank\& rel=\&nofollow noreferrer\&\u003E可视化文本数据-词云 - 王亨的博客 - 博客频道 - CSDN.NET\u003C\u002Fa\u003E。\u003C\u002Fp\u003E\u003Cp\u003EIan Fellows与公布了wordcloud包,之前我用wordcloud包写了一篇关于文本可视化的博客。这里就不再多说了。\u003C\u002Fp\u003E\u003Cp\u003E就在今年,Dawei Lang发布了wordcloud2,它是wordcloud的一个升级版。不信咱们就看看。我们可以用这个包画出个性化词云图。\u003Cbr\u003E这个包里面包含了两个数据集,demoFreqC和demoFreq,前者是一些中文数据,后者是一些英文数据。这两个数据都包含了两个变量,一个是文本,另一个是文本的数量。大家可以使用str()函数来查看数据的详细信息。这个表主要有两个函数letterCloud和wordcloud2。\u003C\u002Fp\u003E\u003Cp\u003Ewordcloud2(data, size = 1, minSize = 0, gridSize =
fontFamily = 'Segoe UI', fontWeight = 'bold',
color = 'random-dark', backgroundColor = \&white\&,
minRotation = -pi\u002F4, maxRotation = pi\u002F4, shuffle = TRUE,
rotateRatio = 0.4, shape = 'circle', ellipticity = 0.65,
widgetsize = NULL, figPath = NULL, hoverFunction = NULL)\u003Cbr\u003E\u003Cbr\u003EletterCloud(data, word, wordSize = 0, letterFont = NULL, ...)\u003C\u002Fp\u003E\u003Cp\u003Ewordcloud2提供了基本的词云功能,letterCloud可以使用选定的词绘制词云,这个词可以是英文,也可以是中文。\u003C\u002Fp\u003E\u003Cp\u003E上面就是wordcloud2()函数,里面参数一大堆,但我们用的时候却有的时候永不了那么多。其中\u003C\u002Fp\u003E\u003Cp\u003Edata就是我们要处理的数据。\u003C\u002Fp\u003E\u003Cp\u003Eshape参数可以选择词云的形状,有上面代码可知它默认为圆形(circle),它还提供了其他一些参数,cardioid(心形),star(星形),diamond(钻石形),triangle-forward(三角形),triangle(三角形),这两个三角形就是倾斜方向不同而已,pentagon(五边形)。\u003C\u002Fp\u003E\u003Cp\u003Esize参数为字体的大小,这个还是比较重要的,后面我们会谈到。\u003C\u002Fp\u003E\u003Cp\u003EbackgroundColor设置背景颜色,默认为白色,但有的时候黑色效果更好,颜色更能凸显出来。\u003C\u002Fp\u003E\u003Cp\u003E至于其他参数大家可以通过帮助文档来了解。\u003C\u002Fp\u003E\u003Cp\u003E首先,我们要加载wordcloud2这个包,然后就可以绘制词云了。\u003C\u002Fp\u003E\u003Cp\u003Elibrary(wordcloud2)\u003C\u002Fp\u003E\u003Cp\u003E来画我们的第一个图吧!\u003C\u002Fp\u003E\u003Cp\u003Ewordcloud2(demoFreq)\u003C\u002Fp\u003E\u003Cp\u003E\u003Cfigure\u003E\u003Cimg src=\&https:\u002F\u002Fpic4.zhimg.com\u002Fv2-dfe3824692dac_b.jpg\& data-rawwidth=\&530\& data-rawheight=\&297\& class=\&origin_image zh-lightbox-thumb\& width=\&530\& data-original=\&https:\u002F\u002Fpic4.zhimg.com\u002Fv2-dfe3824692dac_r.jpg\&\u003E\u003C\u002Ffigure\u003E这是一个最简单的。接下来让我们画一个五角星:\u003C\u002Fp\u003E\u003Cp\u003Ewordcloud2(demoFreq, size = 1,shape='star')\u003C\u002Fp\u003E\u003Cfigure\u003E\u003Cimg src=\&https:\u002F\u002Fpic1.zhimg.com\u002Fv2-eaf75a7bcd42c24ba3e5c6_b.jpg\& data-rawwidth=\&511\& data-rawheight=\&308\& class=\&origin_image zh-lightbox-thumb\& width=\&511\& data-original=\&https:\u002F\u002Fpic1.zhimg.com\u002Fv2-eaf75a7bcd42c24ba3e5c6_r.jpg\&\u003E\u003C\u002Ffigure\u003E\u003Cp\u003E如果你觉得这个包自带的参数画出来的图不够好看,或者不能表达你想表达的意思,你还可以自定义词云的背景形状。不过图片必须是黑白照片,在这个包的examples文件夹下面有一张t.png的黑白照片,是一只鸟。我们就可以画出一张像下面小鸟的词云。\u003C\u002Fp\u003E\u003Cfigure\u003E\u003Cimg src=\&https:\u002F\u002Fpic1.zhimg.com\u002Fv2-35e295cb4fb090d6f6f5e56c_b.jpg\& data-rawwidth=\&493\& data-rawheight=\&383\& class=\&origin_image zh-lightbox-thumb\& width=\&493\& data-original=\&https:\u002F\u002Fpic1.zhimg.com\u002Fv2-35e295cb4fb090d6f6f5e56c_r.jpg\&\u003E\u003C\u002Ffigure\u003E\u003Col\u003E\u003Cli\u003E\u003Cp\u003Elog&-system.file(\&examples\u002Ft.png\&,package=\&wordcloud2\&)
\u003C\u002Fp\u003E\u003C\u002Fli\u003E\u003Cli\u003E\u003Cp\u003Ewordcloud2(demoFreqC, size = 1,figPath =log)\u003C\u002Fp\u003E\u003C\u002Fli\u003E\u003C\u002Fol\u003E\u003Cp\u003E\u003Cfigure\u003E\u003Cimg src=\&https:\u002F\u002Fpic1.zhimg.com\u002Fv2-cedd28af32ce7dffd32a57_b.jpg\& data-rawwidth=\&483\& data-rawheight=\&271\& class=\&origin_image zh-lightbox-thumb\& width=\&483\& data-original=\&https:\u002F\u002Fpic1.zhimg.com\u002Fv2-cedd28af32ce7dffd32a57_r.jpg\&\u003E\u003C\u002Ffigure\u003E
也许看到下面图你会认为它怎么看都不像一只鸟,倒是有点像个心形。这就是因为size参数设置的有问题,我们把这个参数改一下再看看。\u003C\u002Fp\u003E\u003Cp\u003Ewordcloud2(demoFreqC, size = 1.55,figPath =log)\u003C\u002Fp\u003E\u003Cp\u003E\u003Cfigure\u003E\u003Cimg src=\&https:\u002F\u002Fpic3.zhimg.com\u002Fv2-9fac697b7b6a5c804760_b.jpg\& data-rawwidth=\&561\& data-rawheight=\&282\& class=\&origin_image zh-lightbox-thumb\& width=\&561\& data-original=\&https:\u002F\u002Fpic3.zhimg.com\u002Fv2-9fac697b7b6a5c804760_r.jpg\&\u003E\u003C\u002Ffigure\u003E这下是不是有点像只鸟了。现在我们换一个背景颜色再看看效果。\u003C\u002Fp\u003E\u003Cp\u003Ewordcloud2(demoFreqC, size = 1.55,figPath =log,background='black')\u003C\u002Fp\u003E\u003Cp\u003E\u003Cfigure\u003E\u003Cimg src=\&https:\u002F\u002Fpic1.zhimg.com\u002Fv2-4fbf8b2e936f5f_b.jpg\& data-rawwidth=\&479\& data-rawheight=\&276\& class=\&origin_image zh-lightbox-thumb\& width=\&479\& data-original=\&https:\u002F\u002Fpic1.zhimg.com\u002Fv2-4fbf8b2e936f5f_r.jpg\&\u003E\u003C\u002Ffigure\u003E 现在看起来是不是觉得颜色很鲜艳,特别吸引人的眼球。\u003C\u002Fp\u003E\u003Cp\u003E现在我们再用letterCloud绘图,它可以根据设定的字符,生成一个与之形状相同的词云。\u003C\u002Fp\u003E\u003Cp\u003EletterCloud(demoFreqC,word=\&R\&,size = 2)\u003C\u002Fp\u003E\u003Cp\u003E\u003Cfigure\u003E\u003Cimg src=\&https:\u002F\u002Fpic3.zhimg.com\u002Fv2-a39e5f0b2decf6a3d84ed5b5dce1a09f_b.jpg\& data-rawwidth=\&458\& data-rawheight=\&321\& class=\&origin_image zh-lightbox-thumb\& width=\&458\& data-original=\&https:\u002F\u002Fpic3.zhimg.com\u002Fv2-a39e5f0b2decf6a3d84ed5b5dce1a09f_r.jpg\&\u003E\u003C\u002Ffigure\u003E咱们再来一个中文汉字吧。\u003C\u002Fp\u003E\u003Cp\u003EletterCloud(demoFreqC,word=\&挖\&,size = 2)\u003C\u002Fp\u003E\u003Cfigure\u003E\u003Cimg src=\&https:\u002F\u002Fpic3.zhimg.com\u002Fv2-2c7d2b367955cae6d6c9_b.jpg\& data-rawwidth=\&414\& data-rawheight=\&267\& class=\&content_image\& width=\&414\&\u003E\u003C\u002Ffigure\u003E\u003Cp\u003E怎么样,是不是既简单又好看,那就自己也动手做一个吧。\u003C\u002Fp\u003E\u003Cp\u003E----------------------------------------------\u003C\u002Fp\u003E\u003Cp\u003E作者:王亨\u003C\u002Fp\u003E\u003Cp\u003E出处:\u003Ca href=\&https:\u002F\u002Flink.zhihu.com\u002F?target=https%3A\u002F\u002Fask.hellobi.com\u002Fblog\u002Flearn_R\& class=\& wrap external\& target=\&_blank\& rel=\&nofollow noreferrer\&\u003E王亨的博客专栏\u003C\u002Fa\u003E\u003C\u002Fp\u003E\u003Cp\u003E公众号:跟着菜鸟一起学R语言\u003C\u002Fp\u003E\u003Cp\u003E\u003Cb\u003E大家也可以加小编微信:tswenqu,进R语言中文社区 交流群,可以跟各位老师互相交流\u003C\u002Fb\u003E\u003C\u002Fp\u003E&,&state&:&published&,&sourceUrl&:&&,&pageCommentsCount&:0,&canComment&:false,&snapshotUrl&:&&,&slug&:,&publishedTime&:&T17:48:55+08:00&,&url&:&\u002Fp\u002F&,&title&:&R语言如何画个性化词云图&,&summary&:&我之前写了一篇关于使用wordcloud包的文本可视化的博客,链接为 \u003Ca href=\&http:\u002F\u002Fblog.csdn.net\u002Fwzgl__wh\u002Farticle\u002Fdetails\u002F\& data-editable=\&true\& data-title=\&可视化文本数据-词云 - 王亨的博客 - 博客频道 - CSDN.NET\& class=\&\&\u003E可视化文本数据-词云 - 王亨的博客 - 博客频道 - CSDN.NET\u003C\u002Fa\u003E。Ian Fellows与公布了wordcloud包,之前我用wordcloud包写了一篇关于文本可视化的博客。这里就不再多说了。就在今年2016-…&,&reviewingCommentsCount&:0,&meta&:{&previous&:null,&next&:null},&commentPermission&:&anyone&,&commentsCount&:9,&likesCount&:24},&next&:{&isTitleImageFullScreen&:false,&rating&:&none&,&titleImage&:&https:\u002F\u002Fpic1.zhimg.com\u002F50\u002Fv2-a212ed67e30aef01e988a111_xl.jpg&,&links&:{&comments&:&\u002Fapi\u002Fposts\u002F2Fcomments&},&topics&:[{&url&:&https:\u002F\u002Fwww.zhihu.com\u002Ftopic\u002F&,&id&:&&,&name&:&R(编程语言)&},{&url&:&https:\u002F\u002Fwww.zhihu.com\u002Ftopic\u002F&,&id&:&&,&name&:&数据可视化&},{&url&:&https:\u002F\u002Fwww.zhihu.com\u002Ftopic\u002F&,&id&:&&,&name&:&ggplot&}],&adminClosedComment&:false,&href&:&\u002Fapi\u002Fposts\u002F&,&excerptTitle&:&&,&author&:{&bio&:&&,&isFollowing&:false,&hash&:&40526e74fffbc0be71bc415f&,&uid&:48,&isOrg&:false,&slug&:&liangyong1107&,&isFollowed&:false,&description&:&&,&name&:&李晓文&,&profileUrl&:&https:\u002F\u002Fwww.zhihu.com\u002Fpeople\u002Fliangyong1107&,&avatar&:{&id&:&v2-92ddc3c7f56eca5aa78b2e8&,&template&:&https:\u002F\u002Fpic3.zhimg.com\u002F{id}_{size}.jpg&},&isOrgWhiteList&:false,&isBanned&:false},&column&:{&slug&:&rshequ&,&name&:&R语言中文社区&},&content&:&\u003Cp\u003E数据分析报告中经常会看见各种各样的条形图,如简单条形图、水平交错条形图、堆叠条形图、堆叠百分比条形图等,本文从R语言的角度,教大家绘制各式各样的条形图。\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp\u003E\u003Cstrong\u003E绘制离散单变量的条形图\u003C\u002Fstrong\u003E\u003C\u002Fp\u003E\u003Cp\u003E从数据形式来看:有汇总好的数据集和明细数据集\u003C\u002Fp\u003E\u003Cp\u003E使用汇总好的数据集绘制条形图:\u003C\u002Fp\u003E\u003Cdiv class=\&highlight\&\u003E\u003Cpre\u003E\u003Ccode class=\&language-text\&\u003E\u003Cspan\u003E\u003C\u002Fspan\u003Ex &- c('A','B','C','D','E')\ny &- c(13,22,16,31,8)\ndf &- data.frame(x = x, y = y)\nggplot(data = df, mapping = aes(x = x, y = y)) + geom_bar(stat = 'identity')\n\u003C\u002Fcode\u003E\u003C\u002Fpre\u003E\u003C\u002Fdiv\u003E\u003Cp\u003E\u003Cfigure\u003E\u003Cimg src=\&https:\u002F\u002Fpic2.zhimg.com\u002Fv2-6ba47c9c431eb194cbaa5_b.jpg\& data-rawwidth=\&636\& data-rawheight=\&297\& class=\&origin_image zh-lightbox-thumb\& width=\&636\& data-original=\&https:\u002F\u002Fpic2.zhimg.com\u002Fv2-6ba47c9c431eb194cbaa5_r.jpg\&\u003E\u003C\u002Ffigure\u003E对于条形图的y轴就是数据框中原本的数值时,必须将geom_bar()函数中stat(统计转换)参数设置为'identity',即对原始数据集不作任何统计变换,而该参数的默认值为'count',即观测数量。\u003C\u002Fp\u003E\u003Cp\u003E使用明细数据集绘制条形图:\u003C\u002Fp\u003E\u003Cdiv class=\&highlight\&\u003E\u003Cpre\u003E\u003Ccode class=\&language-text\&\u003E\u003Cspan\u003E\u003C\u002Fspan\u003Eset.seed(1234)\nx &- sample(c('A','B','C','D'), size = 1000, replace = TRUE, prob = c(0.2,0.3,0.3,0.2))\ny &- rnorm(1000) * 1000\ndf = data.frame(x = x, y = y)\nggplot(data = df, mapping = aes(x = x)) + geom_bar(stat = 'count')\n\u003C\u002Fcode\u003E\u003C\u002Fpre\u003E\u003C\u002Fdiv\u003E\u003Cp\u003E\u003Cfigure\u003E\u003Cimg src=\&https:\u002F\u002Fpic4.zhimg.com\u002Fv2-c979dab9a9d0c9e9e79a_b.jpg\& data-rawwidth=\&635\& data-rawheight=\&299\& class=\&origin_image zh-lightbox-thumb\& width=\&635\& data-original=\&https:\u002F\u002Fpic4.zhimg.com\u002Fv2-c979dab9a9d0c9e9e79a_r.jpg\&\u003E\u003C\u002Ffigure\u003E数据集本身是明细数据,而对于统计某个离散变量出现的频次时,geom_bar()函数中stat(统计转换)参数只能设置为默认,即'count'。\u003C\u002Fp\u003E\u003Cp\u003E\u003Cstrong\u003E当然,如果需要对明细数据中的某个离散变量进行聚合(均值、求和、最大、最小、方差等)后再绘制条形图的话,建议先使用dplyr包中的group_by()函数和summarize()函数实现数据汇总,具体可参见:\u003C\u002Fstrong\u003E\u003C\u002Fp\u003E\u003Cp\u003E强大的dplyr包实现数据预处理\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp\u003E\u003Cstrong\u003E从x轴的数据类型来看:有字符型的x值也有数值型的x值\u003C\u002Fstrong\u003E\u003C\u002Fp\u003E\u003Cp\u003E上面的两幅图对应的x轴均为离散的字符型值,如果x值是数值型时,该如何正确绘制条形图?\u003C\u002Fp\u003E\u003Cdiv class=\&highlight\&\u003E\u003Cpre\u003E\u003Ccode class=\&language-text\&\u003E\u003Cspan\u003E\u003C\u002Fspan\u003Eset.seed(1234)\nx &- sample(c(1,2,4,6,7), size = 1000, replace = TRUE, prob = c(0.1,0.2,0.2,0.3,0.2))\nggplot(data = data.frame(x = x), mapping = aes(x = x, y = ..count..)) + geom_bar(stat = 'count')\n\u003C\u002Fcode\u003E\u003C\u002Fpre\u003E\u003C\u002Fdiv\u003E\u003Cp\u003E\u003Cfigure\u003E\u003Cimg src=\&https:\u002F\u002Fpic4.zhimg.com\u002Fv2-c761bc86e2dc4fa06c93d_b.jpg\& data-rawwidth=\&655\& data-rawheight=\&294\& class=\&origin_image zh-lightbox-thumb\& width=\&655\& data-original=\&https:\u002F\u002Fpic4.zhimg.com\u002Fv2-c761bc86e2dc4fa06c93d_r.jpg\&\u003E\u003C\u002Ffigure\u003E如果直接使用数值型变量作为条形图的x轴,我们会发现条形图之间产生空缺,这个空缺其实对应的是3和5两个值,这样的图形并不美观。为了能够使条形图之间不存在类似的空缺,\u003Cstrong\u003E需要将数值型的x转换为因子\u003C\u002Fstrong\u003E,即factor(x),如下图所示:\u003C\u002Fp\u003E\u003Cdiv class=\&highlight\&\u003E\u003Cpre\u003E\u003Ccode class=\&language-text\&\u003E\u003Cspan\u003E\u003C\u002Fspan\u003Eggplot(data = data.frame(x = x3), mapping = aes(x = factor(x), y = ..count..)) + geom_bar(stat = 'count')\n\u003C\u002Fcode\u003E\u003C\u002Fpre\u003E\u003C\u002Fdiv\u003E\u003Cfigure\u003E\u003Cimg src=\&https:\u002F\u002Fpic2.zhimg.com\u002Fv2-8268cdf58dc28f492f5f9af2346f66da_b.jpg\& data-rawwidth=\&645\& data-rawheight=\&306\& class=\&origin_image zh-lightbox-thumb\& width=\&645\& data-original=\&https:\u002F\u002Fpic2.zhimg.com\u002Fv2-8268cdf58dc28f492f5f9af2346f66da_r.jpg\&\u003E\u003C\u002Ffigure\u003E\u003Cp\u003E上面几幅图的颜色均为灰色的,显得并不是那么亮眼,为了使颜色更加丰富多彩,可以在geom_bar()函数内通过\u003Cstrong\u003Efill参数可colour参数\u003C\u002Fstrong\u003E设置条形图的填充色和边框色,例如:\u003C\u002Fp\u003E\u003Cdiv class=\&highlight\&\u003E\u003Cpre\u003E\u003Ccode class=\&language-text\&\u003E\u003Cspan\u003E\u003C\u002Fspan\u003Eggplot(data = data.frame(x = x), mapping = aes(x = factor(x), y = ..count..)) + geom_bar(stat = 'count', fill = 'steelblue', colour = 'darkred')\n\u003C\u002Fcode\u003E\u003C\u002Fpre\u003E\u003C\u002Fdiv\u003E\u003Cp\u003E关于颜色的选择可以在R控制台中\u003Cstrong\u003E输入colours()\u003C\u002Fstrong\u003E,将返回657种颜色的字符。如果想查看所有含红色的颜色值,可以\u003Cstrong\u003E输入colours()[grep('red', colours())]\u003C\u002Fstrong\u003E返回27种红色。\u003C\u002Fp\u003E\u003Cp\u003E绘制簇条形图\u003C\u002Fp\u003E\u003Cp\u003E以上绘制的条形图均是基于一个离散变量作为x轴,如果想绘制两个离散变量的条形图即簇条形图该如何处理呢?具体见下方例子:\u003C\u002Fp\u003E\u003Cdiv class=\&highlight\&\u003E\u003Cpre\u003E\u003Ccode class=\&language-text\&\u003E\u003Cspan\u003E\u003C\u002Fspan\u003Ex &- rep(1:5, each = 3)\ny &- rep(c('A','B','C'),times = 5)\nset.seed(1234)\nz &- round(runif(min = 10, max = 20, n = 15))\ndf &- data.frame(x = x, y = y, z = z)\nggplot(data = df, mapping = aes(x = factor(x), y = z, fill = y)) + geom_bar(stat = 'identity', position = 'dodge')\n\u003C\u002Fcode\u003E\u003C\u002Fpre\u003E\u003C\u002Fdiv\u003E\u003Cfigure\u003E\u003Cimg src=\&https:\u002F\u002Fpic2.zhimg.com\u002Fv2-a581a6cb_b.jpg\& data-rawwidth=\&644\& data-rawheight=\&317\& class=\&origin_image zh-lightbox-thumb\& width=\&644\& data-original=\&https:\u002F\u002Fpic2.zhimg.com\u002Fv2-a581a6cb_r.jpg\&\u003E\u003C\u002Ffigure\u003E\u003Cp\u003E对于簇条形图\u003Cstrong\u003E只需在ggplot()函数的aes()参数中将其他离散变量赋给fill参数即可\u003C\u002Fstrong\u003E。这里的position参数表示条形图的摆放形式,默认为堆叠式(stack),还可以是百分比的堆叠式。下面分别设置这两种参数,查看一下条形图的摆放形式。\u003C\u002Fp\u003E\u003Cp\u003E\u003Cstrong\u003E堆叠式:\u003C\u002Fstrong\u003E\u003C\u002Fp\u003E\u003Cdiv class=\&highlight\&\u003E\u003Cpre\u003E\u003Ccode class=\&language-text\&\u003E\u003Cspan\u003E\u003C\u002Fspan\u003Eggplot(data = df, mapping = aes(x = factor(x), y = z, fill = y)) + geom_bar(stat = 'identity', position = 'stack')\n\u003C\u002Fcode\u003E\u003C\u002Fpre\u003E\u003C\u002Fdiv\u003E\u003Cp\u003E\u003Cfigure\u003E\u003Cimg src=\&https:\u002F\u002Fpic1.zhimg.com\u002Fv2-bcccc4551b4dab30c99ff14_b.jpg\& data-rawwidth=\&671\& data-rawheight=\&322\& class=\&origin_image zh-lightbox-thumb\& width=\&671\& data-original=\&https:\u002F\u002Fpic1.zhimg.com\u002Fv2-bcccc4551b4dab30c99ff14_r.jpg\&\u003E\u003C\u002Ffigure\u003E\u003Cstrong\u003E发现一个问题,条形图的堆叠顺序与图例顺序恰好相反\u003C\u002Fstrong\u003E,这个问题该如何处理呢?很简单,\u003Cstrong\u003E只需再添加guides()函数\u003C\u002Fstrong\u003E进行设置即可,如下所示:\u003C\u002Fp\u003E\u003Cdiv class=\&highlight\&\u003E\u003Cpre\u003E\u003Ccode class=\&language-text\&\u003E\u003Cspan\u003E\u003C\u002Fspan\u003Eggplot(data = df, mapping = aes(x = factor(x), y = z, fill = y)) + geom_bar(stat = 'identity', position = 'stack') + guides(fill = guide_legend(reverse = TRUE))\n\u003C\u002Fcode\u003E\u003C\u002Fpre\u003E\u003C\u002Fdiv\u003E\u003Cp\u003E\u003Cfigure\u003E\u003Cimg src=\&https:\u002F\u002Fpic3.zhimg.com\u002Fv2-1a0d1b7dcd2ad11dc6b9fb_b.jpg\& data-rawwidth=\&604\& data-rawheight=\&309\& class=\&origin_image zh-lightbox-thumb\& width=\&604\& data-original=\&https:\u002F\u002Fpic3.zhimg.com\u002Fv2-1a0d1b7dcd2ad11dc6b9fb_r.jpg\&\u003E\u003C\u002Ffigure\u003Eguides()函数将图例引到fill属性中,再使图例反转即可。\u003C\u002Fp\u003E\u003Cp\u003E\u003Cstrong\u003E百分比堆叠式:\u003C\u002Fstrong\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cdiv class=\&highlight\&\u003E\u003Cpre\u003E\u003Ccode class=\&language-text\&\u003E\u003Cspan\u003E\u003C\u002Fspan\u003Eggplot(data = df, mapping = aes(x = factor(x), y = z, fill = y)) + geom_bar(stat = 'identity', position = 'fill')\n\u003C\u002Fcode\u003E\u003C\u002Fpre\u003E\u003C\u002Fdiv\u003E\u003Cfigure\u003E\u003Cimg src=\&https:\u002F\u002Fpic3.zhimg.com\u002Fv2-8c1c18f7b62a8491aced4a_b.jpg\& data-rawwidth=\&634\& data-rawheight=\&329\& class=\&origin_image zh-lightbox-thumb\& width=\&634\& data-original=\&https:\u002F\u002Fpic3.zhimg.com\u002Fv2-8c1c18f7b62a8491aced4a_r.jpg\&\u003E\u003C\u002Ffigure\u003E\u003Cp\u003E\u003Cstrong\u003E颜色配置:\u003C\u002Fstrong\u003E\u003C\u002Fp\u003E\u003Cp\u003E同样,如果觉得R自动配置的填充色不好看,还可以根据自定义的形式更改条形图的填充色,具体\u003Cstrong\u003E使用scale_fill_brewer()和scale_fill_manual()函数\u003C\u002Fstrong\u003E进行颜色设置。\u003C\u002Fp\u003E\u003Cp\u003E\u003Cstrong\u003Escale_fill_brewer()函数\u003C\u002Fstrong\u003E使用R自带的ColorBrewer画板\u003C\u002Fp\u003E\u003Cdiv class=\&highlight\&\u003E\u003Cpre\u003E\u003Ccode class=\&language-text\&\u003E\u003Cspan\u003E\u003C\u002Fspan\u003Eggplot(data = df, mapping = aes(x = factor(x), y = z, fill = y)) + geom_bar(stat = 'identity', position = 'dodge') + scale_fill_brewer(palette = 'Accent')\n\u003C\u002Fcode\u003E\u003C\u002Fpre\u003E\u003C\u002Fdiv\u003E\u003Cp\u003E\u003Cfigure\u003E\u003Cimg src=\&https:\u002F\u002Fpic3.zhimg.com\u002Fv2-15bde5d55d1cbfd8157aa31dde28bdb7_b.jpg\& data-rawwidth=\&656\& data-rawheight=\&319\& class=\&origin_image zh-lightbox-thumb\& width=\&656\& data-original=\&https:\u002F\u002Fpic3.zhimg.com\u002Fv2-15bde5d55d1cbfd8157aa31dde28bdb7_r.jpg\&\u003E\u003C\u002Ffigure\u003E具体的调色板颜色可以查看scale_fill_brewer()函数的帮助。\u003C\u002Fp\u003E\u003Cp\u003E\u003Cstrong\u003Escale_fill_manual()函数\u003C\u002Fstrong\u003E允许用户给指定的分类水平设置响应的色彩,个人觉得这个比较方便\u003C\u002Fp\u003E\u003Cdiv class=\&highlight\&\u003E\u003Cpre\u003E\u003Ccode class=\&language-text\&\u003E\u003Cspan\u003E\u003C\u002Fspan\u003Ecol &- c('darkred','skyblue','purple')\nggplot(data = df, mapping = aes(x = factor(x), y = z, fill = y)) + geom_bar(stat = 'identity', colour = 'black', position = 'dodge') + scale_fill_manual(values = col, limits = c('B','C','A')) + xlab('x')\n\u003C\u002Fcode\u003E\u003C\u002Fpre\u003E\u003C\u002Fdiv\u003E\u003Cfigure\u003E\u003Cimg src=\&https:\u002F\u002Fpic3.zhimg.com\u002Fv2-dd7e4a6e43d8ce50ad014f4b785b3eb4_b.jpg\& data-rawwidth=\&662\& data-rawheight=\&319\& class=\&origin_image zh-lightbox-thumb\& width=\&662\& data-original=\&https:\u002F\u002Fpic3.zhimg.com\u002Fv2-dd7e4a6e43d8ce50ad014f4b785b3eb4_r.jpg\&\u003E\u003C\u002Ffigure\u003E\u003Cp\u003E\u003Cstrong\u003E该如何绘制有序的条形图?\u003C\u002Fstrong\u003E\u003C\u002Fp\u003E\u003Cdiv class=\&highlight\&\u003E\u003Cpre\u003E\u003Ccode class=\&language-text\&\u003E\u003Cspan\u003E\u003C\u002Fspan\u003E#不经排序的条形图,默认按x值的顺序产生条形图\nx &- c('A','B','C','D','E','F','G')\ny &- c('xx','yy','yy','xx','xx','xx','yy')\nz &- c(10,33,12,9,16,23,11)\ndf &- data.frame(x = x, y = y, z = z)\nggplot(data = df, mapping = aes(x = x, y = z, fill = y)) + geom_bar(stat = 'identity')\n\u003C\u002Fcode\u003E\u003C\u002Fpre\u003E\u003C\u002Fdiv\u003E\u003Cp\u003E\u003Cfigure\u003E\u003Cimg src=\&https:\u002F\u002Fpic4.zhimg.com\u002Fv2-f16ed87ccd4ebcb1525e_b.jpg\& data-rawwidth=\&608\& data-rawheight=\&301\& class=\&origin_image zh-lightbox-thumb\& width=\&608\& data-original=\&https:\u002F\u002Fpic4.zhimg.com\u002Fv2-f16ed87ccd4ebcb1525e_r.jpg\&\u003E\u003C\u002Ffigure\u003E按z值的大小,重新排列条形图的顺序,只需将aes()中x的属性用reorder()函数更改即可。\u003C\u002Fp\u003E\u003Cdiv class=\&highlight\&\u003E\u003Cpre\u003E\u003Ccode class=\&language-text\&\u003E\u003Cspan\u003E\u003C\u002Fspan\u003Eggplot(data = df, mapping = aes(x = reorder(x, z), y = z, fill = y)) + geom_bar(stat = 'identity') + xlab('x')\n\u003C\u002Fcode\u003E\u003C\u002Fpre\u003E\u003C\u002Fdiv\u003E\u003Cfigure\u003E\u003Cimg src=\&https:\u002F\u002Fpic1.zhimg.com\u002Fv2-6e39df4c44bc3809adf33b4eb3bbf595_b.jpg\& data-rawwidth=\&672\& data-rawheight=\&310\& class=\&origin_image zh-lightbox-thumb\& width=\&672\& data-original=\&https:\u002F\u002Fpic1.zhimg.com\u002Fv2-6e39df4c44bc3809adf33b4eb3bbf595_r.jpg\&\u003E\u003C\u002Ffigure\u003E\u003Cp\u003E\u003Cstrong\u003E关于条形图的微调\u003C\u002Fstrong\u003E\u003C\u002Fp\u003E\u003Cp\u003E如何y轴的正负值区分开来,并去除图例\u003C\u002Fp\u003E\u003Cdiv class=\&highlight\&\u003E\u003Cpre\u003E\u003Ccode class=\&language-text\&\u003E\u003Cspan\u003E\u003C\u002Fspan\u003Eset.seed(1234)\nx = 1980 + 1:35\ny = round(100*rnorm(35))\ndf = data.frame(x = x, y = y)\n#判断y是否为正值\ndf &- transform(df, judge = ifelse(y&0, 'Yes', 'No'))\nggplot(data = df, mapping = aes(x = x, y = y, fill = judge)) + geom_bar(stat = 'identity', position = 'identity') + scale_fill_manual(values = c('blue','red'), guide = FALSE) + xlab('Year')\n\u003C\u002Fcode\u003E\u003C\u002Fpre\u003E\u003C\u002Fdiv\u003E\u003Cp\u003E\u003Cfigure\u003E\u003Cimg src=\&https:\u002F\u002Fpic2.zhimg.com\u002Fv2-d914bd79a2a35bdfaa2dde97da723ee3_b.jpg\& data-rawwidth=\&660\& data-rawheight=\&311\& class=\&origin_image zh-lightbox-thumb\& width=\&660\& data-original=\&https:\u002F\u002Fpic2.zhimg.com\u002Fv2-d914bd79a2a35bdfaa2dde97da723ee3_r.jpg\&\u003E\u003C\u002Ffigure\u003Estat参数和position参数均设置为identity,目的是图形绘制不要求对原始数据做任何的变换,包括统计变换和图形变换,排除图例可以通过scale_fill_manual()函数将参数guide设置为FALSE,同时该函数还可以自定义填充色,一举两得。\u003C\u002Fp\u003E\u003Cp\u003E\u003Cstrong\u003E调整条形图的条形宽度和条形间距\u003C\u002Fstrong\u003E\u003C\u002Fp\u003E\u003Cp\u003Egeom_bar()函数可以非常灵活的将条形图的条形宽度进行变宽或变窄设置,具体通过函数的width参数实现,width的最大值为1,默认为0.9。\u003C\u002Fp\u003E\u003Cdiv class=\&highlight\&\u003E\u003Cpre\u003E\u003Ccode class=\&language-text\&\u003E\u003Cspan\u003E\u003C\u002Fspan\u003Ex = c('A','B','C','D','E')\ny = c(10,20,15,22,18)\ndf = data.frame(x = x , y = y)\n#不作任何条形宽度的调整\nggplot(data = df, mapping = aes(x = x, y = y)) + geom_bar(stat = 'identity', fill = 'steelblue', colour = 'black')\n\u003C\u002Fcode\u003E\u003C\u002Fpre\u003E\u003C\u002Fdiv\u003E\u003Cfigure\u003E\u003Cimg src=\&https:\u002F\u002Fpic2.zhimg.com\u002Fv2-eaef0a64c1ec0fb37e84adc0540515df_b.jpg\& data-rawwidth=\&672\& data-rawheight=\&315\& class=\&origin_image zh-lightbox-thumb\& width=\&672\& data-original=\&https:\u002F\u002Fpic2.zhimg.com\u002Fv2-eaef0a64c1ec0fb37e84adc0540515df_r.jpg\&\u003E\u003C\u002Ffigure\u003E\u003Cdiv class=\&highlight\&\u003E\u003Cpre\u003E\u003Ccode class=\&language-text\&\u003E\u003Cspan\u003E\u003C\u002Fspan\u003E#使条形宽度变宽\nggplot(data = df, mapping = aes(x = x, y = y)) + geom_bar(stat = 'identity', fill = 'steelblue', colour = 'black', width = 1)\n\u003C\u002Fcode\u003E\u003C\u002Fpre\u003E\u003C\u002Fdiv\u003E\u003Cp\u003E\u003Cfigure\u003E\u003Cimg src=\&https:\u002F\u002Fpic3.zhimg.com\u002Fv2-a6c65a6fbd09_b.jpg\& data-rawwidth=\&657\& data-rawheight=\&305\& class=\&origin_image zh-lightbox-thumb\& width=\&657\& data-original=\&https:\u002F\u002Fpic3.zhimg.com\u002Fv2-a6c65a6fbd09_r.jpg\&\u003E\u003C\u002Ffigure\u003E对于簇条形图来说,还可以调整条形之间的距离,默认情况下,条形图的组内条形间隔为0,具体可通过函数的position_dodge参数实现条形距离的调整,\u003Cstrong\u003E为了美观,一般将条形距离设置的比条形宽度大一点。\u003C\u002Fstrong\u003E\u003C\u002Fp\u003E\u003Cdiv class=\&highlight\&\u003E\u003Cpre\u003E\u003Ccode class=\&language-text\&\u003E\u003Cspan\u003E\u003C\u002Fspan\u003Ex &- rep(1:5, each = 3)\ny &- rep(c('A','B','C'),times = 5)\nset.seed(1234)\nz &- round(runif(min = 10, max = 20, n = 15))\ndf &- data.frame(x = x, y = y, z = z)\n#不作任何条形宽度和条形距离的调整\nggplot(data = df, mapping = aes(x = factor(x), y = z, fill = y)) + geom_bar(stat = 'identity', position = 'dodge')\n\u003C\u002Fcode\u003E\u003C\u002Fpre\u003E\u003C\u002Fdiv\u003E\u003Cfigure\u003E\u003Cimg src=\&https:\u002F\u002Fpic3.zhimg.com\u002Fv2-c7699efdc803c07764fb68_b.jpg\& data-rawwidth=\&651\& data-rawheight=\&323\& class=\&origin_image zh-lightbox-thumb\& width=\&651\& data-original=\&https:\u002F\u002Fpic3.zhimg.com\u002Fv2-c7699efdc803c07764fb68_r.jpg\&\u003E\u003C\u002Ffigure\u003E\u003Cdiv class=\&highlight\&\u003E\u003Cpre\u003E\u003Ccode class=\&language-text\&\u003E\u003Cspan\u003E\u003C\u002Fspan\u003E#调整条形宽度和条形距离\nggplot(data = df, mapping = aes(x = factor(x), y = z, fill = y)) + geom_bar(stat = 'identity', width = 0.5, position = position_dodge(0.7))\n\u003C\u002Fcode\u003E\u003C\u002Fpre\u003E\u003C\u002Fdiv\u003E\u003Cfigure\u003E\u003Cimg src=\&https:\u002F\u002Fpic4.zhimg.com\u002Fv2-c890ecd2f361ddc0fd40df_b.jpg\& data-rawwidth=\&681\& data-rawheight=\&330\& class=\&origin_image zh-lightbox-thumb\& width=\&681\& data-original=\&https:\u002F\u002Fpic4.zhimg.com\u002Fv2-c890ecd2f361ddc0fd40df_r.jpg\&\u003E\u003C\u002Ffigure\u003E\u003Cp\u003E\u003Cstrong\u003E添加数据标签\u003C\u002Fstrong\u003E\u003C\u002Fp\u003E\u003Cp\u003Egeom_text()函数可以方便的在图形中添加数值标签,具体微调从几个案例开始:\u003C\u002Fp\u003E\u003Cdiv class=\&highlight\&\u003E\u003Cpre\u003E\u003Ccode class=\&language-text\&\u003E\u003Cspan\u003E\u003C\u002Fspan\u003Ex &- rep(1:5, each = 3)\ny &- rep(c('A','B','C'),times = 5)\nset.seed(1234)\nz &- round(runif(min = 10, max = 20, n = 15))\ndf &- data.frame(x = x, y = y, z = z)\nggplot(data = df, mapping = aes(x = interaction(x,y), y = z, fill = y)) + geom_bar(stat = 'identity') + geom_text(mapping = aes(label = z))\n\u003C\u002Fcode\u003E\u003C\u002Fpre\u003E\u003C\u002Fdiv\u003E\u003Cp\u003E\u003Cfigure\u003E\u003Cimg src=\&https:\u002F\u002Fpic4.zhimg.com\u002Fv2-2d3fee3beb_b.jpg\& data-rawwidth=\&637\& data-rawheight=\&315\& class=\&origin_image zh-lightbox-thumb\& width=\&637\& data-original=\&https:\u002F\u002Fpic4.zhimg.com\u002Fv2-2d3fee3beb_r.jpg\&\u003E\u003C\u002Ffigure\u003E除此之外,还可以调整标签的大小、颜色、位置等\u003C\u002Fp\u003E\u003Cdiv class=\&highlight\&\u003E\u003Cpre\u003E\u003Ccode class=\&language-text\&\u003E\u003Cspan\u003E\u003C\u002Fspan\u003Eggplot(data = df, mapping = aes(x = interaction(x,y), y = z, fill = y)) + geom_bar(stat = 'identity') + ylim(0,max(z)+1) + geom_text(mapping = aes(label = z), size = 8, colour = 'orange', vjust = 1)\n\u003C\u002Fcode\u003E\u003C\u002Fpre\u003E\u003C\u002Fdiv\u003E\u003Cp\u003E\u003Cfigure\u003E\u003Cimg src=\&https:\u002F\u002Fpic4.zhimg.com\u002Fv2-e7f1b666bc65678_b.jpg\& data-rawwidth=\&635\& data-rawheight=\&323\& class=\&origin_image zh-lightbox-thumb\& width=\&635\& data-original=\&https:\u002F\u002Fpic4.zhimg.com\u002Fv2-e7f1b666bc65678_r.jpg\&\u003E\u003C\u002Ffigure\u003Eylim设置条形图中y轴的范围;\u003Cstrong\u003Esize调整标签字体大小\u003C\u002Fstrong\u003E,默认值为5号;\u003Cstrong\u003Ecolour更换标签颜色\u003C\u002Fstrong\u003E;vjust调整标签位置,1为分界线,越大于1,标签越在条形图上界下方,反之则越在条形图上上界上方。\u003C\u002Fp\u003E\u003Cp\u003E对于水平交错的簇条形图,必须通过geom_text()函数中的position_dodge()参数来调整标签位置,\u003Cstrong\u003Ehjust=0.5将标签水平居中放置\u003C\u002Fstrong\u003E。\u003C\u002Fp\u003E\u003Cdiv class=\&highlight\&\u003E\u003Cpre\u003E\u003Ccode class=\&language-text\&\u003E\u003Cspan\u003E\u003C\u002Fspan\u003Eggplot(data = df, mapping = aes(x = x, y = z, fill = y)) + geom_bar(stat = 'identity', position = 'dodge') + geom_text(mapping = aes(label = z), size = 5, colour = 'black', vjust = 1, hjust = .5, position = position_dodge(0.9))\n\u003C\u002Fcode\u003E\u003C\u002Fpre\u003E\u003C\u002Fdiv\u003E\u003Cp\u003E\u003Cfigure\u003E\u003Cimg src=\&https:\u002F\u002Fpic3.zhimg.com\u002Fv2-d6d06ee998_b.jpg\& data-rawwidth=\&648\& data-rawheight=\&309\& class=\&origin_image zh-lightbox-thumb\& width=\&648\& data-original=\&https:\u002F\u002Fpic3.zhimg.com\u002Fv2-d6d06ee998_r.jpg\&\u003E\u003C\u002Ffigure\u003E\u003Cstrong\u003E这里的图形位置与标签位置摆放必须一致,\u003C\u002Fstrong\u003E即图形位置geom_bar()函数中的position = 'dodge'参数,标签位置geom_text()函数中的position = position_dodge(0.9)参数。\u003C\u002Fp\u003E\u003Cp\u003E对于堆叠的簇条形图,必须通过geom_text()函数中的position_stack()参数来调整标签位置,hjust=0.5将标签水平居中放置。\u003C\u002Fp\u003E\u003Cdiv class=\&highlight\&\u003E\u003Cpre\u003E\u003Ccode class=\&language-text\&\u003E\u003Cspan\u003E\u003C\u002Fspan\u003Eggplot(data = df, mapping = aes(x = x, y = z, fill = y)) + geom_bar(stat = 'identity', position = 'stack') + geom_text(mapping = aes(label = z), size = 5, colour = 'black', vjust = 3.5, hjust = .5, position = position_stack())\n\u003C\u002Fcode\u003E\u003C\u002Fpre\u003E\u003C\u002Fdiv\u003E\u003Cp\u003E\u003Cfigure\u003E\u003Cimg src=\&https:\u002F\u002Fpic1.zhimg.com\u002Fv2-c989b542a4c6edac7c22_b.jpg\& data-rawwidth=\&681\& data-rawheight=\&309\& class=\&origin_image zh-lightbox-thumb\& width=\&681\& data-original=\&https:\u002F\u002Fpic1.zhimg.com\u002Fv2-c989b542a4c6edac7c22_r.jpg\&\u003E\u003C\u002Ffigure\u003E这里的图形位置与标签位置摆放必须一致,即图形位置geom_bar()函数中的position = 'stack'参数,标签位置geom_text()函数中的position = position_stack()参数。\u003C\u002Fp\u003E\u003Cp\u003E\u003Cstrong\u003E参考资料\u003C\u002Fstrong\u003E\u003C\u002Fp\u003E\u003Cp\u003ER数据可视化手册\u003C\u002Fp\u003E\u003Cp\u003ER语言_ggplot2:数据分析与图形艺术\u003C\u002Fp\u003E\u003Cbr\u003E\u003Cp\u003E----------------------------------------------\u003C\u002Fp\u003E\u003Cp\u003E作者:刘顺祥\u003C\u002Fp\u003E\u003Cp\u003E出处:\u003Ca href=\&http:\u002F\u002Flink.zhihu.com\u002F?target=https%3A\u002F\u002Fask.hellobi.com\u002Fblog\u002Flsxxx2011\& class=\& wrap external\& target=\&_blank\& rel=\&nofollow noreferrer\&\u003E刘顺祥博客\u003C\u002Fa\u003E\u003C\u002Fp\u003E\u003Cp\u003E公众号:每天进步一点点C\u002Fp\u003E\u003Cp\u003E\u003Cb\u003E大家也可以加小编微信:tswenqu,进R语言中文社区 交流群,可以跟各位老师互相交流\u003C\u002Fb\u003E\u003C\u002Fp\u003E&,&state&:&published&,&sourceUrl&:&&,&pageCommentsCount&:0,&canComment&:false,&snapshotUrl&:&&,&slug&:,&publishedTime&:&T11:53:35+08:00&,&url&:&\u002Fp\u002F&,&title&:&手把手教你使用ggplot2绘制条形图&,&summary&:&数据分析报告中经常会看见各种各样的条形图,如简单条形图、水平交错条形图、堆叠条形图、堆叠百分比条形图等,本文从R语言的角度,教大家绘制各式各样的条形图。 \u003Cstrong\u003E绘制离散单变量的条形图\u003C\u002Fstrong\u003E从数据形式来看:有汇总好的数据集和明细数据集使用汇总好的数据集绘…&,&reviewingCommentsCount&:0,&meta&:{&previous&:null,&next&:null},&commentPermission&:&anyone&,&commentsCount&:2,&likesCount&:23}},&annotationDetail&:null,&commentsCount&:15,&likesCount&:63,&FULLINFO&:true}},&User&:{&liangyong1107&:{&isFollowed&:false,&name&:&李晓文&,&headline&:&&,&avatarUrl&:&https:\u002F\u002Fpic3.zhimg.com\u002Fv2-92ddc3c7f56eca5aa78b2e8_s.jpg&,&isFollowing&:false,&type&:&people&,&slug&:&liangyong1107&,&bio&:&&,&hash&:&40526e74fffbc0be71bc415f&,&uid&:48,&isOrg&:false,&description&:&&,&badge&:{&identity&:null,&bestAnswerer&:null},&profileUrl&:&https:\u002F\u002Fwww.zhihu.com\u002Fpeople\u002Fliangyong1107&,&avatar&:{&id&:&v2-92ddc3c7f56eca5aa78b2e8&,&template&:&https:\u002F\u002Fpic3.zhimg.com\u002F{id}_{size}.jpg&},&isOrgWhiteList&:false,&isBanned&:false}},&Comment&:{},&favlists&:{}},&me&:{},&global&:{&experimentFeatures&:{&ge3&:&ge3_9&,&ge2&:&ge2_1&,&growthSearch&:&s2&,&nwebQAGrowth&:&experiment&,&qawebRelatedReadingsContentControl&:&close&,&liveStore&:&ls_a2_b2_c1_f2&,&qawebThumbnailAbtest&:&new&,&nwebSearch&:&nweb_search_heifetz&,&rt&:&y&,&showVideoUploadAttention&:&true&,&isOffice&:&false&,&enableTtsPlay&:&post&,&editorVideomakerEntrance&:&e&,&newQuestionDiversion&:&true&,&enableVoteDownReasonMenu&:&enable&,&newLiveFeedMediacard&:&new&,&newMobileAppHeader&:&true&,&androidPassThroughPush&:&all&,&np&:&1&,&hybridZhmoreVideo&:&no&,&nwebGrowthPeople&:&default&,&nwebSearchSuggest&:&default&,&qrcodeLogin&:&qrcode&,&seE&:&1&,&isf8&:&1&,&isShowUnicomFreeEntry&:&unicom_free_entry_off&,&newMobileColumnAppheader&:&new_header&,&feedHybridTopicRecomButtonIcon&:&yes&,&androidDbRecommendAction&:&open&,&zcmLighting&:&zcm&,&androidDbFeedHashTagStyle&:&button&,&appStoreRateDialog&:&close&,&default&:&None&,&isNewNotiPanel&:&no&,&wechatShareModal&:&wechat_share_modal_show&,&growthBanner&:&default&,&androidProfilePanel&:&panel_b&}},&columns&:{&next&:{},&rshequ&:{&following&:false,&canManage&:false,&href&:&\u002Fapi\u002Fcolumns\u002Frshequ&,&name&:&R语言中文社区&,&creator&:{&slug&:&liangyong1107&},&url&:&\u002Frshequ&,&slug&:&rshequ&,&avatar&:{&id&:&v2-c27619baa137e5cc4a17f000cea10dc1&,&template&:&https:\u002F\u002Fpic1.zhimg.com\u002F{id}_{size}.jpg&}}},&columnPosts&:{},&columnSettings&:{&colomnAuthor&:[],&uploadAvatarDetails&:&&,&contributeRequests&:[],&contributeRequestsTotalCount&:0,&inviteAuthor&:&&},&postComments&:{},&postReviewComments&:{&comments&:[],&newComments&:[],&hasMore&:true},&favlistsByUser&:{},&favlistRelations&:{},&promotions&:{},&switches&:{&couldSetPoster&:false},&draft&:{&titleImage&:&&,&titleImageSize&:{},&isTitleImageFullScreen&:false,&canTitleImageFullScreen&:false,&title&:&&,&titleImageUploading&:false,&error&:&&,&content&:&&,&draftLoading&:false,&globalLoading&:false,&pendingVideo&:{&resource&:null,&error&:null}},&drafts&:{&draftsList&:[],&next&:{}},&config&:{&userNotBindPhoneTipString&:{}},&recommendPosts&:{&articleRecommendations&:[],&columnRecommendations&:[]},&env&:{&edition&:{&baidu&:false,&yidianzixun&:false,&qqnews&:false},&isAppView&:false,&appViewConfig&:{&content_padding_top&:128,&content_padding_bottom&:56,&content_padding_left&:16,&content_padding_right&:16,&title_font_size&:22,&body_font_size&:16,&is_dark_theme&:false,&can_auto_load_image&:true,&app_info&:&OS=iOS&},&isApp&:false,&userAgent&:{&ua&:&Mozilla\u002F5.0 (compatible, MSIE 11, Windows NT 6.3; Trident\u002F7.0; rv:11.0) like Gecko&,&browser&:{&name&:&IE&,&version&:&11&,&major&:&11&},&engine&:{&version&:&7.0&,&name&:&Trident&},&os&:{&name&:&Windows&,&version&:&8.1&},&device&:{},&cpu&:{}}},&message&:{&newCount&:0},&pushNotification&:{&newCount&:0}}}

我要回帖

更多关于 聊天记录分析 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信