商务风格可视化插图怎么绘制?一行代码搞定~~

news2024/11/16 7:46:59

上期推文推出使用极少代码绘制顶级期刊要求的学术图表(一行代码绘制符合···)后,有小伙伴就问了,有没有可以使用较少代码绘制偏商业风的技巧分享?还别说,我还真有这样的技巧准备分享给爱学习的你们!话不多说,咱们开始,本期的推文主要内容如下:

  • R-ggcharts 简介

  • R-ggcharts 实例绘制展示

  • 更多详细的数据可视化教程,可订阅我们的店铺课程:

R-ggcharts 简介

R虽然有优秀的ggplot2包帮助我们完成各种各样的可视化作品(只要数据支持,理论上你能想到的任何图表都是能够绘制的),但对图表颜值有一定要求的小伙伴们可能需要花费大量时间去定制化绘制(我们还有主题包,这里不做讨论哈),而R-ggcharts包则可以帮助我们使用极少的代码绘制出商业风格的可视化作品。介绍如下:

  1. 官网

官网:https://thomas-neitmann.github.io/ggcharts/index.html ,这里放一下官网的图:

R-ggcharts 官网

(第一眼看到这个就慕了,作者是讲究人啊)

  1. 主要绘图函数

R-ggcharts作为一个新包,其提供的作图函数还不是很多,主要如下:

  • *bar_chart()、column_chart()*:绘制条形图(Bar Chart)

  • diverging_bar_chart(): 绘制不同方向条形图(Diverging Bar Chart)

  • diverging_lollipop_chart(): 绘制不同方向棒棒糖图(Diverging Lollipop Chart)

  • dumbbell_chart(): 绘制哑铃图(Dumbbell Chart)

  • line_chart(): 绘制线图(Line Chart)

  • lollipop_chart():绘制单一方向的棒棒糖图(Lollipop Chart)

  • pyramid_chart(): 绘制金字塔图(Pyramid Chart)

此外,R-ggcharts还提供theme_coffee()、theme_ggcharts()、theme_hermit()、theme_ng()、theme_nightblue() 多个主题,更多详细内容,可参考官网哈。

R-ggcharts 实例绘制展示

介绍完主要的绘图函数,我们还是进行实例展示,体验R-ggcharts包带给我们的绘图便捷性。

  • 「bar charts」

我们首先对比下和常规ggplot2绘图的不同,以下为ggplot2 绘制柱形图代码:

library(dplyr)
library(ggplot2)
library(ggcharts)
data("biomedicalrevenue")

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

bar charts with ggplot2

而使用ggcharts 进行绘制,不仅代码量减少,其颜值也大幅度提升:

plot01_ggcharts <- biomedicalrevenue %>%
  filter(year %in% c(2012, 2015, 2018)) %>%
  bar_chart(x = company, y = revenue, facet = year, top_n = 10)

bar charts with ggcharts

如果我们结合主题包hrbrthemes进行更加细致的绘制,可得到如下结果:

bar charts with hrbrthemes

bar charts with ggcharts and hrbrthemes

  • 「Diverging Bar Chart」

这类型在使用ggplot2绘制时,往往需要较多的代码量进行绘制,而 ggcharts 则只需几行代码即可:

diverging_bar_chart <- diverging_bar_chart(mtcars_z, model, hpz, text_color = c("#1F77B4", "#FF7F0E")) +
  # 细节美化操作
  labs(
           subtitle = "processed charts with <span style='color:#1A73E8'>ggcharts</span>",
           caption = "Visualization by <span style='color:#DD6449'>DataCharm</span>")+
  # 添加主题
  hrbrthemes::theme_ipsum(base_family = "Roboto Condensed") +
  theme( 
            plot.subtitle = element_markdown(hjust = 0,vjust = .5,size=15),
            plot.caption = element_markdown(face = 'bold',size = 12),
          )

diverging_bar_chart

  • 「diverging_lollipop_chart」

diverging_lollipop_chart <- diverging_lollipop_chart(mtcars_z, model, hpz, text_color = c("#1F77B4", "#FF7F0E"))+
  # 细节美化操作
  labs(
           subtitle = "processed charts with <span style='color:#1A73E8'>ggcharts</span>",
           caption = "Visualization by <span style='color:#DD6449'>DataCharm</span>")+
  # 添加主题
  hrbrthemes::theme_ipsum(base_family = "Roboto Condensed") +
  theme( 
            plot.subtitle = element_markdown(hjust = 0,vjust = .5,size=15),
            plot.caption = element_markdown(face = 'bold',size = 12),
          )

diverging_lollipop_chart

  • 「dumbbell chart」

data(popeurope)
dumbbell_chart(popeurope, country, pop1952, pop2007, top_n = 10,line_color = "black",
               line_size = 1, point_size = 5) +
 # 细节美化操作
  labs(    title = "Example of <span style='color:#D20F26'>ggcharts::dumbbell_chart function</span>",
           subtitle = "processed charts with <span style='color:#1A73E8'>dumbbell_chart()</span>",
           caption = "Visualization by <span style='color:#DD6449'>DataCharm</span>")+
  # 添加主题
  hrbrthemes::theme_ipsum(base_family = "Roboto Condensed") +
  theme(    plot.title = element_markdown(hjust = 0.5,vjust = .5,color = "black",
                                     size = 20, margin = margin(t = 1, b = 12)),
            plot.subtitle = element_markdown(hjust = 0,vjust = .5,size=15),
            plot.caption = element_markdown(face = 'bold',size = 12),
          )

dumbbell chart

  • 「lollipop_chart」

lollipop_chart(biomedicalrevenue, company, revenue, facet = year, line_color = "purple",top_n = 10) +
labs(    title = "Example of <span style='color:#D20F26'>ggcharts::lollipop_chart function</span>",
           subtitle = "processed charts with <span style='color:#1A73E8'>lollipop_chart()</span>",
           caption = "Visualization by <span style='color:#DD6449'>DataCharm</span>")+
theme(text = element_text(family = "Roboto Condensed"),
     plot.title = element_markdown(hjust = 0.5,vjust = .5,color = "black",face = "bold",
                                     size = 20, margin = margin(t = 1, b = 12)),
            plot.subtitle = element_markdown(hjust = 0,vjust = .5,size=15),
            plot.caption = element_markdown(face = 'bold',size = 12))

lollipop_chart

  • 「Pyramid Chart」

data(popch)
pyramid_chart(popch, age, pop, sex,xlab = "Population", title = "Switzerland 2020")

Pyramid Chart

  • 「主题设置」 ggcharts 包提供了多种主题,可视化绘制分别如下:

ggcharts_set_theme("theme_hermit")
bar_chart(data = diamonds, x = cut)

theme_hermit

theme_ng

theme_nightblue

  • 高亮标出 这是ggcharts的一大亮点,也是小编非常喜欢的一个

ggcharts_set_theme("theme_ng")
bar_chart(data = diamonds, x = cut,highlight = "Premium")+
#细节美化操作
  labs(    title = "Example of <span style='color:#D20F26'>ggcharts::highlight process</span>",
           subtitle = "processed charts with <span style='color:#1A73E8'>highlight</span>",
           caption = "Visualization by <span style='color:#DD6449'>DataCharm</span>")+
  # 添加主题
  theme(    text = element_text(family = "Roboto Condensed"),
            plot.title = element_markdown(hjust = 0.5,vjust = .5,color = "black",
                                     size = 20, margin = margin(t = 1, b = 12)),
            plot.subtitle = element_markdown(hjust = 0,vjust = .5,size=15),
            plot.caption = element_markdown(face = 'bold',size = 12),
          )

highlight process

更多详细内容,大家可去官网自行探索哈~~

总结

本期推文我们介绍一个绘制图表更加方便(少代码量,商业风)的优质绘图包,极大的简化那些复杂图表的绘制过程,希望大家可以喜欢~~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1818394.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于MATLAB仿真的BCC卷积码维特比译码算法

&#x1f9d1;&#x1f3fb;个人简介&#xff1a;具有3年工作经验&#xff0c;擅长通信算法的MATLAB仿真和FPGA实现。代码事宜&#xff0c;私信博主&#xff0c;程序定制、设计指导。 &#x1f680;基于MATLAB仿真的BCC卷积码维特比译码算法 目录 &#x1f680;1.BCC卷积码概…

182.二叉树:二叉搜索树的最小绝对差(力扣)

代码解决 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}* Tre…

【代码随想录】【算法训练营】【第30天 1】 [322]重新安排行程 [51]N皇后

前言 思路及算法思维&#xff0c;指路 代码随想录。 题目来自 LeetCode。 day 30&#xff0c;周四&#xff0c;好难&#xff0c;会不了一点~ 题目详情 [322] 重新安排行程 题目描述 322 重新安排行程 解题思路 前提&#xff1a;…… 思路&#xff1a;回溯。 重点&…

transformer和Non-local

两者本质上是一个东西&#xff0c;都是用来求自注意力的&#xff0c;但具体而言还是有一些差别&#xff1b; 1&#xff1a;首先说Non-local&#xff0c;它是像素级别的self-attention,算的是图片中各个像素点对指定像素点的影响&#xff1b; 2&#xff1a;transformer我们拿s…

JVM产生FullGC的原因有哪些?

JVM产生FullGC的原因有哪些&#xff1f; 在Java虚拟机&#xff08;JVM&#xff09;中&#xff0c;垃圾回收&#xff08;Garbage Collection&#xff0c;简称GC&#xff09;是一个非常重要的机制。GC的目的是自动管理内存&#xff0c;回收不再使用的对象&#xff0c;防止内存泄…

揭秘!5大策略让广告变现长久有效

在数字化时代的浪潮下&#xff0c;广告变现作为自媒体和APP开发者重要的收入来源&#xff0c;越来越受到重视。 但如何让这种变现方式长久持续&#xff0c;成为许多内容创作者与平台运营者思考的问题。 本文旨在探讨广告变现的持久之道&#xff0c;通过分析前端展示、合规性、…

通过元学习优化增益模型的性能:基础到高级应用总结

在当今数据驱动的决策过程中&#xff0c;因果推断和增益模型扮演了至关重要的角色。因果推断帮助我们理解不同变量间的因果关系&#xff0c;而增益模型则专注于评估干预措施对个体的影响&#xff0c;从而优化策略和行动。然而&#xff0c;要提高这些模型的精确度和适应性&#…

lammps聚合物断键拉伸模拟

本文介绍聚合物的断键拉伸。 在lammps模拟中&#xff0c;所有的键默认是永久存在的&#xff0c;非正常情况下&#xff0c;不能断开&#xff0c;否则会产生"bond atoms missing”错误。 聚合物的拉伸模拟过程中&#xff0c;聚合物链并没有被拉断&#xff0c;而只是把不同的…

tmega128单片机控制的智能小车设计

第1章 绪论1.1 选题背景和意义 自第一台工业机器人诞生以来,机器人的民展已经遍及机械、电子、冶金、交通、宇航、国防等领域。近年来机器人的智能水平不断提高,并且迅速地改变着人们的生活方式。人们在不断探讨、改造、认识自然的过程中,制造能替代人工作的机器一…

国学诗词app开发,学古贯今,句句珠玑

“鹅鹅鹅&#xff0c;曲项向天歌。”这是很多人学会的第一首诗&#xff0c;国学诗词作为中华传统文化的重要组成部分&#xff0c;不仅在历史中占据重要地位&#xff0c;也是儿童学前启蒙的不二选择。对于家长来说&#xff0c;他们更喜欢在学前教孩子一些经典国学和古诗词&#…

180.二叉树:二叉搜索树(力扣)

代码解决 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}* Tre…

好用的FTP客户端 Transmit 5中文

Transmit 5是一款专为macOS设计的FTP客户端软件&#xff0c;由Panic公司开发。它支持FTP、SFTP、WebDAV和Amazon S3等多种传输协议&#xff0c;满足用户多样化的文件传输需求。Transmit 5拥有用户友好的界面设计&#xff0c;提供了清晰的文件传输状态和详细的信息&#xff0c;让…

Java面经总结

一、java基础 1.重载和重写的区别 重载&#xff1a; 发生在同一类中&#xff0c;函数名必须一样&#xff0c;参数类型、参数个数、参数顺序、返回值、修饰符可以不一样。重写&#xff1a; 发生在父子类中&#xff0c;函数名、参数、返回值必须一样&#xff0c;访问修饰符必须…

【Android面试八股文】1. 你说一说Handler机制吧 2. 你知道Handler的同步屏障吗? 3. Looper一直在循环,会造成阻塞吗?为什么?

文章目录 一. 你说一说Handler机制吧二、你知道Handler的同步屏障吗&#xff1f;2.1 Handler消息的分类2.2 什么是同步屏障2.3 为什么要设计同步屏障2.4 同步屏障的用法 三、Looper一直在循环&#xff0c;会造成阻塞吗&#xff1f;为什么&#xff1f;扩展阅读 一. 你说一说Hand…

PostgreSQL和Oracle的数据类型对比:时间类型 #PG培训

在数据库管理系统中&#xff0c;时间数据类型是非常关键的一部分。时间数据类型的选择和使用直接影响到数据存储、查询效率和应用程序的设计。本文将对比PostgreSQL和Oracle在时间类型方面的实现和特性。 #PG考试#postgresql培训#postgresql考试#postgresql认证 日期和时间类型…

JAVA开发 创建TXT文件,写入并读取数据流输出到控制台

通过BufferedReader类和BufferedWriter类操作txt文件 1、BufferedReader类和BufferedWriter类1.1 BufferedReader类1.1.1 构造方法1.1.2 重要方法1.1.3 作用 1.2 BufferedWriter类1.2.1 构造方法1.2.2 重要方法1.2.3 作用 1.3 总结 2、案例2.1 实现代码2.2 输出 1、BufferedRea…

STM32理论 —— μCOS-Ⅲ(2/2):时间管理、消息队列、信号量、任务内嵌信号量/队列、件标志组

文章目录 9. 时间管理9.1 OSTimeDly()9.2 OSTimeDlyHMSM()9.3 OSTimeDlyResume()9.4 延时函数实验 10. 消息队列10.1 创建消息队列函数OSQCreate()10.2 发送消息到消息队列函数(写入队列)OSQPost()10.3 获取消息队列中的消息函数(读出队列)OSQPend()10.4 消息队列操作实验 11. …

产品经理简要介绍主流电商平台商品API接口的重要应用价值

主流电商平台&#xff1a; 截至目前&#xff08;2024年6月&#xff09;&#xff0c;主流电商平台通常指的是国内外知名的在线购物平台&#xff0c;包括但不限于以下几家&#xff1a; 1. 中国电商平台&#xff1a; - 淘宝网&#xff08;taobao.com&#xff09; - 天猫商…

阿里云香港服务器怎么样?

大家都知道阿里云是国内最受欢迎的云服务商&#xff0c;那么阿里云香港服务器究竟怎么样呢&#xff1f;和硅云的香港服务器用于做外贸网站等业务相比各有哪些优缺点呢&#xff1f; 阿里云和硅云在香港云服务领域有着广泛的应用和良好的口碑。然而&#xff0c;它们各自的特点和…

霍廷格TruPlasma RF 1001 to 1003 (G2/13)手侧通快电源

霍廷格TruPlasma RF 1001 to 1003 (G2/13)手侧通快电源