主要涉及到对图的优化,使用ggchart工具包
ggchart 链接:https://thomas-neitmann.github.io/ggcharts/index.html
install.packages("ggcharts")
install.packages("tidytext")
library(dplyr)
library(ggplot2)
library(ggcharts)
library(tidytext)
data("biomedicalrevenue")
plot <- biomedicalrevenue %>%
filter(year %in% c(2012, 2015, 2018)) %>%
group_by(year) %>%
top_n(10, revenue) %>%
ungroup() %>%
mutate(company = tidytext::reorder_within(company, revenue, year)) %>%
ggplot(aes(company, revenue)) +
geom_col() +
coord_flip() +
tidytext::scale_x_reordered() +
facet_wrap(vars(year), scales = "free_y")
biomedicalrevenue
是一个数据框,其中包含了生物医药公司的营收信息。
%>%
是管道操作符,用于将前一个步骤的结果传递给下一个步骤。
filter(year %in% c(2012, 2015, 2018))
用于筛选出包含在2012年、2015年和2018年的数据。
group_by(year)
将数据按照年份进行分组。
top_n(10, revenue)
选取每个年份中营收前10的公司。
ungroup()
取消分组,确保后续的操作不受之前的分组影响。
mutate(company = tidytext::reorder_within(company, revenue, year))
重新排序公司,以确保每个年份中的公司按照营收从高到低排列。
ggplot(aes(company, revenue))
创建一个 ggplot 对象,设置 X 轴为公司名称,Y 轴为营收。
geom_col()
添加堆积柱状图层。
coord_flip()
将坐标轴翻转,使得柱状图变为横向。
tidytext::scale_x_reordered()
根据重新排序的结果调整 X 轴的顺序。
facet_wrap(vars(year), scales = "free_y")
按照年份进行分面,每个年份的柱状图分别显示,Y 轴的刻度独立。
整体来说,这段代码使用 ggplot2 包创建了一个生物医药公司营收的横向堆积柱状图,展示了2012年、2015年和2018年每年的前10位公司。
plot <- biomedicalrevenue %>%
filter(year %in% c(2012, 2015, 2018)) %>%
bar_chart(x = company, y = revenue, facet = year, top_n = 10)