您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關ggplot2玫瑰圖中星巴克門店分布圖示例分析,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。
使用ggplot2制作放射狀玫瑰圖本不是什么難事,僅需將普通單序列柱形圖添加添加一個極坐標轉化參數即可。
但是遇到比較小清新的案例,還是值得手動操作一下的。
關于星巴克門店分布TOP20城市分布數據圖,用色和呈現形式比較友好,所以就信手拿來作為案例分享給大家。
原圖中并未給出任何實際數據(所以需要用眼睛估測了~—~)
library("rvest")
library("dplyr")
library("ggplot2")
library("grid")
library("showtext")
library("Cairo")
font.add("myfont","msyh.ttc")
找一份網上的最新統計數據
url<-"http://bbs.thmz.com/thread-2715502-1-1.html"
table<-read_html(url,encoding="gbk")%>%html_nodes("td.t_f>table")%>%html_table(header =TRUE,trim =TRUE,fill=TRUE)%>%as.data.frame()
城市數據
mydata<-data.frame( label=c("上海","北京","杭州","廣州","深圳","蘇州","成都","天津","南京","武漢","寧波","重慶","西安","無錫","廈門","青島","長沙","南通","常州","福州") )
整理數據
mydata<-merge(mydata,table[,c("城市","門店數量")],by.x="label",by.y="城市",all.x=TRUE)
mydata[mydata$label=="常州","門店數量"]=27
names(mydata)[2]<-"value"
mydata<-arrange(mydata,-value)%>%transform(id=1:20,class=c(1,6,rep(1:6,3)))
mydata$label<-as.character(mydata$label)
#標簽拆成單字換行,豎排布局:
label<-strsplit(mydata$label,"")
for (i in 1:length(label)){
mydata$label_ff[[i]]<-paste0(label[[i]],collapse="\n")
}
mydata[1:2,"label_ff"]<-c("上海","北京")
mydata[16:20,"label_ff"]<-c("青島","廈門","常州","福州","南通")
#計算標簽的旋轉角度:
mydata$angle=c(rev(9*(1:10-1)+4.5),-(9*(1:10-1)+4.5))
mydata$angle[16:20]<-rev(9*(1:5-1)+4.5)
p<-ggplot(mydata)+ geom_col(aes(x=id,y=value,fill=factor(class)))+ geom_hline(yintercept =c(25,50,100,200,500),linetype=2,size=.25)+ geom_text(aes(x=id,y=value+12,label=label_ff,angle=angle),family="myfont",size=3.5,lineheight=1)+#坐標軸放大一倍占位:scale_x_continuous(limits=c(0,40),expand=c(0,0))+#Y延伸到負值突出圓心的空白scale_y_continuous(limits=c(-100,600))+ scale_fill_manual(values=c("#00643E","#207A57","#3D8C6D","#59A284","#76B69B","#95CBB3"),guide=FALSE)+ coord_polar(start=-14.245)+ theme_void();p
圖形輸出:
setwd("E:/數據可視化/R/R語言學習筆記/數據可視化/ggplot2/優秀R語言案例") CairoPNG(file="polar_rose.png",width=2400,height=1800) showtext.begin() grid.newpage() pushViewport(viewport(layout=grid.layout(6,8))) vplayout<-function(x,y){viewport(layout.pos.row =x,layout.pos.col=y)} print(p,vp=vplayout(1:6,1:8)) showtext.end() dev.off()
局部線條經過手工修飾!
以上就是整個制圖過程,其中關于角度轉換以及細節處理問題均省略掉了,如需了解可以 單獨交流。
看完上述內容,你們對ggplot2玫瑰圖中星巴克門店分布圖示例分析有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。