R语言对团队能力结构的可视化

柱状图-饼图--双柱状图--圆环图

####本文通过使用R语言重的ggplot对数据团队中的一些知识结构进行数据可视化
####首先对可视化的数据进行准备--为了无缝重现文中内容--在这里将数据直接给出,而没有采用读取文件的方式。

###思考的时候需要加上时间
library(ggplot2)  ##如果没安装需要安装
##评分采用十分制
labels <- c("统计学","数学","计算机科学","机器学习","数据可视化","领域知识","沟通技巧")
##
needablity <- c(6,5,8,7,6,5,6)
##个人的能力值评估
nameA <- c(2,3,5,6,4,1,2)
nameB <- c(3,5,4,2,3,2,1)
nameC <- c(2,2,1,2,3,5,6)
Thinkdata <- data.frame(labels,needablity,nameA,nameB,nameC,stringsAsFactors=F)
##团队知识体系是一个比较复杂的问题,在这里的可视化只是采取比较同一值取其最大作为其能力值表现

#Thinkdata[,3:5] ##取成员所在的列
teamabilty <- apply(Thinkdata[,3:5] ,1,max)
Thinkdata <- cbind(Thinkdata,teamabilty)
##数据的长格式和宽格式--ggplot的分组只能根据行而不能根据列
library(reshape2) ##如果没安装需要安装
#melt(data, id.vars, measure.vars,variable.name = "variable", ..., na.rm = FALSE, value.name = "value", factorsAsStrings = TRUE)
Transdata <-  melt(Thinkdata, id.vars=c("labels"), measure.vars=c("needablity","teamabilty"),variable.name=c("compare"),value.name = "abiltyvalue", factorsAsStrings = TRUE)

##每个分类的总和是相同的,因为在本例中每个分类是7,所以前七个数之和要等于后七个数字
onedata <- c(14,6,4,3,1,2,5,2,8,6,6,5,4,4)
sum(onedata[1:7])
sum(onedata[8:14])
Trone <- data.frame(Transdata[,1:2],onedata,stringsAsFactors=F)

##绘制图形
 p1 <- ggplot(Thinkdata,aes(x=labels,y=needablity))+geom_bar(stat="identity",position="dodge") +ylim(0,10) 
 p1+xlab("主要能力") + ylab("能力评估值") + ggtitle("解决问题需要的知识架构")

##各个角色的能力评估

p2 <- ggplot(Thinkdata,aes(x=labels,y=nameA ))+geom_bar(stat="identity",position="dodge") +ylim(0,10) +ggtitle("nameA") 
p3 <- ggplot(Thinkdata,aes(x=labels,y=nameB ))+geom_bar(stat="identity",position="dodge") +ylim(0,10) +ggtitle("nameB") 
p4 <- ggplot(Thinkdata,aes(x=labels,y=nameC ))+geom_bar(stat="identity",position="dodge") +ylim(0,10) +ggtitle("nameC") 
    library(grid)  ##如果没安装需要安装
    ##清除当前设备或移动到新的page
    grid.newpage()
    ##用viewport创建视图窗口,并用grid.layout创建布局,同时把布局给视窗
    VP <- viewport(layout = grid.layout(1, 3))
    ##用pushViewport()命令锁定该图层,使之成为目标区域
    pushViewport(VP)
    #创建布局函数,函数参数是放置图形的位置
vplayout <- function(x, y) viewport(layout.pos.row = x, layout.pos.col = y)
#绘图
print(p2, vp = vplayout(1, 1))
print(p3, vp = vplayout(1, 2))
print(p4, vp = vplayout(1, 3))
##关闭图形设备
dev.off()
##解决问题和团队目前的状况对比,使用双柱状图
 p5 <-  ggplot(Transdata,aes(x=labels,y=abiltyvalue,fill=compare))+geom_bar(stat="identity",position="dodge")+guides(fill=FALSE)  
p5+xlab("主要能力") + ylab("能力评估值") + ggtitle("解决问题需要的知识架构")

##堆叠柱状图
 p6 <-  ggplot(Transdata,aes(x=labels,y=abiltyvalue,fill=compare))+geom_bar(stat="identity")+guides(fill=FALSE)  
 p6+xlab("主要能力") + ylab("能力评估值") + ggtitle("解决问题需要的知识架构")

#不同的角色定位需要主要的技能不同,在这些公共的技能中有一些比较
##同一角色在不同成长阶段的知识体系评估
 p7 <-  ggplot(Trone,aes(x=compare,y=onedata,fill=labels))+geom_bar(stat="identity")+guides(fill=FALSE)  
p7+xlab("主要能力") + ylab("能力评估值") + ggtitle("解决问题需要的知识架构")

可视化知识网络图谱---网络图

##构建数据,在实际中可以从文本中读取,在这里使用构造的数据来展示核心知识体系,借助于借助networkD3包里面的simpleNetwork 函数
中心 <-  c("数据挖掘","数据挖掘","数据挖掘","数据挖掘","数据挖掘","数据挖掘","数据挖掘")
次级中心 <-  c("统计学","数学","计算机科学","机器学习","数据可视化","领域知识","沟通技巧")
次级中心01  <-  c("数据可视化","数据可视化","数据可视化")
关联01 <-  c("目的性","简洁","明了")
次级中心02 <-  c("计算机科学","计算机科学","计算机科学","计算机科学")
关联02 <-   c("数据结构","算法","场景","编程语言")
data <- as.data.frame( cbind( c(中心,次级中心01,次级中心02) ,c(次级中心,关联01,关联02 ) ) ,stringsAsFactors=F)

library(networkD3)
simpleNetwork(data) 
simpleNetwork(data,#数据 
       fontFamily="华文行楷",#字体设置 
       linkColour="#B23AEE",#连线颜色 
       nodeColour="#00CD66",#节点颜色 
       textColour="#0000FF",#文本颜色 
       charge = -550,#节点之间的引力 
       opacity=0.9,#透明度 
       zoom=TRUE #可缩放 )
       )

调用plotly

##Plotly.js 是开源的 JavaScript 图表库,它基于 d3.js 和 stack.gl    
##绘制圆环图,excel中饼图--在数量级相差比较大的情况下--通过圆环图比较百分比--对于在一起的双换图-可以采用Excel来绘制--
##这里采用饼图--不过饼图在超过7个的情况下就少用吧
library(plotly)
Thinkdata 
plot_ly(Thinkdata ,labels=labels,values = needablity , type = "pie") %>%layout(title = "customeValue distribution")
plot_ly(Thinkdata ,labels=labels,values = nameA , type = "pie") %>%layout(title = "custome peopel distribution")
  ##多个饼图放在一起
plot_ly(data=Thinkdata ,labels=labels,values = needablity, type = "pie", domain = list(x = c(0, 0.4), y = c(0.4, 1)),
    name = "sum of Contribution_Value", showlegend = F) %>%
 add_trace(data = Thinkdata ,labels=labels,values = nameA , type = "pie", domain = list(x = c(0.6, 1), y = c(0.4, 1)),
        name = "People_number", showlegend = F) %>%  layout(title = "People and Contribution_Value")

参考:

R语言:绘制知识图谱 http://www.cnblogs.com/wheng/p/6218990.html

blogroll

social