前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >绘图技巧 | 不同样式华夫饼图(Waffle charts)绘制技巧

绘图技巧 | 不同样式华夫饼图(Waffle charts)绘制技巧

作者头像
DataCharm
发布于 2022-05-24 07:53:41
发布于 2022-05-24 07:53:41
1.7K00
代码可运行
举报
运行总次数:0
代码可运行

今天这篇推文,小编为大家介绍华夫饼图(Waffle charts) 的绘制方法,这次主要介绍使用R-waffle包进行绘制。主要内容如下:

  • R-waffle包简介
  • R-waffle包样例介绍

R-waffle包简介

使用R绘制华夫饼图最简单的方法是使用waffle包进行绘制(当然,你也可以使用ggplot2的geom_tile()和geom_point()函数绘制)。这里主要介绍waffle包waffle()、geom_pictogram()、geom_waffle()和scale_label_pictogram() 绘图函数,详细如下:

  • waffle():绘制方形华夫饼图
  • geom_waffle():绘制方形华夫饼图图层(用法和ggplot2相似)
  • geom_pictogram():绘制类似图形文字的集合图层。
  • scale_label_pictogram():与geom_pictogram()一起使用,使用Font Awesome字体映射标签。

接下来,通过各种例子介绍上述介绍的绘图函数。

R-waffle包样例介绍

1. waffle():

基本例子:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
library(tidyverse)
library(ggtext)
library(hrbrthemes)
library(wesanderson)
library(LaCroixColoR)
library(RColorBrewer)
library(waffle)

parts <- data.frame(
  names = LETTERS[1:4],
  vals = c(80, 30, 20, 10)
)
waffle_plot <- waffle(parts,rows = 8)+
  theme_ipsum(base_family = "Roboto Condensed",grid = "") +
  labs(
  title = "Example of <span style='color:#D20F26'>waffle::waffle() function</span>",
  subtitle = "processed charts with <span style='color:#1A73E8'>waffle()</span>",
  caption = "Visualization by <span style='color:#0057FF'>DataCharm</span>") +
  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),
        axis.text.x = element_blank(),
        axis.text.y = element_blank())

Example01 of waffle()

当然你还可以通过设置use_glyph参数,使用fontawesome 图标进行绘制,如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
waffle(parts,rows = 8,
                      colors = c("#9DC8C8", "#58C9B9", "#519D9E","#D1B6E1"),
                      use_glyph = "file-medical",
                      size=5,legend_pos = "bottom")+
····

Example02 of waffle()

2.geom_waffle():

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
df <- data.frame(
  parts = factor(rep(month.abb[1:3], 3), levels=month.abb[1:3]),
  vals = c(10, 20, 30, 6, 14, 40, 30, 20, 10)
)
df_count <- df %>% count(parts, wt = vals)
plot01 <- ggplot(data = df_count,aes(fill = parts, values = n)) +
  geom_waffle(n_rows = 20, size = .5, colour = "black", flip = TRUE) +
  #ggsci::scale_fill_lancet(labels = c("Fruit", "Sammich", "Pizza"))+
  scale_fill_manual(values = lacroix_palette(type = "paired"),
                    labels = c("Fruit", "Sammich", "Pizza")) +
  guides(fill=guide_legend(nrow=1,byrow=TRUE,reverse = TRUE,title=NULL))+
  labs(
    title = "Example of <span style='color:#D20F26'>waffle::geom_waffle function</span>",
    subtitle = "processed charts with <span style='color:#1A73E8'>geom_waffle()</span>",
    caption = "Visualization by <span style='color:#0057FF'>DataCharm</span>") +
  theme_ipsum(base_family = "Roboto Condensed",grid="") +
  theme_enhance_waffle()+
  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),
        legend.position = 'bottom',)

Example01 of geom_waffle

「Waffle Bar Charts」

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
test02 <-  storms %>% filter(year >= 2010) %>% count(year, status)
ggplot(test02, aes(fill = status, values = n)) +
  geom_waffle(color = "white", size = .25, n_rows = 10, flip = TRUE) +
  facet_wrap(~year, nrow = 1, strip.position = "bottom") +
  scale_x_discrete() + 
  scale_y_continuous(labels = function(x) x * 10,expand = c(0,0)) +
  scale_fill_manual(values = lacroix_palette(type = "paired"),
                    name=NULL) +
  coord_equal() +
  labs(
    title = "Example of <span style='color:#D20F26'>waffle::geom_pictogram function</span>",
    subtitle = "processed charts with <span style='color:#1A73E8'>geom_pictogram()</span>",
    caption = "Visualization by <span style='color:#0057FF'>DataCharm</span>",
    x = "Year",
    y = "Count") +
  theme_minimal(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),
        legend.position = 'bottom',
        panel.grid = element_blank(),
       axis.ticks.y = element_line()) +
  guides(fill = guide_legend(reverse = TRUE))

Example of geom_waffle()

通过此例子,你就可以通过使用不同图方形个数表示不同类别的个数,当然,你也可以使用不同样式图标进行表示。

3. geom_pictogram()和scale_label_pictogram()

我们还还可以通过geom_pictogram()scale_label_pictogram()绘图函数使用fontawesome字体图标进行绘制,例子如下(样例中使用的字体获取方式见文末):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#导入字体:比较重要的一步
library(showtext)
font_add(family = "FontAwesome5Free-Solid", regular = "E:\\Download Fonts\\fa-solid-900.ttf")
font_add(family = "FontAwesome5Free-Regular", regular = "E:\\Download Fonts\\fa-regular-400.ttf")
font_add(family = "FontAwesome5Brands-Regular", regular = "E:\\Download Fonts\\fa-brands-400.ttf")
font_add(family = "Roboto Condensed",regular = "E:\\Download Fonts\\RobotoCondensed-Regular.ttf")

plot02 <- ggplot(data = df_count) +
  geom_pictogram(aes(label = parts, values = n,colour = parts),n_rows = 10,
                 flip = TRUE, make_proportional = TRUE) +
  scale_colour_manual(values = lacroix_palette(type = "paired"),
                      labels = c("Fruit", "Sammich", "Pizza")) +
  scale_label_pictogram(
    values = c("apple-alt", "bread-slice", "pizza-slice"),
    labels = c("Fruit", "Sammich", "Pizza")
  ) +
  guides(fill=guide_legend(nrow=1,byrow=TRUE,reverse = TRUE,title=NULL))+
  labs(
    title = "Example of <span style='color:#D20F26'>waffle::geom_pictogram()  function</span>",
    subtitle = "processed charts with <span style='color:#1A73E8'>geom_pictogram()</span>",
    caption = "Visualization by <span style='color:#0057FF'>DataCharm</span>") +
  theme_ipsum(grid="") +
  theme_enhance_waffle()+
  theme(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),
        legend.position = 'bottom',)

Example Of geom_pictogram

综上,R-waffle包绘制华夫饼图(Waffle charts) 的主要绘制方法都已介绍完,当然还有许多优秀的函数没介绍到,感兴趣的小伙伴可自行搜索哈~~

总结

本期,小编介绍了使用R-waffle包绘制华夫饼图(Waffle charts),当然,小编更喜欢R-waffle包可使用Font Awesome字体作为labels的这一功能,同时,小伙伴们也注意下字体的引用哈

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-04-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DataCharm 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
Caddy VS Nginx,谁领风骚
盘古开发框架 缺省使用 Caddy 来提供 WebServer 能力和 API 网关角色(反向代理)。(当然,直接换成 Nginx 也是可以的)
码农大熊
2022/05/10
8010
Caddy VS Nginx,谁领风骚
Caddy 2 的安装与配置
Caddy是一个Go编写的Web服务器,类似于Nginx,Caddy提供了更加强大的功能,相较于Nginx来说使用Caddy有如下优势:
BinGo_Blog
2022/11/01
5.4K0
使用Caddy配置同一域名下的前后分离
倒腾了小半个下午,平时配的都是不同域名下的前后分离,头一回使用 Caddy 配置同一个域名下的前后分离。
HomeboyC
2022/09/22
1.4K0
Caddy Web服务器深度解析与对比:Caddy vs. Nginx vs. Apache
摘要 🐅 猫头虎博主在此!随着 Web 服务器的发展,选择合适的服务器变得越来越重要。您是否听说过 Caddy,那个自动支持 HTTPS 的 Web 服务器?或者您是否在考虑使用 Nginx 和 Apache?本篇文章将深入探讨 Caddy,并与 Nginx 和 Apache 进行比较。如果您正在研究 Web 服务器或 搜索 “Caddy 与 Nginx 和 Apache 的对比”,那么这篇文章正是您需要的!
猫头虎
2024/04/09
6.4K0
Caddy Web服务器深度解析与对比:Caddy vs. Nginx vs. Apache
使用Caddy一键部署网站+自动SSL小绿锁
使用 Caddy 一键部署网站并自动配置 SSL 证书(包括小绿锁),可以通过以下步骤轻松完成。Caddy 是一个非常便捷的 web 服务器,具有自动 SSL 配置的功能,适合初学者和生产环境使用。
是山河呀
2025/01/26
6210
如何基于盘古开发框架开发Dubbo微服务网关
在上文《如何开发微服务应用》中,已经介绍了如何开发一个微服务应用以及微服务模块之间的互相调用。本文介绍如何将微服务发布为 HTTP 接口供前端调用。
码农大熊
2022/05/06
5950
如何基于盘古开发框架开发Dubbo微服务网关
超越 Nginx!号称下一代 Web 服务器,用起来够优雅!
Caddy是一款功能强大,扩展性高的Web服务器,目前在Github上已有38K+Star。Caddy采用Go语言编写,可用于静态资源托管和反向代理。
macrozheng
2022/04/12
8170
超越 Nginx!号称下一代 Web 服务器,用起来够优雅!
利用Caddy替代nginx提供web服务
IT不难
2024/12/23
1910
利用Caddy替代nginx提供web服务
下一个 nginx?caddy 自动 https 真香
我们通常在部署 web 服务的时候往往会选择 nginx 作为最前面的一个狠角色,它的性能和能力大家也是有目共睹的,反向代理负载均衡等等。而作为后起之秀 caddy 却不被人所熟知,不过渐渐的也开始展露头角。 今天我就来介绍这个 caddy ,为什么我会称它有可能成为下一个 nginx。
LinkinStar
2022/09/01
1.8K0
下一个 nginx?caddy 自动 https 真香
使用 Caddy 替代 Nginx
Caddy 是一个 Go 编写的 Web 服务器,类似于 Nginx。相较于 Nginx 来说,Caddy 的配置简单了很多,而且默认启用了 https,更加的安全。
EmoryHuang
2022/10/31
2.7K0
使用 Caddy 替代 Nginx
盘古开发框架集成 ShenYu 网关实现 Dubbo 泛化调用
盘古开发框架下实现微服务网关的缺省姿势为基于 pangu-web 模块的传统接口调用模式,具体请参考文档:如何发布微服务 (API 网关)。本文提供另外一种通过集成Apache ShenYu 实现网关泛化调用 Dubbo 服务将其发布为 HTTP 接口的可选方法。
码农大熊
2022/05/08
1.1K0
盘古开发框架集成 ShenYu 网关实现 Dubbo 泛化调用
图解跨域请求、反向代理原理,对前端更友好的反向代理服务器 - Caddy
本文采用图文解析、结合实战的方式进行网络原理解析,帮助大家去掌握一些网络知识,并了解 Caddy 的基本使用(见下图)。
落落落洛克
2021/01/08
3.3K0
图解跨域请求、反向代理原理,对前端更友好的反向代理服务器 - Caddy
如何在PHP中使用 Caddy2 协同服务
Caddy Server 是一个模块化的现代Web服务器平台,支持自动HTTPS证书,QUIC和HTTP/2,Zstd和Brotli压缩,以及各种现代功能以及经典的Web服务器功能,如可配置的虚拟主机,URL重写和重定向,反向复制等。
Tinywan
2024/02/21
4650
如何在PHP中使用 Caddy2 协同服务
Docker/Rancher2安装部署Caddy2
官网:https://caddyserver.com/docs/ 中文教程网站:https://caddy2.dengxiaolong.com/docs/ Github地址:https://github.com/caddyserver/caddy
4xx.me
2022/11/28
1.5K0
Docker/Rancher2安装部署Caddy2
盘古开发框架简介,工业级 Web 接口服务和中后台业务系统开发框架
盘古开发框架 是一套轻量稳健的工业级 Web 接口服务和中后台业务系统开发框架。原生支持微服务分布式架构的同时也兼容单体应用架构模式。基于商业友好的 Apache-2.0 协议免费开源发布。我们希望不仅是开源的受益者也能成为开源贡献者,与开源社区一起共建共享开源生态。
码农大熊
2022/04/04
9850
盘古开发框架简介,工业级 Web 接口服务和中后台业务系统开发框架
Caddy:安装、使用和配置指南
今天我们要聊聊的是一个非常酷的开源 HTTP/2 web 服务器——Caddy。Caddy 是用 Go 语言编写的,它的配置文件简洁明了,功能强大,使得 HTTP 服务的部署变得更加简单。Caddy 的最大特点是默认启用 HTTPS。在这篇文章中,我将向你介绍如何安装和使用 Caddy,以及如何通过 Caddyfile 和 API 来配置 Caddy。
TechHarmony
2024/04/12
6.3K0
使用Caddy Security 为你的网站增加自动置登录鉴权
很多情况下网站登录后访问是必不可少的,如果你的需求简单或者懒得开发。使用Caddy Security可以很简单的为你解决问题。
小刀c
2023/10/23
7500
使用Caddy Security 为你的网站增加自动置登录鉴权
Caddy的简单用法
陳斯托洛夫斯記
2024/08/07
3370
2022Java微服务最全面试题集
分布式架构就是将传统结构按照模块进行拆分,不同的人负责不同的模块,不会产生代码冲突问题,方便开发。
张哥编程
2024/12/13
1090
【玩转Lighthouse】使用Caddy搭建轻量的Web服务器
一个简单,轻量,且对新手友好的web服务器,甚至可以自动帮你部署SSL证书,对于新手来说相对友好。
Im小泽
2022/04/12
2.2K0
相关推荐
Caddy VS Nginx,谁领风骚
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验