R爬虫&可视化第3季-同花顺股票分数可视化

0?wx_fmt=gif

前言:

前两期的R爬虫&可视化专题中,与大家分别分享了关于电视台收视率以及诗词的爬取和可视化的内容,得到了大家许多的反馈,希望在今后的内容中能够不断提高。

第三期的专题中,会与大家聊聊非常火的股市,关于本期内容,引用一句非常经典的话“我们不生产数据,我们只是数据的搬运工”。影响股市大盘涨跌的因素非常多,到了个股走势就更加扑朔迷离,所谓“股市有风险,投资需谨慎”,本文只是与大家分享一些爬虫&可视化的内容,不能作为大家选股的依据。

相关Package:

## 字符串处理、汇总数据	
library(plyr)	
library(stringr)	
library(sqldf)	
## 爬虫相关	
library(RCurl)	
library(XML)	
## 读取数据	
library(data.table)	
## 数据可视化	
library(ggplot2)	
library(ggthemes)	
library(ggradar)	
## markdown 文件生成	
library(knitr)	
library(rmarkdown)

爬取数据:

我们爬取了同花顺当天对股票的打分,同花顺作为一个专业机构,每天对于个股都会有技术面、资金面、消息面、行业面、基本面等五个方面的打分。我们会分别爬取这五部分的分数,并计算其总分。

0?wx_fmt=png

爬取代码如下:

url <- paste('http://doctor.10jqka.com.cn/',substr(point$rcode[i],1,6),'/',sep='')	
temp <- getURL(url,.encoding='utf-8')	
doc <-htmlParse(temp)	
points <- getNodeSet(doc,'//div[@class="chart_base"]/	
                  div[@class="column_3d"]/div[@class="label"]')	
points <- sapply(points,xmlValue)	
point$technical[i] <- as.numeric(substr(points[1],1,3))	
point$funds[i] <- as.numeric(substr(points[2],1,3))	
point$message[i] <- as.numeric(substr(points[3],1,3))	
point$trade[i] <- as.numeric(substr(points[4],1,3))	
point$basic[i] <- as.numeric(substr(points[5],1,3))	
point$level[i] <-sapply(getNodeSet(doc,'//span[@class="cur"]'),xmlValue)

数据展示:

首先看一下各主要行业分数的盒型图:

ggplot(data=point_total,aes(x=area,y=total_num))+geom_boxplot()+	
   theme_economist()+ggtitle("主要行业得分分布图")+	
   theme(axis.text.x = element_text(size=7.85),	
         plot.title = element_text(hjust=0.5,size=25))

0?wx_fmt=png

针对某一行业,我们选择其中一部分对比其雷达图:

p <- ggradar(plot.data = subset(point_total,select=c('name','技术面','资金面',	
             '消息面','行业面','基本面'))[1:5,],grid.max=10,grid.mid=5,	
             legend.text.size=7,background.circle.transparency = 0)+	
             theme_wsj()+theme(panel.grid = element_blank(),	
                               axis.line = element_blank(),	
                               axis.text = element_blank())	
print(p)

0?wx_fmt=png

MARKDOWN输出:

下面我们用RMarkdown实现将多只股票的分数变化面积图批量输出的功能:

```{r pressure, echo=FALSE,fig.width=15,fig.height=5}	
library(reshape2)	
library(ggplot2)	
library(ggthemes)	
library(stringr)	
point_total <- read.csv('D:/index/point_total.csv',	
                     header = TRUE)	
point_total$name <- gsub(" ","",point_total$name)	
point_total <- subset(point_total,name %in% c(	
  '****','****','****','****','****','****','****'	
))	
point_total$dt <- substr(point_total$dt,1,5)	
index_name <- unique(point_total$name)	
for(i in 1:length(index_name)){	
  point = subset(point_total,name == index_name[i])	
    print(gsub(" ","",as.character(index_name[i])))	
    names(point)[2:6] <- c('技术面','资金面','消息面','行业面','基本面')	
    point$sum_point <- apply(point[,2:6],1,sum)	
    point$com1 <- paste(point$sum_point,sep='')	
    point$com2 <- paste(point$paiming,sep='')	
    point_view <- melt(point[,c(2:6,9)],id.vars = 'dt',variable.name = '分面')	
    p <- ggplot()+geom_area(aes(x=dt,y=value,fill=分面,group=分面),	
                            data=point_view)+	
      geom_text(aes(x=dt,y=sum_point+2,label=com2),data=point,size=4)+	
      geom_text(aes(x=dt,y=sum_point+4,label=com1),data=point,size=4)+	
        theme_wsj()+theme(	
        panel.grid.major = element_blank()	
      )	
    print(p)	
}	
```

输出效果如下:

0?wx_fmt=png

R针对股票可以做更加细致的分析,如quantmod包可以直接获得股票的每日收盘价等重要信息。比如如下两行代码就可以画出让人望尘莫及,买1手都要斥巨资的贵州茅台的K线图(需要注意的是R中使用的是美股K线图,红绿表示与A股相反)

getSymbols("600519.ss",src="yahoo",from="2017-01-01", to='2017-10-30')   	
chartSeries(`600519.SS`)

0?wx_fmt=png

因为本人并不炒股,对股市没有仔细的研究,所以本文只是做一些爬取&可视化的内容,希望对股票有深入研究的朋友能够与我交流,共同学习。

---------------------------------

如果大家周围有对数据分析&数据挖掘感兴趣的朋友,麻烦在朋友圈帮忙转发一下,让更多的朋友加入我们。有好的文章也可以联系我与大家分享,如果有问题或者建议,可以直接在公众号留言,我会及时回复大家的问题。

R爬虫&可视化专题往期文章:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值