您好,登錄后才能下訂單哦!
R語言數據可視化中的仿網易數獨圓環條形圖是怎樣的,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。
一個案例,告訴你如何靈活的運用ggplot2來制作花樣繁多的信息圖!
雖然ggplot2的內置圖層只有屈指可數的幾十個,可是圖表組合之后的可能性是無限的。
實際上還是萬變不離其宗,就如同使用Excel模仿復雜圖表一樣,再復雜的圖表也是有不同的元素和模塊組合起來的,只要能夠用心去拆解,都可以找到行之有效的方法。如同庖丁解牛,只要洞悉骨架和經脈,才能隨心所欲的下刀。
setwd("F:/數據可視化/R/R語言學習筆記/可視化/ggplot2/商務圖表")
library("ggplot2")
library("tidyr")
library("dplyr")
library("grid")
library("showtext")
library('"Cairo")
library("scales")
font.add("myfont","msyhl.ttc")
mydata<-read.csv("mydata.csv",stringsAsFactors=FALSE,check.names=FALSE)
mydata$index<-1:nrow(mydata)
mydata$angle1<-1.5*seq(-1,-59)
mydata$angle2<-1.5*seq(59,1)
label<-strsplit(mydata$Country,"")
for (i in 1:length(label)){
label[[i]]<-paste0(label[[i]],collapse="\n")
}
mydata$label<-unlist(label)
mydata$label[37:59]<-gsub("\n","",mydata$label[37:59])
mynewdata<-mydata%>%gather(Class,Value,2:4)
圖形一:
mynewdata$Class<-factor(mynewdata$Class,levels=c("環保優先","其他/未回答","經濟優先"),order=T)
p1<-ggplot(data=mynewdata,aes(x=index,y=Value,fill=Class))+
geom_bar(stat="identity",width=0.95)+
geom_text(aes(y=105,label=ifelse(index<=36,label,""),angle=angle1),hjust=.5,vjust=0,family="myfont")+
geom_text(aes(y=105,label=ifelse(index>36,label,""),angle=angle2),hjust=0,vjust=0.5,family="myfont")+
geom_text(aes(y=Value,label=Value,angle=angle2),position=position_stack(vjust=.9),family="myfont")+
xlim(0.5,236.5)+ylim(-120,105)+
coord_polar(theta="x")+
guides(fill=guide_legend(title=NULL))+
scale_fill_manual(values=c("#2EA7E0","#B5B5B6","#CBE510"))+
theme(
text=element_text(size=20),
line=element_blank(),
rect=element_blank(),
axis.text=element_blank(),
axis.title=element_blank(),
legend.position=c(.95,.75),
legend.key.size =unit(.8,'cm'),
)
以上可以制作出原始案例的外圍圓環圖:
mydata2<-data.frame(year=c("1998年","2004年","2009年","2014年"),經濟優先=c(.24,.27,.23,.28),未回答=c(.25,.21,.23,.15),環保優先=c(.51,.52,.54,.57),smallyear=rep(.15,4),check.names = FALSE)
names(mydata2)[3]<-"其他/未回答"
mydata2$index<-1:nrow(mydata2)
mynewdata2<-mydata2%>%gather(Class,Value,2:5)
mynewdata2$Class<-factor(mynewdata2$Class,levels=c("smallyear","環保優先","其他/未回答","經濟優先"),order=T)
p2<-ggplot(data=mynewdata2,aes(x=index,y=Value,fill=Class))+
geom_bar(stat="identity",width=0.99)+
geom_text(aes(y=Value,label=ifelse(mynewdata2$Class=="smallyear",levels(mynewdata2$year),""),angle=c(rep(0,12),11.25*seq(-1,-7,-2))),position=position_stack(vjust=.5),family="myfont",size=7.5)+
geom_text(aes(y=Value,label=ifelse(mynewdata2$Class!="smallyear",percent(mynewdata2$Value),"")),position=position_stack(vjust=.5),family="myfont",size=6)+
xlim(0.5,16.5)+ylim(-.5,1.25)+
coord_polar(theta="x")+
guides(fill=FALSE)+
scale_fill_manual(values=c("#EFEFEF","#2EA7E0","#B5B5B6","#CBE510"))+
theme(
line=element_blank(),
rect=element_blank(),
axis.text=element_blank(),
axis.title=element_blank(),
legend.position="none"
)
以上可以做出內側小圓環圖:
CairoPNG(file="circletile1.png",width=2000,height=2000)
showtext.begin()
vie<-viewport(width=0.5,height=0.5,x=0.5,y=0.5)
p1;print(p2,vp=vie)
grid.text(label="六成中國人認為\n環境比經濟更重要",,x=.99,y=.90,gp=gpar(col="black",fontsize=60,draw=TRUE,just="right")
showtext.end()
dev.off()
合并一步,一幅完整的圖表便出爐了!
看完上述內容,你們掌握R語言數據可視化中的仿網易數獨圓環條形圖是怎樣的的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。