用ggplot2構造期待已久的雷達圖
之前一直苦惱於ggplot函數無法製作雷達圖,心想著既然餅圖可以通過柱形圖+極坐標模擬出來,為啥雷達圖不行。
我嘗試著用折線圖+極坐標來模擬雷達圖(之前在製作餅圖和圓環圖以及玫瑰圖的時候就是這樣做的)。
結果就粗線了以下不倫不類的圖形:
data<-data.frame(Name = c("蘋果","谷歌","臉書","亞馬遜","騰訊"),Company = c("Apple","Google","Facebook","Amozon","Tencent"),Sale2013 = c(5000,3500,2300,2100,3100),Sale2014 = c(5050,3800,2900,2500,3300),Sale2015 = c(5050,4000,3200,2800,3700),Sale2016 = c(6000,4800,4500,3500,4300))
mydata<melt(data,id.vars=c("Name","Company"),variable.name="Year",value.name="Sale")ggplot(mydata,aes(Company,Sale,group=Year,color=Year))+geom_line()+coord_polar(theta = "x")
後來又是在瀏覽r語言論壇時,無意間看到一個圍繞ggplot2包開發的插件——ggradar,果不其然,是專門用於輔助ggplot2製作雷達圖而生的。
接下來我跟大家分享該插件的使用方法:
因為是開發版的,託管在github網站上,所以不能通過普通途徑下載,需要使用devtools工具:
install_github("ricardo-bion/ggradar")
library("ggplot2")
library("ggradar")
下面開始構造數據集:
mydata<-matrix(runif(40,0,1),5,8)
#以上構造了一個值區間為0~1,個數為40的5行8列隨機數矩陣。
rownames(mydata) <- LETTERS[1:5]
#以上使用前五個大寫字母為矩陣行命名;
colnames(mydata) <- c("Apple","Google","Facebook","Amozon","Tencent","Alibaba","Baidu","Twitter")
#使用以上文本向量為矩陣列命名;
mynewdata<-data.frame(mydata)
#將矩陣數據表格轉化為數據框格式作圖數據:
為數據框增加一列文本欄位:
Name<-c("USA","CHN","UK","RUS","JP")
mynewdata<-data.frame(Name,mynewdata)
以上的圖表是默認樣式,ggradar函數對數據格式以及變數值範圍高度敏感,而卻不過多的依賴函數內的參數。ggradar(mynewdata[1,])
可以看出,ggradar函數支持多序列雷達圖,只是對它規定的數據結構很不能理解,為啥不是列代表分類,行代表軸變數呢,跟ggplot的語法還是有一些偏離,不過只要數據構造好之後,作圖函數的語法是相當簡練的。ggradar(mynewdata)
EasyCharts團隊出品
帥的人都關注了EasyCharts團隊^..^~
QQ交流群:454614789
微信公眾號:EasyCharts
更多信息敬請查看: http://easychart.github.io/post/Easycharts/
推薦閱讀:
※【R語言基礎】01.R語言軟體環境搭建及常用操作
※Learn R | 機器學習中的人工神經網路(二)
※knn到底咋回事?(修改版)
※北京歷史天氣可視化