我对在ggplot条形图上方添加分组标签感兴趣.这个特性存在于数据可视化中,比如系统发育树(在ggtree中),但我还没有找到在ggplot中实现它的方法.
我试着玩弄geom_文本和geom_标签,但还没有成功.也许还有另一个软件包支持这个功能?我附上了一些示例代码,这些代码应该是完全可复制的.我想让评级变量越过列出的各大洲(跨越多个大洲)的横栏.
非常感谢您的帮助!非常感谢.
请原谅所有的 comments ——我在写一篇教学教程.
#load necessary packages
library(tidyverse)
library(stringr)
library(hrbrthemes)
library(scales)
#load data
covid<- read_csv("https://raw.githubusercontent.com/owid/covid-19-data/master/public/data/owid-covid-data.csv", na = ".")
#this makes a new dataframe (total_cases) that only has the latest COVID cases count and location data
total_cases <- covid %>% filter(date == "2021-05-23") %>%
group_by(location, total_cases) %>%
summarize()
#get number for world total cases.
world <- total_cases %>%
filter(location == "World") %>%
select(total_cases)
#make new column that has the proportion of total world cases (number was total on that day)
total_cases$prop_total <- total_cases$total_cases/world$total_cases
#this specifies what the continents are so we can filter them out with dplyr
continents <- c("North America", "South America", "Antarctica", "Asia", "Europe", "Africa", "Australia")
#Using dyplr, we're choosing total_cases pnly for the continents
contin_cases <- total_cases %>%
filter(location %in% continents)
#Loading a colorblind accessible palette
cbbPalette <- c("#000000", "#E69F00", "#56B4E9", "#009E73", "#F0E442", "#0072B2", "#D55E00", "#CC79A7")
#Add a column that rates proportion of cases categorically.
contin_cases <- contin_cases %>%
mutate(rating = case_when(prop_total <= 0.1 ~ 'low',
prop_total <= 0.2 ~ 'medium',
prop_total <= 1 ~ 'high'))
#Ploting it on a bar chart.
plot1 <- ggplot(contin_cases,
aes(x = reorder(location, prop_total),
y = prop_total,
fill = location)) +
geom_bar(stat="identity", color="white") +
ylim(0, 1) +
geom_text(aes(y = prop_total,
label = round(prop_total, 4)),
vjust = -1.5) +
scale_fill_manual(name = "Continent",
values = cbbPalette) +
labs(title = "Proportion of total COVID-19 Cases Per Continent",
caption ="Figure 1. Asia leads total COVID case count as of May 23rd, 2021. No data exists in this dataset for Antarctica.") +
ylab("Proportion of total cases") +
xlab("") + #this makes x-axis blank
theme_classic()+
theme(
plot.caption = element_text(hjust = 0, face = "italic"))
plot1
这里有一些类似于我试图实现的目标:
bar chart showing total covid cases by continent as of May 2021