ggplot2-局部整體型圖表
沈益
8/18/2019
餅圖
library(RColorBrewer)
library(dplyr)
library(graphics)
#-------------------------圖7-1-1 餅圖(a)------------------------------------------
df <- data.frame(value = c(24.20,30.90,12.50,12.30,8.10,12.10),
group = c('LVS','SJM','MCE','Galaxy','MGM','Wynn'))
df <-arrange(df,value)
labs <- paste0(df$group," \n(", round(df$value/sum(df$value)*100,2), "%)")
pie(df$value,labels=labs, init.angle=90,col = brewer.pal(nrow(df), "Reds"),
border="black")
df <- data.frame(value = c(24.20,75.90,12.50,12.30,8.10,12.10),
group = c('LVS','SJM','MCE','Galaxy','MGM','Wynn'))
df <-arrange(df,desc(value))
df$color<-rev(brewer.pal(nrow(df), "Blues"))#Oranges
df<-df[c(2:nrow(df),1),]
labs <- paste0(df$group," \n(", round(df$value/sum(df$value)*100,2), "%)")
pie(df$value,labels=labs, init.angle=90,col = df$color,
border="black")
n<-6
gg_color_hue <- function(n) {hues = seq(15, 375, length = n + 1); hcl(h = hues, l = 65, c = 100)[1:n]}
pie(df$value,labels=labs, init.angle=90,col =gg_color_hue(n),
border="black")
pie(df$value,labels=labs, init.angle=90,col ="#3182BD",
border="black")
df <- data.frame(value = c(24.20,75.90,12.50,12.30,8.10,12.10),
group = c('LVS','SJM','MCE','Galaxy','MGM','Wynn'))
df <-arrange(df,value)
labs <- paste0(df$group," \n(", round(df$value/sum(df$value)*100,2), "%)")
pie(df$value,labels=labs, init.angle=90,col = brewer.pal(nrow(df), "Reds"),
border="black")
df <- data.frame(value = c(24.20,30.90,12.50,12.30,8.10,12.10),
group = c('LVS','SJM','MCE','Galaxy','MGM','Wynn'))
df <-arrange(df,desc(value))
df$color<-rev(brewer.pal(nrow(df), "Oranges"))
df<-df[c(2:nrow(df),1),]
labs <- paste0(df$group," \n(", round(df$value/sum(df$value)*100,2), "%)")
pie(df$value,labels=labs, init.angle=90,col = df$color,
border="black")
散點複合餅圖
library(ggplot2)
library(scatterpie)
library(RColorBrewer)
crime <- read.csv("配套資源/第7章 局部整體型圖表/crimeRatesByState2005.tsv",header = TRUE, sep = "\t", stringsAsFactors = F)
radius <- sqrt(crime$population / pi)
Max_radius<-max(radius)
Bubble_Scale<-0.1
crime$radius <- Bubble_Scale * radius/Max_radius
mydata<-crime[,c(2,4,3,5:8)] #數據集構造
Col_Mean<-apply(mydata,2,mean)
Col_Sort<-sort(Col_Mean,index.return=TRUE,decreasing = TRUE)
mydata<-mydata[,Col_Sort$ix]
x<-(mydata$murder-min(mydata$murder))/(max(mydata$murder)-min(mydata$murder))+0.00001
y<-(mydata$Robbery-min(mydata$Robbery))/(max(mydata$Robbery)-min(mydata$Robbery))+0.00001
xlabel<-seq(0,10,2)
xbreak<-(xlabel-min(mydata$murder))/(max(mydata$murder)-min(mydata$murder))+0.00001
ylabel<-seq(0,260,50)
ybreak<-(ylabel-min(mydata$Robbery))/(max(mydata$Robbery)-min(mydata$Robbery))+0.00001
mydata2<-data.frame(x,y,radius=crime$radius)
mydata2<-cbind(mydata2,mydata)
Legnd_label<-colnames(mydata2)[4:10]
colnames(mydata2)[4:10]<-LETTERS[1:7]
#---------------------------------------圖7-1-3 散點複合餅圖系列(a)-------------------------------------------------
ggplot() +
geom_scatterpie(aes(x=x, y=y,r=0.05), data=mydata2, cols=colnames(mydata2)[4:10],alpha=0.9,size=0.1) +
scale_fill_manual(values=colorRampPalette(brewer.pal(7, "Set2"))(7),labels=Legnd_label)+
#geom_scatterpie_legend(mydata2$radius, x=0.1, y=0.95, n=5,labeller=function(x) round((x* Max_radius/ Bubble_Scale)^2*pi))+
#geom_scatterpie_legend(mydata2$radius, x=0.009758116, y=0.090868067, n=4,labeller=function(x) round((x* Max_radius/ Bubble_Scale)^2*pi))+
scale_x_continuous(breaks=xbreak, labels=xlabel)+
scale_y_continuous(breaks=ybreak, labels=ylabel)+
xlab("murder")+
ylab("Robbery")+
coord_fixed()+
theme(
axis.title=element_text(size=15,face="plain",color="black"),
axis.text = element_text(size=13,face="plain",color="black"),
legend.title=element_text(size=15,face="plain",color="black"),
legend.text = element_text(size=14,face="plain",color="black")
)
ggplot() +
geom_scatterpie(aes(x=x, y=y,r=radius), data=mydata2, cols=colnames(mydata2)[4:10],alpha=0.9,size=0.25) +
scale_fill_manual(values=colorRampPalette(brewer.pal(7, "Set2"))(7),labels=Legnd_label)+
geom_scatterpie_legend(mydata2$radius, x=0.1, y=0.95, n=5,
labeller=function(x) round((x* Max_radius/ Bubble_Scale)^2*pi))+
#geom_scatterpie_legend(mydata2$radius, x=0.009758116, y=0.090868067, n=4,labeller=function(x) round((x* Max_radius/ Bubble_Scale)^2*pi))+
scale_x_continuous(breaks=xbreak, labels=xlabel)+
scale_y_continuous(breaks=ybreak, labels=ylabel)+
xlab("murder")+
ylab("Robbery")+
coord_fixed()+
theme(
axis.title=element_text(size=15,face="plain",color="black"),
axis.text = element_text(size=13,face="plain",color="black"),
legend.title=element_text(size=15,face="plain",color="black"),
legend.text = element_text(size=14,face="plain",color="black")
)
冰柱圖
library(ggraph)
library(igraph)
library(RColorBrewer)
colormap <- colorRampPalette(rev(brewer.pal(5,'Reds')))(5)
graph <- graph_from_data_frame(flare$edges, vertices = flare$vertices)
#---------------------------------------圖7-2-2 冰柱圖-------------------------------------------------
ggraph(graph, layout ='partition') +
geom_node_tile(aes(fill = as.factor(depth)), size = 0.25)+
geom_node_text( aes(label=shortName,filter =(depth==0)),size=6, angle=0,colour="white") +
geom_node_text( aes(label=shortName,filter =(depth==1 )),size=3.5, angle=90,colour="white") +
geom_node_text( aes(label=shortName,filter =(depth<=3 & depth>1 & size <10)),size=1.5, angle=90) +
scale_fill_manual(values= colormap)+
#scale_fill_viridis()+
scale_y_reverse()+
theme_void()+
theme(legend.position = "none")
旭日圖
ggraph(graph, layout ='partition', circular = TRUE) +
geom_node_arc_bar(aes(fill = as.factor(depth)), size = 0.25)+
geom_node_text( aes(label=shortName,filter =(depth==0)),size=6, angle=0,colour="white") +
geom_node_text( aes(label=shortName,filter =(depth==1 )),size=3.5, angle=0,colour="white") +
geom_node_text( aes(label=shortName,filter =(depth<=3 & depth>1 & size <10)),size=2, angle=0) +
coord_fixed()+
scale_fill_manual(values= colormap)+
#scale_fill_viridis(discrete = TRUE)+
theme_void()+
theme(legend.position = "none")
華夫餅圖
library(ggplot2)
library(RColorBrewer)
library(reshape2)
nrows <- 10
categ_table <- round(table(mpg$class ) * ((nrows*nrows)/(length(mpg$class))))
sort_table<-sort(categ_table,index.return=TRUE,decreasing = FALSE)
Order<-sort(as.data.frame(categ_table)$Freq,index.return=TRUE,decreasing = FALSE)
df <- expand.grid(y = 1:nrows, x = 1:nrows)
df$category<-factor(rep(names(sort_table),sort_table), levels=names(sort_table))
Color<-brewer.pal(length(sort_table), "Set2")
ggplot(df, aes(x = y, y = x, fill = category)) +
geom_tile(color = "white", size = 0.25) +
#geom_point(color = "black",shape=21,size=6) +
coord_fixed(ratio = 1)+
scale_x_continuous(trans = 'reverse') +#expand = c(0, 0),
scale_y_continuous(trans = 'reverse') +#expand = c(0, 0),
scale_fill_manual(name = "Category",
#labels = names(sort_table),
values = Color)+
theme(#panel.border = element_rect(fill=NA,size = 2),
panel.background = element_blank(),
plot.title = element_text(size = rel(1.2)),
#axis.text = element_blank(),
#axis.title = element_blank(),
#axis.ticks = element_blank(),
# legend.title = element_blank(),
legend.position = "right")
library(ggforce)
ggplot(df, aes(x0 = y, y0 = x, fill = category,r=0.5)) +
geom_circle(color = "black", size = 0.25) +
#geom_point(color = "black",shape=21,size=6) +
coord_fixed(ratio = 1)+
scale_x_continuous(trans = 'reverse') +#expand = c(0, 0),
scale_y_continuous(trans = 'reverse') +#expand = c(0, 0),
scale_fill_manual(name = "Category",
#labels = names(sort_table),
values = Color)+
theme(#panel.border = element_rect(fill=NA,size = 2),
panel.background = element_blank(),
plot.title = element_text(size = rel(1.2)),
#axis.text = element_blank(),
#axis.title = element_blank(),
#axis.ticks = element_blank(),
# legend.title = element_blank(),
legend.position = "right")
library(dplyr)
nrows <- 10
ndeep <- 10
unit<-100
df <- expand.grid(y = 1:nrows, x = 1:nrows)
categ_table <- as.data.frame(table(mpg$class) * (nrows*nrows))
colnames(categ_table)<-c("names","vals")
categ_table<-arrange(categ_table,desc(vals))
categ_table$vals<-categ_table$vals /unit
tb4waffles <- expand.grid(y = 1:ndeep,x = seq_len(ceiling(sum(categ_table$vals) / ndeep)))
regionvec <- as.character(rep(categ_table$names, categ_table$vals))
tb4waffles<-tb4waffles[1:length(regionvec),]
tb4waffles$names <- factor(regionvec,levels=categ_table$names)
Color<-brewer.pal(nrow(categ_table), "Set2")
ggplot(tb4waffles, aes(x = x, y = y, fill = names)) +
#geom_tile(color = "white") + #
geom_point(color = "black",shape=21,size=5) + #
scale_fill_manual(name = "Category",
values = Color)+
xlab("1 square = 100")+
ylab("")+
coord_fixed(ratio = 1)+
theme(#panel.border = element_rect(fill=NA,size = 2),
panel.background = element_blank(),
plot.title = element_text(size = rel(1.2)),
#axis.text = element_blank(),
#axis.title = element_blank(),
#axis.ticks = element_blank(),
# legend.title = element_blank(),
legend.position = "right")
library(ggforce)
ggplot(tb4waffles, aes(x0 = x, y0 = y, fill = names,r=0.5)) +
#geom_tile(color = "white") + #
geom_circle(color = "black",size=0.25) + #
scale_fill_manual(name = "Category",
values = Color)+
xlab("1 square = 100")+
ylab("")+
coord_fixed(ratio = 1)+
theme(#panel.border = element_rect(fill=NA,size = 2),
panel.background = element_blank(),
plot.title = element_text(size = rel(1.2)),
#axis.text = element_blank(),
#axis.title = element_blank(),
#axis.ticks = element_blank(),
# legend.title = element_blank(),
legend.position = "right")