R爬虫可视化第1季-卫视实时收视率对比

2023-10-11 22:50

本文主要是介绍R爬虫可视化第1季-卫视实时收视率对比,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言:

几经思考,终于下定决心开设这个公众号,希望在这里与大家分享一些关于数据分析&数据挖掘有意思的事情,如果对于内容有任何的意见或建议,都希望大家在评论中不吝赐教。

言归正传,在今后的几期推送中,会与大家分享一些自己用R语言爬虫+可视化实现的案例,第一期就从本人最喜欢看的电视说起,分析各省级卫视收视率。

部分篇章代码量较多,可能无法在正文中全部给出,之后会在公众号中给出代码的下载地址。

相关Package:

## 爬虫相关包	
library(RCurl)	
library(XML)	
library(RSelenium)	
## 数据读取相关包(表格和地图文件)	
library(data.table)	
library(maptools)	
## R中实现sql代码处理表格	
library(sqldf)	
## 数据可视化相关包	
library(ggplot2)    	
library(ggthemes)

数据爬取:

实时数据可以在欢娱网(http://www.csm-huan.com)中获得,该网站数据的爬取需要借助RSelenium包获得动态页面,网站的界面如下:

0?wx_fmt=png

爬取的核心代码:

ele_str1 <- sprintf('//*[@id="tbody"]/tr[%d]/td[1]/a',i)	
elem_1 <- getNodeSet(htmlParse(remDr$findEleent(using = "xpath",ele_str1)	$getElementAttrbute("outerHTML")[[1]],ecoding='utf-8'),	'//a[@href="javascript:vid(0);"]')	
station <- sapply(elem_1,xmlValue)

剩下要做的就是循环得到每个电视台的数据,其中i为循环变量

地图数据读取、融合:

地图数据的处理需要完成两部分工作,包括地图shp文件读取与收视率数据融合

数据读取:

china_map <- readShapePoly("中国地图shp格式/china_basic_map/bou2_4p.shp")	
china_map1 <- china_map@data	
china_map1$id <- 0:(nrow(china_map1)-1)	
china_map1$id <- as.character(china_map1$id)	
china_map2 <- fortify(china_map)	
china_map3 <- left_join(china_map2, china_map1,by='id')	
colnames(province_rate)[2] <- 'NAME'	
china_map3$NAME <- as.character(china_map3$NAME)

收视率数据融合:

province_rate <- sqldf('select b.*,a.*	from tv_rate a 	inner join province b on a.station = b.station')	
province_rate$rate <- as.numeric(substr(as.character(province_rate$rate),1,6))	
china_map4 <- left_join(china_map3,province_rate,by = 'NAME')

数据可视化-全国地图展示数据:

完成了前期数据准备,就要进入到了数据可视化的阶段,我们选取了ggplot包进行数据的可视化,并且结合ggthemes包提供的一些不错的配色方案,提高展示的可读性。

首先绘制的是全国地图数据,我们用颜色的深浅表示收视率的高低,分别选取了ggthems包中theme_economist,theme_wsj,theme_map三种配色方案作图进行对比

0?wx_fmt=png

0?wx_fmt=png

0?wx_fmt=png

附作图代码:

p <- ggplot() +	geom_polygon(data=china_map4,aes(x=long,y=lat,group=group,fill=收视率百分比),col='pink')+coord_map()+	scale_fill_gradient2(low='white',high='#DC143C',mid='orange',	midpoint=max(province_rate$rate,na.rm = TRUE)/2)+	xlim(73,137)+ylim(17,55)+	geom_text(data=province_rate,aes(x=longitude,y=latitude,label=province_name),size=2.8,alpha=0.7)+	ggtitle(label = sprintf('实时收视率%s',format(Sys.time(),format="%Y/%m/%d %H:%M")))+	theme_map()+theme(panel.grid.major = element_blank(), 	panel.grid.minor = element_blank(),	axis.ticks = element_blank(),	axis.line = element_blank(),	axis.text = element_blank(),	axis.title = element_blank(),	legend.position = 'NONE',	plot.title = element_text(hjust=0.5,size=25)	) 	
print(p)

数据可视化-分省市对比数据:

与上一部分相比,加入了facet_wrap函数,实现了将各个省市轮廓进行切分,并且根据收视率的高低进行排序,提高可读性,以下分别是上午,下午,晚上三个时段的数据。

0?wx_fmt=png

0?wx_fmt=png

我们不难发现,不同收视段的排名靠前节目有明显不同,上午收看电视的观众更加关注股市和民生类节目,下午则更加注重养生,晚上则是娱乐节目的天下,我们可以针对于此进行更加深入的分析。

这篇关于R爬虫可视化第1季-卫视实时收视率对比的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/191385

相关文章

基于Python打造一个可视化FTP服务器

《基于Python打造一个可视化FTP服务器》在日常办公和团队协作中,文件共享是一个不可或缺的需求,所以本文将使用Python+Tkinter+pyftpdlib开发一款可视化FTP服务器,有需要的小... 目录1. 概述2. 功能介绍3. 如何使用4. 代码解析5. 运行效果6.相关源码7. 总结与展望1

Python Dash框架在数据可视化仪表板中的应用与实践记录

《PythonDash框架在数据可视化仪表板中的应用与实践记录》Python的PlotlyDash库提供了一种简便且强大的方式来构建和展示互动式数据仪表板,本篇文章将深入探讨如何使用Dash设计一... 目录python Dash框架在数据可视化仪表板中的应用与实践1. 什么是Plotly Dash?1.1

Python实现Microsoft Office自动化的几种方式及对比详解

《Python实现MicrosoftOffice自动化的几种方式及对比详解》办公自动化是指利用现代化设备和技术,代替办公人员的部分手动或重复性业务活动,优质而高效地处理办公事务,实现对信息的高效利用... 目录一、基于COM接口的自动化(pywin32)二、独立文件操作库1. Word处理(python-d

Java常用注解扩展对比举例详解

《Java常用注解扩展对比举例详解》:本文主要介绍Java常用注解扩展对比的相关资料,提供了丰富的代码示例,并总结了最佳实践建议,帮助开发者更好地理解和应用这些注解,需要的朋友可以参考下... 目录一、@Controller 与 @RestController 对比二、使用 @Data 与 不使用 @Dat

python中字符串拼接的几种方法及优缺点对比详解

《python中字符串拼接的几种方法及优缺点对比详解》在Python中,字符串拼接是常见的操作,Python提供了多种方法来拼接字符串,每种方法有其优缺点和适用场景,以下是几种常见的字符串拼接方法,需... 目录1. 使用 + 运算符示例:优缺点:2. 使用&nbsjsp;join() 方法示例:优缺点:3

C++ 各种map特点对比分析

《C++各种map特点对比分析》文章比较了C++中不同类型的map(如std::map,std::unordered_map,std::multimap,std::unordered_multima... 目录特点比较C++ 示例代码 ​​​​​​代码解释特点比较1. std::map底层实现:基于红黑

使用Folium在Python中进行地图可视化的操作指南

《使用Folium在Python中进行地图可视化的操作指南》在数据分析和可视化领域,地图可视化是一项非常重要的技能,它能够帮助我们更直观地理解和展示地理空间数据,Folium是一个基于Python的地... 目录引言一、Folium简介与安装1. Folium简介2. 安装Folium二、基础使用1. 创建

Golang中拼接字符串的6种方式性能对比

《Golang中拼接字符串的6种方式性能对比》golang的string类型是不可修改的,对于拼接字符串来说,本质上还是创建一个新的对象将数据放进去,主要有6种拼接方式,下面小编就来为大家详细讲讲吧... 目录拼接方式介绍性能对比测试代码测试结果源码分析golang的string类型是不可修改的,对于拼接字

基于Python开发PDF转PNG的可视化工具

《基于Python开发PDF转PNG的可视化工具》在数字文档处理领域,PDF到图像格式的转换是常见需求,本文介绍如何利用Python的PyMuPDF库和Tkinter框架开发一个带图形界面的PDF转P... 目录一、引言二、功能特性三、技术架构1. 技术栈组成2. 系统架构javascript设计3.效果图

MySQL表锁、页面锁和行锁的作用及其优缺点对比分析

《MySQL表锁、页面锁和行锁的作用及其优缺点对比分析》MySQL中的表锁、页面锁和行锁各有特点,适用于不同的场景,表锁锁定整个表,适用于批量操作和MyISAM存储引擎,页面锁锁定数据页,适用于旧版本... 目录1. 表锁(Table Lock)2. 页面锁(Page Lock)3. 行锁(Row Lock