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

相关文章

CSS中的Static、Relative、Absolute、Fixed、Sticky的应用与详细对比

《CSS中的Static、Relative、Absolute、Fixed、Sticky的应用与详细对比》CSS中的position属性用于控制元素的定位方式,不同的定位方式会影响元素在页面中的布... css 中的 position 属性用于控制元素的定位方式,不同的定位方式会影响元素在页面中的布局和层叠关

使用Python和OpenCV库实现实时颜色识别系统

《使用Python和OpenCV库实现实时颜色识别系统》:本文主要介绍使用Python和OpenCV库实现的实时颜色识别系统,这个系统能够通过摄像头捕捉视频流,并在视频中指定区域内识别主要颜色(红... 目录一、引言二、系统概述三、代码解析1. 导入库2. 颜色识别函数3. 主程序循环四、HSV色彩空间详解

OpenCV实现实时颜色检测的示例

《OpenCV实现实时颜色检测的示例》本文主要介绍了OpenCV实现实时颜色检测的示例,通过HSV色彩空间转换和色调范围判断实现红黄绿蓝颜色检测,包含视频捕捉、区域标记、颜色分析等功能,具有一定的参考... 目录一、引言二、系统概述三、代码解析1. 导入库2. 颜色识别函数3. 主程序循环四、HSV色彩空间

Python数据分析与可视化的全面指南(从数据清洗到图表呈现)

《Python数据分析与可视化的全面指南(从数据清洗到图表呈现)》Python是数据分析与可视化领域中最受欢迎的编程语言之一,凭借其丰富的库和工具,Python能够帮助我们快速处理、分析数据并生成高质... 目录一、数据采集与初步探索二、数据清洗的七种武器1. 缺失值处理策略2. 异常值检测与修正3. 数据

使用Python和Matplotlib实现可视化字体轮廓(从路径数据到矢量图形)

《使用Python和Matplotlib实现可视化字体轮廓(从路径数据到矢量图形)》字体设计和矢量图形处理是编程中一个有趣且实用的领域,通过Python的matplotlib库,我们可以轻松将字体轮廓... 目录背景知识字体轮廓的表示实现步骤1. 安装依赖库2. 准备数据3. 解析路径指令4. 绘制图形关键

Linux中的more 和 less区别对比分析

《Linux中的more和less区别对比分析》在Linux/Unix系统中,more和less都是用于分页查看文本文件的命令,但less是more的增强版,功能更强大,:本文主要介绍Linu... 目录1. 基础功能对比2. 常用操作对比less 的操作3. 实际使用示例4. 为什么推荐 less?5.

8种快速易用的Python Matplotlib数据可视化方法汇总(附源码)

《8种快速易用的PythonMatplotlib数据可视化方法汇总(附源码)》你是否曾经面对一堆复杂的数据,却不知道如何让它们变得直观易懂?别慌,Python的Matplotlib库是你数据可视化的... 目录引言1. 折线图(Line Plot)——趋势分析2. 柱状图(Bar Chart)——对比分析3

使用Vue-ECharts实现数据可视化图表功能

《使用Vue-ECharts实现数据可视化图表功能》在前端开发中,经常会遇到需要展示数据可视化的需求,比如柱状图、折线图、饼图等,这类需求不仅要求我们准确地将数据呈现出来,还需要兼顾美观与交互体验,所... 目录前言为什么选择 vue-ECharts?1. 基于 ECharts,功能强大2. 更符合 Vue

基于Go语言实现Base62编码的三种方式以及对比分析

《基于Go语言实现Base62编码的三种方式以及对比分析》Base62编码是一种在字符编码中使用62个字符的编码方式,在计算机科学中,,Go语言是一种静态类型、编译型语言,它由Google开发并开源,... 目录一、标准库现状与解决方案1. 标准库对比表2. 解决方案完整实现代码(含边界处理)二、关键实现细

PostgreSQL 序列(Sequence) 与 Oracle 序列对比差异分析

《PostgreSQL序列(Sequence)与Oracle序列对比差异分析》PostgreSQL和Oracle都提供了序列(Sequence)功能,但在实现细节和使用方式上存在一些重要差异,... 目录PostgreSQL 序列(Sequence) 与 oracle 序列对比一 基本语法对比1.1 创建序