❝之前介绍过「ggbrick」绘制砖块华夫图的案例,小编突然想到由于砖块可对应数值因此用其来展示柱状图非常很形象生动,下面小编就通过一个案例来进行展示数据为随意构建无实际意义仅作图形展示用,希望各位观众老爷能够喜欢 ❞
devtools::install_github("doehm/ggbrick")
library(tidyverse)
library(ggbrick)
data <- read_tsv("data.xls")
df <- data %>% arrange(desc(n)) %>% # 按照变量"n"的降序排列数据
mutate(state = fct_reorder(state, n, max)) %>% # 使用变量"n"对"state"进行重新排序
slice_head(n = 10) %>% # 取前10行数据
mutate(n_lab = paste0(round(n/1000, 1), "k")) # 在"data"中添加新的变量"n_lab",其值为将"n"除以1000并四舍五入到小数点后一位,并在后面添加"k"
df %>%
ggplot(aes(state,state_lab)) + # 设置x轴和y轴的变量为"state"和"state_lab"
geom_brick(aes(state, n, fill = n), colour = NA, size = 0.2) + # 使用砖形图表示数据,x轴为"state",y轴为"n",填充颜色为"n",边框颜色设置为透明,大小为0.2
geom_text(aes(state, y = n+280, label = n_lab),colour = "black",
lineheight = 0.5, size =3.5) + # 在图表上显示文本,x轴为"state",y轴为"n+280",标签为"n_lab",文本颜色为黑色,行高为0.5,字体大小为3.5
scale_fill_gradientn(colours = rev(RColorBrewer::brewer.pal(6, "RdBu"))) + # 设置填充颜色为逆转的RdBu调色板中的6种颜色
labs(x=NULL,y=NULL,fill = "Number of\nHistorical\nMarkers") + # 设置x轴和y轴的标签为空,设置填充颜色的标签为"Number of\nHistorical\nMarkers"
scale_y_continuous(expand = c(0,100)) + # 设置y轴的范围扩展为0到100
scale_x_discrete(labels = function(y) str_wrap(y, width=6)) + # 设置x轴的离散变量标签格式,使其每行最多显示6个字符
theme_classic() + # 使用经典主题
theme(
axis.line.y.left = element_blank(), # 隐藏左侧y轴的轴线
axis.text.y = element_blank(), # 隐藏y轴的刻度标签
axis.ticks.y = element_blank(), # 隐藏y轴的刻度线
axis.text.x = element_text(color="black", size=8, face="bold"), # 设置x轴刻度标签的颜色为黑色,大小为8,加粗
plot.background = element_rect(fill ="white", colour ="white"), # 设置图表背景为白色
plot.margin = margin(b = 2, t = 5, r = 5, l = 5), # 设置图表的边距
legend.title = element_text(size = 10) # 设置图例标题的大小为10
)