同花順股票分數視覺化 | R爬蟲&視覺化第3季
歡迎關注天善智慧,我們是專注於商業智慧BI,人工智慧AI,大資料分析與挖掘領域的垂直社群,學習,問答、求職一站式搞定!
本文作者:天善智慧社群專家徐麟
天善智慧社群地址:https://www.hellobi.com/
往期推薦:
前言
前兩期的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)
爬取資料
我們爬取了同花順當天對股票的打分,同花順作為一個專業機構,每天對於個股都會有技術面、資金面、訊息面、行業面、基本面等五個方面的打分。我們會分別爬取這五部分的分數,並計算其總分。
![3901436-82522611c96f2535.png](https://i.iter01.com/images/460eb1e1a889d9ad8fd86900da2d4ef29e765a54eb5b355eaa6e19c26ea51bb9.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))
![3901436-9b0d682c95b0cb9f.png](https://i.iter01.com/images/6cc6fb8cf409e5006f8768088d757bb8592ed1812cffe7f6b9864859a891b19c.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)
![3901436-4a23d8d151612b37.png](https://i.iter01.com/images/1fae5d8d8ba70bb666a14b8eb083cd236eb23daec27bc137ecfb1be52a895361.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 in1: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)
}
```
輸出效果如下:
![3901436-1cc8353c127252f1.png](https://i.iter01.com/images/90548e154b095a50194ceb5f75a0bf4e094cc9afabe531e453b125b1ea5b5c05.png)
R針對股票可以做更加細緻的分析,如quantmod包可以直接獲得股票的每日收盤價等重要資訊。比如如下兩行程式碼就可以畫出讓人望塵莫及,買1手都要斥巨資的貴州茅臺的K線圖(需要注意的是R中使用的是美股K線圖,紅綠表示與A股相反)
getSymbols("600519.ss",src="yahoo",from="2017-01-01", to='2017-10-30')
chartSeries(`600519.SS`)
![3901436-a83c337086a9a187.png](https://i.iter01.com/images/cdc3a4d7b221ab014207f654014b0ce2dfc5a7632cb7ac354125c7e51489fec3.png)
因為本人並不炒股,對股市沒有仔細的研究,所以本文只是做一些爬取&視覺化的內容,希望對股票有深入研究的朋友能夠與我交流,共同學習。
歡迎關注天善智慧www.hellobi.com,我們是專注於商業智慧BI,人工智慧AI,大資料分析與挖掘領域的垂直社群,學習,問答、求職一站式搞定!
本文作者:天善智慧社群專家徐麟
相關文章
- 最新Python爬蟲和資料視覺化Python爬蟲視覺化
- 3D視覺化|疫情態勢視覺化3D視覺化
- Python爬取股票資訊,並實現視覺化資料Python視覺化
- 視覺化影像處理 | 視覺化訓練器 | 影像分類視覺化
- 視覺化視覺化
- 疫情視覺化part3視覺化
- 視覺化portainer視覺化AI
- 【Tensorflow_DL_Note16】TensorFlow視覺化學習3_引數,準確率的視覺化視覺化
- 資料視覺化基本原理——視覺化模型視覺化模型
- CNN視覺化技術總結(三)--類視覺化CNN視覺化
- 【NBA 視覺化】使用Pyecharts實現湖人19-20賽季投籃資料視覺化~視覺化Echarts
- 什麼是資料視覺化?hightopo資料視覺化助力企業數字化視覺化
- 視覺化數學分析軟體MATLAB R2021b for Mac視覺化MatlabMac
- 3D視覺化打造智慧工廠數字化管理3D視覺化
- 視覺化之資料視覺化最強工具推薦視覺化
- R語言之視覺化①②熱圖繪製2R語言視覺化
- 用python寫一個豆瓣短評通用爬蟲(登入、爬取、視覺化)Python爬蟲視覺化
- $\Beta$分佈推導與視覺化視覺化
- github repository視覺化Github視覺化
- vue地圖視覺化 ArcGIS篇(3)Vue地圖視覺化
- 3d視覺化建模定製3D視覺化
- 3d視覺化模具定製3D視覺化
- (在模仿中精進資料視覺化04)舊金山街道樹木分佈視覺化視覺化
- 爬取B站視訊播放量及資料視覺化視覺化
- R語言:KEGG富集、視覺化教程,附程式碼R語言視覺化
- R視覺化:plot函式基礎操作,小白教程視覺化函式
- 資料視覺化如何選擇合適的視覺化圖表?視覺化
- 資料視覺化Seaborn從零開始學習教程(三) 資料分佈視覺化篇視覺化
- (在模仿中精進資料視覺化07)星球研究所大壩分佈視覺化視覺化
- Shader 函式視覺化函式視覺化
- 資料視覺化【十五】視覺化
- Numpy的Matplotlib視覺化視覺化
- 視覺化速成指南-大小視覺化
- git diff 視覺化配置Git視覺化
- 資料看板視覺化視覺化
- 視覺化搭建 - keepAlive 模式視覺化模式
- Matlab資料視覺化Matlab視覺化
- 資料視覺化的基本原理——視覺通道視覺化
- 3d視覺化產品定製3D視覺化