主要涉及到对图的优化,使用ggchart工具包
ggchart 链接:https://thomas-neitmann.github.io/ggcharts/index.html
step1: 安装工具包
install.packages("ggcharts")
install.packages("tidytext")
step2: 导入工具包
library(dplyr)
library(ggplot2)
library(ggcharts)
library(tidytext)
step3:使用数据
data("biomedicalrevenue")
step4: 绘图
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位公司。
step5: 优化 v2
plot <- biomedicalrevenue %>%
filter(year %in% c(2012, 2015, 2018)) %>%
bar_chart(x = company, y = revenue, facet = year, top_n = 10)
- 使用 bar_chart 绘制柱状图