使用R语言画圆弧条形图

时间:2023-02-03 08:00:12

之前在微博上看到一个用弧形展示的百分比图,感觉很有创意,就想使用R来实现一样的功能,效果如下:

原图:

http://photo.weibo.com/1787567623/wbphotos/large/photo_id/3567461742163767?refer=weibofeedv5

使用R语言画圆弧条形图使用R语言画圆弧条形图使用R语言画圆弧条形图

使用R语言画圆弧条形图

使用R画出来的效果图:

使用R语言画圆弧条形图使用R语言画圆弧条形图使用R语言画圆弧条形图

使用R语言画圆弧条形图

代码比较简单,这里就不讲解了,有兴趣的话,大家自己看代码吧。

country<-c("老挝","菲律宾","尼泊尔","孟加拉","阿富汗","新加坡","泰国","蒙古","新西兰","印度尼西亚","印度","澳大利亚","*","日本","香港","柬埔寨","马来西亚","巴基斯坦","韩国","斯里兰卡","中国","越南")
percent<-c(90,81,80,77,75,74,73,72,68,68,68,67,65,63,61,60,59,58,53,51,49,48)
d<-data.frame(country,percent)
png("d:\\test.png",width = 2048, height = 2048)
f<-function(name,value){

xsize=200
plot(0, 0,xlab="",ylab="",axes=FALSE,xlim=c(-xsize,xsize),ylim=c(-xsize,xsize))
for(i in 1:length(name)){
info = name[i]
percent = value[i]
k = (1:(360*percent/100)*10)/10
r=xsize*(length(name)-i+1)/length(name)
#print(r)
x=r*sin(k/180*pi)
y=r*cos(k/180*pi)
text(-18,r,info,pos=2,cex=3)
text(-9,r,paste(percent,"%"),cex=3)
lines(x,y,col="red")
}
}



f(country,percent)
dev.off()