玫瑰图和雷达图(自备)

目录

玫瑰图

数据格式

绘图基础

绘图升级(文本调整)

玫瑰图

下载数据data/2020/2020-11-24 · mirrors_rfordatascience/tidytuesday - 码云 - 开源中国 (gitee.com)

R语言绘图—南丁格尔玫瑰图 - 知乎 (zhihu.com)

数据格式
rm(list = ls()) 
library(ggplot2)
library(dplyr)
library(stringr)
hike_data <- readRDS("hike_data.rds")
hike_data$region <- as.factor(word(hike_data$location, 1, sep = " -- "))
hike_data$length_num <- as.numeric(sapply(strsplit(hike_data$length, " "), "[[", 1))plot_df <- hike_data %>%group_by(region) %>%     ##按照region列进行分组summarise(sum_length = sum(length_num), mean_gain = mean(as.numeric(gain)),n = n()) %>% ##每个分组计算总长度(sum_length)、平均增益(mean_gain)和数量(n)mutate(mean_gain = round(mean_gain, digits = 0))#对mean_gain列进行舍入操作,保留0位小数
plot_df
# A tibble: 11 × 4region                  sum_length mean_gain     n<fct>                        <dbl>     <dbl> <int>1 Central Cascades             2131.      2260   2262 Central Washington            453.       814    803 Eastern Washington           1334.      1591   1434 Issaquah Alps                 383.       973    775 Mount Rainier Area           1602.      1874   1966 North Cascades               3347.      2500   3017 Olympic Peninsula            1700.      1572   2098 Puget Sound and Islands       810.       452   1919 Snoqualmie Region            1915.      2206   219
10 South Cascades               1630.      1649   193
11 Southwest Washington          825.      1185   123

绘图基础
p1 <- ggplot(data = plot_df,aes(x = reorder(str_wrap(region, 5), sum_length),##x变量region,str_wrap()将region换行,按照sum_length排序y=sum_length,fill = region))+                ##fill = region 根据这个进行颜色填充geom_bar(width = 0.8,stat = "identity")+     #条形图coord_polar(theta="x",start=0)+              #坐标系 theta将角度映射到的变量(x或y)ylim(-500,3500)+                              ##根据最大值设置合适的圆环直径scale_fill_viridis(option="A",discrete=T)+theme_minimal()+xlab(" ")+ylab(" ")+ ##主题labs(title = "玫瑰图", subtitle = paste( "Florence NightingaleA","Florence NightingaleB", sep = "\n"),   caption = "2024")+theme(legend.position="none")##不展示图例
p1
dev.off()


绘图升级(文本调整)

计算角度

rm(list = ls()) 
library(ggplot2)
library(dplyr)
library(stringr)
library(viridis)
hike_data <- readRDS("hike_data.rds")
hike_data$region <- as.factor(word(hike_data$location, 1, sep = " -- "))
hike_data$length_num <- as.numeric(sapply(strsplit(hike_data$length, " "), "[[", 1))plot_df <- hike_data %>%group_by(region) %>%     ##按照region列进行分组summarise(sum_length = sum(length_num), mean_gain = mean(as.numeric(gain)),n = n()) %>% ##每个分组计算总长度(sum_length)、平均增益(mean_gain)和数量(n)mutate(mean_gain = round(mean_gain, digits = 0))#对mean_gain列进行舍入操作,保留0位小数##需要对文本角度进行计算## 需要先进行排序计算
plot_df1 <- as.data.frame(plot_df)
##值从大到小降序排列
plot_df2 <- plot_df1[order(plot_df1$sum_length,decreasing=T),c(1:2)]
label_data<-plot_df2
library(data.table)
setDT(label_data)#构造文本
label_data[,new_label:=paste0(region,sum_length,"例")]                ##添加文本内容
label_data[,id:=1:nrow(label_data)]                                   ##添加排序号(已经降序排列)
number_of_bar <- nrow(label_data)                                     ##行数量用于计算角度
label_data[,angle:=90 - 360 * (label_data$id-0.5) /number_of_bar]     #角度计算
label_data[,":="(hjust=ifelse(angle<90,1,0),angle1=ifelse(angle<90,angle+180,angle))]          
head(label_data)[1:3]region sum_length                  new_label id     angle hjust   angle1
1:    North Cascades    3346.53    North Cascades3346.53例  1 73.636364     1 253.6364
2:  Central Cascades    2130.85  Central Cascades2130.85例  2 40.909091     1 220.9091
3: Snoqualmie Region    1915.32 Snoqualmie Region1915.32例  3  8.181818     1 188.1818

p1 <- ggplot(data = plot_df,aes(##一定注意reorder(str_wrap(region, 5), sum_length,decreasing=T)顺序与计算角度顺序需要一致x = reorder(str_wrap(region, 5), sum_length,decreasing=T),##x变量region,str_wrap()将region换行,按照sum_length排序y=sum_length,fill = region))+                ##fill = region 根据这个进行颜色填充geom_bar(width = 0.8,stat = "identity")+     #条形图coord_polar(theta="x",start=0)+              #坐标系 theta将角度映射到的变量(x或y)ylim(-500,3500)+                              ##根据最大值设置合适的圆环直径scale_fill_viridis(option="A",discrete=T)+theme_minimal()+xlab(" ")+ylab(" ")+ ##主题labs(title = "玫瑰图", subtitle = paste( "Florence NightingaleA","Florence NightingaleB", sep = "\n"), caption = "2024")+theme(legend.position = "none",              #不展示图例text = element_text(color = "gray12", family = "Bell MT"),  #参数https://www.jianshu.com/p/8e33dc11ed8caxis.text = element_blank(),    axis.title = element_blank(),  panel.grid = element_blank())+ geom_text(data=label_data, aes(x=id, y= sum_length, label=new_label, hjust=hjust),  color="black", fontface="bold",  alpha=0.6, size=3.5, angle=label_data$angle1,inherit.aes=FALSE)
p1
dev.off()


参考:

1:南丁格尔玫瑰图 With ggplot2【R语言】_r语言玫瑰图-CSDN博客

2:R语言绘图—南丁格尔玫瑰图 - 知乎 (zhihu.com)

雷达图学习:R实战| 雷达图(Radar Chart)-CSDN博客

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【冥想X理工科思维】场景13:系统上线遭遇崩溃…

冥想音频合集&#xff1a;职场解压冥想音频 压力场景&#xff1a; 我搭建的系统刚刚在客户那边上线不到三天&#xff0c;系统就崩溃了&#xff0c;客户打电话来对我破口大骂&#xff0c;我该如何借助冥想调整面对客户时的压力&#xff1f; 点击看大图&#xff1a; 详细说明&…

深入Spark与LDA:大规模文本主题分析实战

使用LDA模型和Spark进行文本主题分析 本篇博客介绍了如何使用LDA&#xff08;潜在狄利克雷分配&#xff09;模型和Spark进行文本主题分析。我们的目标是从大量的用户评论中提取出主题。 1. 环境设置 首先&#xff0c;我们需要导入所需的库&#xff0c;包括jieba&#xff08;…

MySQL---触发器

一、介绍 触发器是与表有关的数据库对象&#xff0c;指在insert/update/delete之前(BEFORE)或之后(AFTER)&#xff0c;触发并执行触发器中定义的SQL语句集合。触发器的这种特性可以协助应用在数据库端确保数据的完整性, 日志记录 , 数据校验等操作 。 使用别名OLD和NEW来引用触…

OpenHarmony实战开发-从0到1实现购物应用页面

概述 OpenHarmony ArkUI框架提供了丰富的动画组件和接口&#xff0c;开发者可以根据实际场景和开发需求&#xff0c;选用丰富的动画组件和接口来实现不同的动画效果。 本Codelab中&#xff0c;我们会构建一个简易的购物应用。应用包含两级页面&#xff0c;分别是主页&#xf…

微信小程序被删除的文件一编译又回来了

一开始创建错了位置&#xff0c;就想着删除文件重新创建&#xff0c;但是没想到每次重新编译的时候&#xff0c;之前被删除的js、wsml文件就又回来了&#xff0c;后来发现是我在app.json中的pages里面的代码没有被删除。 因为我最开始创建错了&#xff0c;快捷创建了页面&#…

010——服务器开发环境搭建及开发方法(下)

目录 三、 第一个驱动程序 四、 buildroot 4.1 制作根文件系统 4.2 buildroot使用 五、 uboot 009——服务器开发环境搭建及开发方法&#xff08;上&#xff09;-CSDN博客 三、 第一个驱动程序 # 1. 使用不同的开发板内核时, 一定要修改KERN_DIR # 2. KERN_DIR中的内核要…

如何使用OpenHarmony实现视频暂停、播放、切换、倍速播放

介绍 本篇Codelab使用ArkTS语言实现视频播放器&#xff0c;主要包括主页面和视频播放页面&#xff0c;我们将一起完成以下功能&#xff1a; 获取本地视频和网络视频。通过AVPlayer进行视频播放。通过手势调节屏幕亮度和视频播放音量。 相关概念 AVPlayer&#xff1a;播放管理…

Kafka重要配置参数全面解读(重要)

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 Kafka重要配置参数全面解读(重要 前言auto.create.topics.enableauto.leader.rebalance.enablelog.retention.{hour|minutes|ms}offsets.topic.num.partitions 和 offsets.topic.replication.factorlo…

Linux(3)软件安装-Centos 8.1安装-硬盘分区方案对比-linux上运行jar包-File上传下载

四、软件安装 1、Centos 8.1安装 1.1 安装过程 1、下载 CentOS 8.1 ISO 镜像文件 访问 CentOS 官方网站的下载页面。选择适当的版本&#xff0c;例如 CentOS Linux 8.1 (Linux Kernel 5.10.0-36)。根据您的硬件架构下载对应的 ISO 镜像文件&#xff08;如 CentOS-8.1-x86_6…

k8s 如何获取加入节点命名

当k8s集群初始化成功的时候&#xff0c;就会出现 加入节点 的命令如下&#xff1a; 但是如果忘记了就需要找回这条命令了。 kubeadm join 的命令格式如下&#xff1a;kubeadm join --token <token> --discovery-token-ca-cert-hash sha256:<hash>--token 令牌--…

如何在极狐GitLab 自定义 Pages 域名、SSL/TLS 证书

本文作者&#xff1a;徐晓伟 GitLab 是一个全球知名的一体化 DevOps 平台&#xff0c;很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab 是 GitLab 在中国的发行版&#xff0c;专门为中国程序员服务。可以一键式部署极狐GitLab。 本文主要讲述了在极狐GitLab 用户…

数据结构(六)——图

六、图 6.1 图的基本概念 图的定义 图&#xff1a;图G由顶点集V和边集E组成&#xff0c;记为G (V, E)&#xff0c;其中V(G)表示图G中顶点的有限非空集&#xff1b;E(G) 表示图G中顶点之间的关系&#xff08;边&#xff09;集合。若V {v1, v2, … , vn}&#xff0c;则用|V|…