pythonic生物人

用ggcharts将20行ggplot2代码优化到3行!

ggplot2高度自由,意味着出一张高颜值图表需要调节很多参数,今天的主角-ggcharts,是ggplot2的high-level封装,以极少的参数设置,即可实现更高颜值的图表。


ggcharts栗子

通过一个栗子展示ggcharts的优势。

我们想可视化2012、2015、2018三年中,公司市值最高的10家生物医药公司的营业收入情况,

  • 使用ggplot2
library(dplyr)
library(ggplot2)
library(ggcharts)
data("biomedicalrevenue")

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")
Image

用了“100个”%>%处理数据;接近20行的代码;使用facet_wrap分面;使用group_by(year)分组;使用top_n(10, revenue)展示前10家公司;还用了ungroup()和mutate等函数。

  • 使用ggcharts
biomedicalrevenue %>%
  filter(year %in% c(2012, 2015, 2018)) %>%
  bar_chart(x = company, y = revenue, facet = year, top_n = 10)
Image

ggcharts中3行代码即可完成,同时效果也更好看,facet = year和top_n = 10两个参数即可实现按year分面,展示前10家公司。


ggcharts支持多种theme

ggcharts支持theme_ggcharts、theme_hermit、theme_ng、theme_nightblue和theme_coffee内置主题。

  • 例如,theme_hermit,

spec <- highlight_spec("Roche", "yellow", "#7A7A7A")
biomedicalrevenue %>%
  filter(year %in% c(2011, 2013, 2015, 2017)) %>%
  lollipop_chart(company, revenue, facet = year, highlight = spec, top_n = 5) +
  theme_hermit(axis = "y", grid = "Y") # 调用theme_hermit
Image
  • 例如,ttheme_ng
Image
  • 例如,theme_ggcharts
Image

ggcharts支持多种图表

ggcharts支持多种图形,

  • 金子塔图
Image
  • 棒棒糖图
Image
  • 哑铃图
Image
  • 发散柱状图
Image

等等。。。。。。。


-推荐阅读-

分享一份原创《👉保姆级R可视化教程》,28个章节,11w字,数百张图,旨在引导如何系统学习R语言可视化。
Image
Image
Image
Image
图片
图片
图片
图片
图片
图片
图片

图片

Image
Image
Image
Image
Image
Image

👇加入学习(备注:627)

图片