R语言蛛网图改进

蛛网图改进

写代码时的注意事项:

1.一定一定要注意,标点符号的英文形式!
2.分清数据的横纵坐标含义
3.修改变量时,注意对应变量的修改
4.paste(csum,var[i],sep="、"),连接字符对象
5.书写的逻辑要多思考

改进内容:

  1. 为图像添加颜色
  2. 为图添加图例
  3. 为图添加对应标题
  4. 实现指定对象个数画蛛网图

代码:

stdspider函数:
stdspider<-function(w,nn){
#标准化后的蛛网图
#w为数据,nn为每次画图对象个数,nn取值1-10
#适用于列为指标,行为对象的数据集

mw = nrow(w) 
nw = ncol(w)
item = seq(1,mw,nn)
for (i in item)
{
  x = w[i:min(i+nn-1,mw),]#取行,[i,i+nn-1]有nn个数
  m=nrow(x)#对象个数
  totalcolor <-c("black","red","green","blue","brown","aquamarine","beige","cadetblue","blueviolet","pink")#对象对应总颜色
  colorr<-totalcolor[1:m]#选出的颜色,注意不能命名为colors,其类别为'closure'的对象不可以取子集

  if(is.data.frame(x)==TRUE)
  x <- as.matrix(x)
  p <- dimnames(x)[[2]]#矩阵x的列名称
  n <- ncol(x)#指标个数

  for (j in 1:n)  # 为避免各变量取值范围相差太大,使图像集中在一脚,
			# 对所有的变量进行标准化 ,按照指标进行标准化  
  {
    x1 = x[,j] 
    x[,j]=x1/sqrt(sum(x1*x1)) 
  }

  dev.new()#创建新窗口
  var=dimnames(x)[[1]]#变量名称
  csum=var[1]#用于记录所有变量
  nv=length(var)
  for(i in 2:nv){
  csum=paste(csum,var[i],sep="、")
  }
  csum=paste(csum,"的蛛网图",sep="")#作为title

  stars(x, scale = F ,radius = T, main=csum,labels=NULL,locations = matrix(0,m,2),col.lines = 1:m, lwd=2)#画星图
  for(i in 1:n)
    text(cos((i-1)*2/n*pi)*max(x[,i]),sin((i-1)*2/n*pi)*max(x[,i]),p[i])
      #在各轴最远处标出名称
  legend("topright",inset=0.01,title="对象名称",rownames(x)[1:m],fill=colorr[1:m],border = FALSE,col=fill,pt.cex = 1, cex = 1, bty = "n")
  #添加注释,位置      ,与边界距离  ,名称      
}
}

主函数:
w <- read.table("data3.4.txt",header = T ) # 读入数据
source("stdspider.R")
stdspider(w,4)
stdspider(w,6)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值