默认图表太丑!?快来看看这个好看的绘图主题吧~~

news2025/2/5 18:01:39

有很多小伙伴经常私信给小编,问自己绘制的图表为啥没小编绘制的精美? 听到这句话,小编老脸一红,还是比较惭愧的,因为并不是像小伙伴说的那样对每一个图表元素都进行定制化涉及操作,是借助优秀的“第三方工具”的。而这第三方工具就是本篇推文的重点-*绘图主题(Themes)*。今天小编就介绍一下自己在绘图过程中经常使用的优秀图表主题包-hrbrthemes。主要的内容如下:

  • ggplot2 主要绘图主题包简单汇总

  • R-hrbrthemes包介绍

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

ggplot2 主要绘图主题包简单汇总

作为绘图功能强大的ggplot2,其优秀的第三方包可谓是覆盖很多领域,当然,我们不能一一进行介绍(太繁琐且专业不同),但其最终结果都是进行可视化绘制,基于此,我们就对其绘图主题包进行简单汇总。

  • ggplot2 本身主题

查阅ggplot2官网主题介绍(https://ggplot2.tidyverse.org/reference/ggtheme.html),其本身就有众多优秀的绘图主题如下:

theme_gray()
theme_bw()
theme_linedraw()
theme_light()
theme_dark()
theme_minimal()
theme_classic()
theme_void()
theme_test()

各自的绘图样式,大家也可自行访问上述网站进行查看。但是,gggplot2自带的主题在颜色配置和字体设置等方面难免会有点“差强人意”的感觉,对可视化定制需求较高的小伙伴来说,想要绘制出理想的可视化作品,则还需要结合theme() 函数对图例(legend)、刻度(ticks)、字体(fonts)等图表颜色进行设置。

  • ggthemr包 网址:https://github.com/Mikata-Project/ggthemr

ggthemr包可以让你对图表的颜色、背景、字体等绘图元素实现自动化设置,绘制出精美的可视化作品(颜色系也是符合大部分人审美需求的),这里给出部分样例:

flat

flat

flat dark

flat dark

solarized

solarized

  • ggthemes 包

网址:https://jrnold.github.io/ggthemes/

这个ggplot2 绘图主题包功能十分强大,其提供的主题函数也比较丰富,列举如下:

*theme_wsj()*:

theme_wsj()

*theme_fivethirtyeight()*:

theme_fivethirtyeight()

*theme_map()*:

theme_map

除此之外,ggthemes还提供大量的颜色系供大家使用,列举如下:

tableau_color_pal('tableau20')(20):

tableau_color_pal('tableau20')(20)

stata_pal("s2color")(15):

stata_pal("s2color")(15)

gdocs_pal()(20):

gdocs_pal()(20)

  • ggtech包

网址:https://github.com/ricardo-bion/ggtech

样例列举如下: theme_tech(theme="airbnb")

theme_tech(theme="airbnb")

*theme_tech(theme="google")*:

theme_tech(theme="google")

以上就大致列举出几个常用的ggplot2 绘图主题包,还有其他优秀的第三方包我没有列出,感兴趣的小伙伴可自行探索哈。

R-hrbrthemes包介绍

为什么将这个包进行单独的介绍了,因为小编的大部分可视化做作品大部分都是基于该主题包进行绘制的,该包无论从字体(当然,前提得安装)还是刻度、颜色配置,小编个人认为都是十分优秀和符合可视化审美的,接下来,我们简单进行介绍:

Themes(主题)

  • Base theme (Arial Narrow)

ggplot(mtcars, aes(mpg, wt)) +
  geom_point() +
  labs(x="Fuel efficiency (mpg)", y="Weight (tons)",
       title="Seminal ggplot2 scatterplot example",
       subtitle="A plot that is only useful for demonstration purposes",
       caption="Brought to you by the letter 'g'") + 
  theme_ipsum()

Base theme (Arial Narrow)

  • New FT Theme

ggplot(mtcars, aes(mpg, wt)) +
  geom_point(color = ft_cols$yellow) +
  labs(x="Fuel efficiency (mpg)", y="Weight (tons)",
       title="Seminal ggplot2 scatterplot example",
       subtitle="A plot that is only useful for demonstration purposes",
       caption="Brought to you by the letter 'g'") +
  theme_ft_rc()

New FT Theme

  • IBM Plex Sans

ggplot(mpg, aes(displ, hwy)) +
  geom_jitter(aes(color=class, fill=class), size=3, shape=21, alpha=1/2) +
  scale_x_continuous(expand=c(0,0), limits=c(1, 8), breaks=1:8) +
  scale_y_continuous(expand=c(0,0), limits=c(10, 50)) +
  scale_color_ipsum() +
  scale_fill_ipsum() +
  facet_wrap(~class, scales="free") +
  labs(
    title="IBM Plex Sans Test",
    subtitle="This is a subtitle to see the how it looks in IBM Plex Sans",
    caption="Source: hrbrthemes & IBM"
  ) +
  theme_ipsum_ps(grid="XY", axis="xy") +
  theme(legend.position="none") -> gg

flush_ticks(gg)

IBM Plex Sans

Scales

  • Scales (Color/Fill)

ggplot(mtcars, aes(mpg, wt)) +
  geom_point(aes(color=factor(carb))) +
  labs(x="Fuel efficiency (mpg)", y="Weight (tons)",
       title="Seminal ggplot2 scatterplot example",
       subtitle="A plot that is only useful for demonstration purposes",
       caption="Brought to you by the letter 'g'") + 
  scale_color_ipsum() +
  theme_ipsum_rc()

Scales (Color/Fill)

  • Scales (Axis)

count(mpg, class) %>% 
  mutate(pct=n/sum(n)) %>% 
  ggplot(aes(class, pct)) +
  geom_col() +
  scale_y_percent() +
  labs(x="Fuel efficiency (mpg)", y="Weight (tons)",
       title="Seminal ggplot2 column chart example with percents",
       subtitle="A plot that is only useful for demonstration purposes",
       caption="Brought to you by the letter 'g'") + 
  theme_ipsum(grid="Y")

Scales (Axis)

注意事项

很多小伙伴在第一次使用该包进行绘制时,都会出现“没相关字体的”的警告提示,这里给大家介绍下我解决的方法:

  1. 导入字体

R导入字体,我使用的代码如下:

#添加字体
windowsFonts(
   kaiti = windowsFont("STKAITI"),
   Cinzel = windowsFont("Cinzel"),#这里使用的是字体的主题名称
   Poppins = windowsFont("Poppins"),
   IBMPSBold = windowsFont("IBMPlexSans-Bold"),
   Roboto_Mono = windowsFont("Roboto Mono"),
   Open_Sans = windowsFont("Open Sans"),
   Roboto_Condensed = windowsFont("Roboto Condensed"),
   Open_Sans_ExtraBold = windowsFont("Open Sans ExtraBold"),
   Times_New_Roman = windowsFont("Times New Roman")
  )
  1. hrbrthemes包主题设置时引用

theme_ipsum(base_family = "Roboto_Condensed")

这里注意下,在theme_ipsum()中的base_family属性替换成第一步中的导入字体即可。当然,前提是安装了相关字体(中文字体也是可以的)

总结

本篇推文小编大致列举了ggplot2绘图主题,着重介绍了hrbrthemes的主题类型,希望大家可以多使用该包进行自己的可视化作品设计,当然了,主题函数还是和*themes()*函数结合使用,绘制出更加优秀的作品。灵活的使用绘图主题和颜色主题,可以帮助你省去大量定制化绘制的时间,提高绘图效率哦。

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

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

相关文章

视频编辑软件pitivi基本功之安装篇

视频编辑软件pitivi基本功之安装篇 台式机的系统是openSUSE-Leap-15.5-DVD-x86_64 应用程序——工具——终端,切换到root用户 ruhonglocalhost:~> su - 密码: localhost:~ # zypper search pitivi localhost:~ # zypper install pitivi ruhonglocalho…

linux学习:进程通信(管道+信号)

目录 管道 无名管道(PIPE) 特征 例子,通过pipe向父进程发送一段数据 ​编辑 有名管道(FIFO) 特征 例子 注意 信号 特征 api 例子1 例子2 例子3 例子4 信号相关的内核数据结构 管道 管道分为无名管道…

应对电力行业勒索攻击,看亚信安全防勒索方案的3大技战法

来源:中国电力大数据创新联盟会刊 近年来,国际、国内的勒索事件频发,勒索已经成为具备国家背景的团伙组织危害行为,各关基单位需要在原有的实战化安全攻防的基础之上,专项针对数据勒索进行防护体系建设,建立…

头文件修改触发重新构建依赖于此的文件 gcc 标志的使用 -MF -MD -MP

1,文件布局 2,头文件重构建 Makefile TARGET : libicarithmetic.soDEBUG_FLAGS : -O3 HEADER_FLAGS : -MD -MF $*.d -MP all: $(TARGET)SRC_C : \src/add.c \src/circ.c \src/div.c \src/mul.c \src/sub.cOBJ_C : $(SRC_C:.c.c.o) DEP_C : $(SRC_C:.c.…

单细胞分析|映射和注释查询数据集

reference映射简介 在本文中,我们首先构建一个reference,然后演示如何利用该reference来注释新的查询数据集。生成后,该reference可用于通过cell类型标签传输和将查询cell投影到reference UMAP 等任务来分析其他查询数据集。值得注意的是&am…

腾讯云幻兽帕鲁一键开服教程

腾讯云作为领先的云计算服务提供商,为广大用户提供了便捷、高效的游戏服务器搭建解决方案。其中,幻兽帕鲁一键开服功能,更是让游戏开服变得简单易懂。本文将为大家详细介绍腾讯云幻兽帕鲁一键开服的步骤,帮助大家轻松搭建自己的游…

net 5+ 服务创建

worker Service创建 在新版本服务中的创建,名称是Worker Service,从.NET Core 2.1开始,就可以使用辅助角色服务模板了,即Worker Service。它可以编写长期服务,作为 Windows 服务进行托管,还支持跨平台部署…

做抖音小店保证金可以不交吗?不交保证金,会有什么后果?

哈喽~我是电商月月 说到最赚钱的软件,大家第一个想的就是抖音了,很多不想直播,但又想在抖音上赚钱的人就选择了抖音小店 但普通人创业,开店遇到的第一个困难就是类目保证金的缴纳 几千块钱虽然能拿的出来,但怕就怕在…

提升数据质量的三大要素:清洗prompt、数据溯源、数据增强(含Reviewer2和PeerRead)​

前言 我带队的整个大模型项目团队超过40人了,分六个项目组,每个项目组都是全职带兼职,且都会每周确定任务/目标/计划,然后各项目组各自做任务拆解,有时同组内任务多时 则2-4人一组 方便并行和讨论,每周文档…

初始监控工具--zabbix和安装

一、Zabbix 1. 监控系统的必要性 作为一个技术人员,需要会使用监控系统查看服务器状态以及网站流量指标,利用监控系统的数据去了解上线发布的结果和网站的健康状态。 2. 监控软件的作用 利用一个优秀的监控软件,我们可以: ● 通过一个友…

Qt 创建控件的两种方式

目录 Qt 创建控件的两种方式 通过ui界面创建控件 通过代码方式创建控件 Qt 创建控件的两种方式 通过ui界面创建控件 这里当然我们是需要先有一个项目的,按照我们之前创建项目的步骤,我们可以先创建一个 Widget 的项目,但是 MainWindow 也…

【代码随想录】day46:单词拆分,多重背包

单词拆分 1.把单词看成物品,字符串看成背包—>完全背包问题 2.排列问题:因为物品之间的组成顺序很重要,所以需要考虑顺序 。因为"apple" “apple” “pen” 或者 “pen” “apple” “apple” 是不可以的 d[j]:字符串长度为…

LD3320语音模块开发以及未来拿到其他模块的开发方式

当我们拿到一块模块进行开发的时候,一定要拿到配套的使用手册,不然在短时间内根本下不了手 一、使用source Insight来阅读源码 1.建立文件夹 2. 在source Insight放入该文件 3.添加源码 4.解决Source Insight乱码的问题 5.让各个代码模块之间有关联 二、…

数据结构面试题(常见概念题)

什么是 AVL 树? AVL 树是平衡二叉查找树,增加和删除节点后通过树形旋转重新达到平衡。右旋是以某个节点为中心,将它沉入当前右子节点的位置,而让当前的左子节点作为新树的根节点,也称为顺时针旋转。同理左旋是以某个节…

SpringBoot通过UUid实现文件上传接口及问题解决

在controller中,添加对应的方法体: PostMapping("/upload")ResponseBodypublic ApiRestResponse upload(HttpServletRequest httpServletRequest, RequestParam("file")MultipartFile file) throws IOException {String fileName f…

国外新闻媒体稿件宣发:海外pr发稿干货秘籍-大舍传媒

一、了解目标市场和受众 发布新闻稿件的首要步骤是了解你的目标市场和受众。在撰写新闻稿件之前,你需要研究你的目标市场,了解他们的需求、兴趣和习惯。你还需要了解你的受众,包括他们的年龄、性别、职业、地理位置和媒体使用习惯等。这些信…

基于springboot实现在线考试系统设计【项目源码+论文说明】

基于springboot实现在线考试管理系统演示 摘要 随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了基于JavaWeb技术的在线考试系统设计与实现的开发全过程。通过分析基于Java Web技术的在线考试系统设计与实现管理的不…

数据结构复习指导之绪论(算法的概念以及效率的度量)

文章目录 绪论: 2.算法和算法评价 知识总览 2.1算法的基本概念 知识点回顾与重要考点 2.2算法效率的度量 知识总览 1.时间复杂度 2.空间复杂度 知识点回顾与重要考点 归纳总结 绪论: 2.算法和算法评价 知识总览 2.1算法的基本概念 算法( Al…

Spring Boot 整合 Redis 集群详解

前言: 项目中需要使用 Redis 做缓存数据库,本文分享一下 Spring Boot 项目集成 Redis 的过程以及踩过的坑。 Spring Boot 集成 Redis 可以分为三大步,如下: 在 proerties 或者 yml 文件中添加 redis 和 lettuce 配置。项目 pom…

[已解决]问题:root.users.hdfs is not a leaf queue

问题:root.users.hdfs is not a leaf queue CDH集群报错: Exception in thread “main” org.apache.hadoop.yarn.exceptions.YarnException: Failed to submit application_1713149630679_0005 to YARN : root.users.hdfs is not a leaf queue 思路 …