这总商务会议图怎么绘制?一行代码搞定...

news2024/7/6 19:53:42

今天这篇推文小编给大家介绍一个一直想绘制的图表-议会图(parliament diagrams),当然这也是柱形图系列变形的一种。绘制这种图表也是超级简单的,只需使用R-ggpol包进行绘制即可,当然,改包还提供其他优秀的绘图函数,下面就一起来看下吧。

  • R-ggpol包简介

  • R-ggpol包实例介绍(议会图为主)

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

R-ggpol包简介

  1. 官网:

https://github.com/erocoar/ggpol

  1. 绘图函数

作为ggplot2绘图系统中的一员,其安装方便(RStudio直接搜索安装即可)而且还可以通过ggplot2强大的绘图函数设计出自己的可视化作品。其提供的主要绘图函数如下:

  • geom_arcbar(): 绘制跨越180度的弧形条形图。

  • geom_parliament(): 绘制议会图(parliament diagrams),即圆弧上的圆圈,其中每个圆圈代表一个议会议员。指定了fill或color即可进行填充和颜色的映射。

  • geom_circle(): 绘制具有指定半径的圆多边形,注意和ggplot2的geom_point()区分开。

  • geom_tshighlight(): 可对绘制时间序列的图表进行突出作用,也是比较常用的绘图技巧。

  • geom_boxjitter(): 绘制了一个混合箱形图-半箱形图且带有误差线的图。

R-ggpol包实例介绍

「geom_boxjitter」:

(绘制了一个混合箱形图-半箱形图且带有误差线的图)

library(ggpol)
library(tidyverse)
library(ggtext)
library(hrbrthemes)
library(LaCroixColoR)

library(ggsci) # 使用科学系配色
df <- data.frame(score = rgamma(150, 4, 1), 
                 gender = sample(c("M", "F"), 150, replace = TRUE), 
                 genotype = factor(sample(1:3, 150, replace = TRUE)))

boxjitter <- ggplot(df) + 
  geom_boxjitter(aes(x = genotype, y = score, fill = gender),
                 jitter.shape = 21, jitter.color = NA, 
                 jitter.height = 0, jitter.width = 0.04,
                 outlier.color = NA, errorbar.draw = TRUE) +
  ggsci::scale_fill_jco() +
  labs(
    title = "Example of <span style='color:#D20F26'>ggpol::geom_boxjitter function</span>",
    subtitle = "processed charts with <span style='color:#1A73E8'>geom_boxjitter()</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)
      )

geom_boxjitter example

geom_boxjitter example

顺便提一下,很喜欢sci包的这个配色,特适合绘制科研图表哦~~

「geom_tshighlight」

可对绘制时间序列的图表进行突出作用,也是比较常用的绘图技巧。

time_hlight <- ggplot(economics, aes(x = date, y = unemploy)) +
  geom_line() +
  geom_tshighlight(aes(xmin = as.Date("01/01/1990", format = "%d/%m/%Y"), 
                       xmax = as.Date("01/01/2000", format = "%d/%m/%Y")),
                       alpha = 0.01) +
  labs(
    title = "Example of <span style='color:#D20F26'>ggpol::geom_tshighlight function</span>",
    subtitle = "processed charts with <span style='color:#1A73E8'>geom_tshighlight()</span>",
    caption = "Visualization by <span style='color:#DD6449'>DataCharm</span>") +
  hrbrthemes::theme_ft_rc(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)
      )

geom_tshighlight example

geom_tshighlight example

这里使用了hrbrthemes::theme_ft_rc()主题风格(暗黑系列),也是小编较常用的主题哦~~

「geom_arcbar」

绘制跨越180度的弧形条形图。

#构建数据
test_data_bt <- data.frame(
  parties = factor(c("CDU", "CSU", "AfD", "FDP", "SPD",
                     "Linke", "Gruene", "Fraktionslos"),
                   levels = c("CDU", "CSU", "AfD", "FDP", "SPD",
                              "Linke", "Gruene", "Fraktionslos")),
  seats   = c(200, 46, 92, 80, 153, 69, 67, 2),
  # colors  = c("black", "blue", "lightblue", "yellow", "red",
  #             "purple", "green", "grey"),
  stringsAsFactors = FALSE)

arcbar <- ggplot(test_data_bt) + 
  geom_arcbar(aes(shares = seats, r0 = 5, r1 = 10, fill = parties),
              color="gray50" ,sep = 0.1) + 
  #scale_fill_manual(values = bt$colors) +
  scale_fill_manual(values = lacroix_palette(type = "paired"))+
  coord_fixed() +
  # 修改图例
  guides(fill=guide_legend(nrow=2,byrow=TRUE,reverse = TRUE,title=NULL))+
 # theme_void(base_family = "Roboto Condensed") +
  labs(
    title = "Example of <span style='color:#D20F26'>ggpol::geom_arcbar function</span>",
    subtitle = "processed charts with <span style='color:#1A73E8'>geom_arcbar()</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),
    # 去除刻度线和网格线
    axis.text.x = element_blank(),
    axis.text.y = element_blank(),
    panel.grid.major = element_blank(),
    panel.grid.minor = element_blank(),
    panel.background = element_rect(fill="#FEFBCD"),
    panel.border = element_rect(fill = NA,colour = "#FEFBCD"),
    plot.background = element_rect(fill="#FEFBCD",colour = "#FEFBCD"),
    # 修改图例参数
    legend.position = 'bottom',
    legend.direction = "horizontal",
    legend.spacing.y = unit(0.1,"cm"),
    legend.spacing.x = unit(0.1,"cm"),
    legend.key.size = unit(0.8, 'lines'),
    legend.text = element_text(margin = margin(r = .5, unit = 'cm'))
  )

geom_arcbar example

geom_arcbar example

这里我们在hrbrthemes::theme_ipsum() 主题基础上进行了一些修改,具体代码中均有解释。

「geom_parliament」

议会(项目)图(parliament diagrams)

library(readxl)

df<-read_excel("G:\\DataCharm\\可视化包介绍(绘制)\\ggpol\\parliament.xlsx")
#head(df)
df1<-df%>%group_by(Party)%>%summarise(Seats=sum(Seats))%>%arrange(Seats) # 简单的数据处理
df1$legend <- paste0(df1$Party," (", df1$Seats,")") # 拼接字符串

parliament <- ggplot(data = df1) +
  geom_parliament(aes(seats = Seats,fill =  Party),color="black") +
  scale_fill_manual(values = lacroix_palette(type = "paired"),labels=df1$legend) +
  # 修改图例
  guides(fill=guide_legend(nrow=3,byrow=TRUE,reverse = TRUE,title=NULL))+
  # 添加描述性文字
  annotate("text", x = 0, y = 0.4, 
           label = "Seats in the Parliament :\n 423 occupied \n 27 vacant",
           colour = "gray20",size=5) +
  labs(
    title = "Example of <span style='color:#D20F26'>ggpol::geom_parliament function</span>",
    subtitle = "processed charts with <span style='color:#1A73E8'>geom_parliament()</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),
    # 去除刻度线和网格线
    axis.text.x = element_blank(),
    axis.text.y = element_blank(),
    panel.grid.major = element_blank(),
    panel.grid.minor = element_blank(),
    panel.background = element_rect(fill="#FEFBCD"),
    panel.border = element_rect(fill = NA,colour = "#FEFBCD"),
    plot.background = element_rect(fill="#FEFBCD",colour = "#FEFBCD"),
    # 修改图例参数
    legend.position = 'bottom',
    legend.direction = "horizontal",
    legend.spacing.y = unit(0.1,"cm"),
    legend.spacing.x = unit(0.1,"cm"),
    legend.key.size = unit(0.8, 'lines'),
    legend.text = element_text(margin = margin(r = .5, unit = 'cm'))
  )

geom_parliament example

geom_parliament example

到这里呢,议会(项目)图(parliament diagrams)也就绘制完成了,虽然一些交互式工具(如Highcharts)也可快速绘制,打我们的目的还是进行细节、配色的练习哦~~

总结

本期推文终于介绍了小编一直心心念念的可视化图了,同时,小伙伴们也应知道的是,善用一些优秀的主题包和颜色包,可以使你的可视化作品颜值提升的不止一个档次哦~,好了,感兴趣的小伙伴赶快去练习下吧~~

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

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

相关文章

Final Cut Pro:剪辑之巅,创意无界

Final Cut Pro是一款由Apple推出的专业视频剪辑软件&#xff0c;以其强大的功能和卓越的性能&#xff0c;成为众多影视制作人员、广告设计师和视频编辑师的首选工具。 Final Cut Pro获取 Final Cut Pro提供了丰富的剪辑功能&#xff0c;包括多轨道编辑、精确剪辑控制、实时预览…

AI绘画工具介绍(清晰图例)

一、引言 随着科技的飞速发展&#xff0c;人工智能&#xff08;AI&#xff09;已经逐渐渗透到我们生活的各个领域&#xff0c;绘画艺术界也不例外。近年来&#xff0c;AI在绘画领域的应用日益广泛&#xff0c;展现出了令人瞩目的发展趋势。通过深度学习和图像处理技术&#xff…

如何在浏览器书签栏设置2个书签实现一键到达网页顶部和底部

本次设置浏览器为&#xff1a;Chrome浏览器&#xff08;其他浏览器可自行测试&#xff09; 1&#xff0c;随便收藏一个网页到浏览器书签栏 2&#xff0c;右键这个书签 3&#xff0c;修改 4&#xff0c;修改名称 5&#xff0c;修改网址&#xff1a; javascript:(function(…

vue 之 vuex

目录 vuex 是什么 Vuex管理哪些状态呢&#xff1f; Vuex 页面刷新数据丢失怎么解决 1. 使用浏览器的本地存储 2. 使用 Vuex 持久化插件 3. 使用后端存储 注意事项 Vuex 为什么要分模块并且加命名空间 vuex 是什么 vuex 是专门为 vue 提供的全局状态管理系统&#xff0c…

flask南京市旅游景点信息可视化的设计与实现-计算机毕业设计源码02941

摘 要 信息化社会内需要与之针对性的信息获取途径&#xff0c;但是途径的扩展基本上为人们所努力的方向&#xff0c;由于站在的角度存在偏差&#xff0c;人们经常能够获得不同类型信息&#xff0c;这也是技术最为难以攻克的课题。针对南京市旅游景点信息可视化等问题&#xff0…

【stable diffusion】ComfyUI扩展安装以及”127.0.0.1拒绝了我们的连接请求“解决记录

扩展安装 虽然大家都推荐将扩展包直接放到extension文件夹的方式&#xff0c;但我还是推荐直接在sd webui的扩展处下载&#xff0c;酱紫比较好维护一点&#xff0c;我个人感觉。 按照上图顺序点击会出现”URLError: <urlopen error [Errno 11004] getaddrinfo failed>”…

C# Winform DPI自适应方案

Winform窗体随着屏幕的DPI缩放,会引起窗体变形及字体变形。 1.设置窗体和自定义用户控件的AutoScaleMode为None 实现目标:禁止窗体因为字体大小缩放变形 因为显示的高分屏,然后操作系统的设置了字体缩放引起的。窗体默认的AutoScaleMode = Font,控件会因为高分屏自动缩放…

算法体系-21 第二十一 暴力递归到动态规划(三)

一 最长回文子串 1.1 描述 给定一个字符串str&#xff0c;返回这个字符串的最长回文子序列长度 比如 &#xff1a; str “a12b3c43def2ghi1kpm” 最长回文子序列是“1234321”或者“123c321”&#xff0c;返回长度7 1.2 分析 1.2.1 先将原传逆序&#xff0c;求原串和反转后的…

复旦测评13家大模型高考数学成绩,字节豆包II卷超GPT-4o夺冠

近日&#xff0c;复旦大学自然语言处理&#xff08;NLP&#xff09;实验室LLMEVAL团队公布了2024 年高考数学大模型评测结果。数据显示&#xff0c;字节豆包在2024高考数学新 II 卷客观题正确率达到74.66%&#xff0c;在13家大模型中排名首位&#xff0c;阿里千问和GPT-4o分列二…

MySQL查询数据库中所有表名表结构及注释以及生成数据库文档

MySQL查询数据库中所有表名表结构及注释 生成数据库文档在后面&#xff01;&#xff01;&#xff01; select t.TABLE_COMMENT -- 数据表注释 , c.TABLE_NAME -- 表名称 , c.COLUMN_COMMENT -- 数据项 , c.COLUMN_NAME -- 英文名称 , -- 字段描述 , upper(c.DATA_TYPE) as …

Python-程序流程控制

目录 1. 分支语句 1.1 if 1.2 if-else 1.3 if-elif-else 2. 循环语句 2.1 while 2.2 for 3.跳转语句 3.1 break 3.2 continue 1. 分支语句 1.1 if aint(input("请输入成绩")) if a>100:print ("牛逼") if a<60:print("不牛逼")1.2 if-e…

2002-2023年款别克君威 君威GS维修手册和电路图资料更新

经过整理&#xff0c;2002-2023年款别克君威 君威GS全系列已经更新至汽修帮手资料库内&#xff0c;覆盖市面上99%车型&#xff0c;包括维修手册、电路图、新车特征、车身钣金维修数据、全车拆装、扭力、发动机大修、发动机正时、保养、电路图、针脚定义、模块传感器、保险丝盒图…

公司面试题总结(五)

25.谈一谈箭头函数与普通函数的区别&#xff0c;箭头函数主要解决什么问题&#xff1f; 箭头函数与普通函数的区别&#xff1a; ⚫ 语法简洁性&#xff1a; ◼ 箭头函数使用>符号定义&#xff0c;省略了 function 关键字&#xff0c;使得语法更为紧凑。 ◼ 对于单行函…

如何更新 iOS 18 Beta 版本?具体步骤总结

如何更新 iOS 18 Beta 想必有一些用户已经迫不及待的想要知道怎么更新 iOS 18 Beta 版本了吧&#xff0c;下面就给大家总结了具体的操作步骤&#xff1a; 在更新 iOS 18 Beta 版本之前记得我们需要将手机的数据进行备份&#xff0c;大家可以自行选用备份软件比如 iCloud 等。…

mtk低压充电关机充电关机动画显示

lk下充电&#xff1a; 在启动时读取电压小于BATTERY_LOWVOL_THRESOLD便会到lk循环充电&#xff0c;这里的BATTERY_LOWVOL_THRESOLD是3.45v 1、mtk_battery.c&#xff1a; 通过fg计算电池充电电流&#xff0c;电池温度等2、mtk_charger_intf.c&#xff1a; 在mtk_charger_init…

jsl+rs???企业信用系统,秒了~

文章目录 写在前面流程分析521412 加速乐第一次请求第二次请求第三次请求 瑞数看看效果秒了~ 本文仅供参考学习使用&#xff0c;不得用于非法盈利&#xff0c;如有侵权&#xff0c;请联系作者删 写在前面 好久没更新了&#xff0c;送给有缘人 目标网站&#xff1a;aHR0cHM6Ly9…

周四 A股震荡走低,行情总结

文章正文 周四&#xff0c;A股全日震荡走低&#xff0c;上证指数收跌0.28%&#xff0c;深成指跌近0.创业板指跌0.09%。猪肉、有色金属、中药、磷化工、煤炭、房地产、白酒行业跌幅靠前。科特估概念股掀起20cm涨停潮&#xff0c;半导体、机器人、消费电子、光伏、虚拟电厂概念股…

C++ ─── STL 以及string

前言&#xff1a;什么是STL STL(standard template libaray-标准模板库)&#xff1a;是C标准库的重要组成部分&#xff0c;不仅是一个可复用的组件库&#xff0c;而且 是一个包罗数据结构与算法的软件框架 STL的六大组件 1. 为什么学习string类&#xff1f; 1.1 C语言中的字符…

CUDA和Pytorch安装记录

1、关键点&#xff1a; 显卡算力 < cuda runtime version < cuda driver version 显卡算力&#xff1a;根据显卡型号查表获得。https://en.wikipedia.org/wiki/CUDA cuda runtime version&#xff1a;GPU的编程平台版本。 cuda driver version&#xff1a;显卡驱动版本。…

Linux网络编程:高级IO

目录 前言&#xff1a; 初识五种IO模型 初识高级IO 同步IO和异步IO 1.再谈五种IO模型 1.1.阻塞IO 1.2.非阻塞IO 1.3.信号驱动IO 1.4.IO多路复用 1.5.异步IO 前言&#xff1a; 在我们过去的学习中&#xff0c;我们对于IO的认识局限于input、output&#xff0c;也就是输…