玫瑰图和雷达图(自备)
目录
玫瑰图
数据格式
绘图基础
绘图升级(文本调整)
玫瑰图
下载数据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博客
相关文章:
玫瑰图和雷达图(自备)
目录 玫瑰图 数据格式 绘图基础 绘图升级(文本调整) 玫瑰图 下载数据data/2020/2020-11-24 mirrors_rfordatascience/tidytuesday - 码云 - 开源中国 (gitee.com) R语言绘图—南丁格尔玫瑰图 - 知乎 (zhihu.com) 数据格式 rm(list ls()) libr…...
动态规划基础
动态规划 1、动态规划的概念 简称DP,通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。常常适用于有重叠子问题和最优子结构性质的问题。 简单来说,就是给定一个问题,把它拆成一个个子问题,查到子问题可以直接解决。然后把子问题答案保存起来,以减少重复计算…...
kubeadm部署的k8s1.29集群证书更新
1、查看证书有效期 kubeadm certs check-expiration更新证书前: [check-expiration] Reading configuration from the cluster... [check-expiration] FYI: You can look at this config file with kubectl -n kube-system get cm kubeadm-config -o yamlCERTIFIC…...
【A 类比赛】大学生学科竞赛智慧应用场景题目大全
智能应用的多彩场景:未来生活的无限可能 随着科技的飞速发展,智能应用已经渗透到我们生活的方方面面,它们不仅极大地提高了工作效率,也丰富了我们的生活体验。从家庭到工作场所,从城市到乡村,智能应用正在…...
Yarn的安装和使用(2):使用及问题解决
Yarn是JavaScript的依赖管理工具,它与npm类似,但提供了一些额外的性能优化和一致性保证。 Yarn的使用: 初始化项目: yarn init 此命令会引导您创建一个新的package.json文件,用于记录项目的元信息和依赖。 添加依赖&…...
如何在Bash中连接字符串变量
问题: 在 PHP 中,字符串按如下方式连接在一起: $foo "Hello"; $foo . " World";在这里,$foo 变成了 "Hello World"。 在 Bash 中如何实现这一点? 回答1: foo"Hello" fo…...
doesn‘t contain a valid partition table
查看硬盘空间 $ fdisk -l Disk /dev/mmcblk0: 29 GB, 31037849600 bytes, 60620800 sectors 947200 cylinders, 4 heads, 16 sectors/track Units: sectors of 1 * 512 512 bytesDisk /dev/mmcblk0 doesnt contain a valid partition table Disk /dev/mmcblk0p1: 1 MB, 10485…...
modprobe加载驱动模块时报错:modprobe: module xxx.ko not found in modules.dep
问题 使用modprobe时,报错modprobe: module xxx.ko not found in modules.dep: 原因 加载模块时,依赖没法正确添加 解决 在使用modprobe前,调用一下depmod指令,之后再用modprobe加载驱动模块 depmod modprobe interr…...
游戏引擎中的粒子系统
一、粒子基础 粒子系统里有各种发射器(emitter),发射器发射粒子(particle)。 粒子是拥有位置、速度、大小尺寸、颜色和生命周期的3D模型。 粒子的生命周期中,包含产生(Spawn)、与环…...
哈佛大学商业评论 -- 第二篇:增强现实是如何工作的?
AR将全面融入公司发展战略! AR将成为人类和机器之间的新接口! AR将成为人类的关键技术之一! 请将此文转发给您的老板! --- 本文作者:Michael E.Porter和James E.Heppelmann 虽然物理世界是三维的,但大…...
『python爬虫』巨量http代理使用 每天白嫖1000ip(保姆级图文)
目录 注册 实名得到API链接和账密 Python3requests调用Scpay总结 欢迎关注 『python爬虫』 专栏,持续更新中 欢迎关注 『python爬虫』 专栏,持续更新中 注册 实名 注册巨量http 用户概览中领取1000ip,在动态代理中使用.用来测试一下还是不错的 得到AP…...
6-95 希尔排序(Java语言描述)
编程实现希尔排序函数。public static void shellSort(int arr[])。其中arr存放待排序的数据,数组长度不大于1000。 函数接口定义: /* 对长度为n的数组arr执行希尔排序 */ public static void shellSort(int arr[]); 请实现 shellSort函数,使排序后的数据从小到大排列。…...
JAVA面试大全之分布式篇
目录 1、一致性算法 1.1、什么是分布式系统的副本一致性?有哪些? 1.2、在分布式系统中有哪些常见的一致性算法?...
qt各种锁使用讲解
在Qt中,主要有以下几种锁的类型: 1. QMutex(互斥锁): 是最常见的锁类型,用于实现简单的互斥访问。可以通过lock()和unlock()手动控制锁的加锁和解锁。 QMutexLocker:是一个RAII类,…...
5.111 BCC工具之ext4dist.py解读
一,工具简介 ext4dist跟踪ext4的读取、写入、打开和fsync操作,并将其延迟总结为2的幂次方直方图。 二,代码示例 #!/usr/bin/env pythonfrom __future__ import print_function from bcc import BPF from time import sleep, strftime import argparse# symbols kallsyms …...
Rust 的 termion 库控制终端光标的位置
在控制台应用程序中,固定打印在屏幕的第一行通常涉及到控制终端光标的位置。Rust 标准库本身并不提供直接控制终端光标位置的功能,但你可以使用第三方库如 termion 来实现这个需求。 termion 是一个用于处理终端的 Rust 库,它提供了很多有用…...
ADB(Android Debug Bridge)操作命令详解及示例
ADB(Android Debug Bridge)是一个强大的命令行工具,它是Android SDK的一部分,主要用于Android设备(包括真实手机和平板电脑以及模拟器)的调试、系统控制和应用程序部署。 下面是一些ADB的常用命令ÿ…...
书生浦语训练营2期-第二节课笔记作业
目录 一、前置准备 1.1 电脑操作系统:windows 11 1.2 前置服务安装(避免访问127.0.0.1被拒绝) 1.2.1 iis安装并重启 1.2.2 openssh安装 1.2.3 openssh服务更改为自动模式 1.2.4 书生浦语平台 ssh配置 1.3 补充(前置服务ok…...
【日常积累】指定ruby版本环境安装
背景说明 在redis的5.0版本之前,使用redis提供的redis-trib创建redis集群时还需要依赖ruby环境。当然有时候我们自已也需要安装指定ruby版本环境。下面是安装时的大致过程,以及过程中遇到的问题解决。我使用的环境是centos7,小版本差别应该不…...
SOC内部集成网络MAC外设+ PHY网络芯片方案:MII/RMII 接口与 MDIO 接口
一. 简介 本文来了解一下常用的一种网络硬件方案:SOC内部集成网络MAC外设 PHY网络芯片方案。 其中涉及的 MII接口,RMII接口(MII接口与RMII接口二选一),MDIO接口,RJ45。 二. MII/RMII 接口,M…...
简单了解HTTP和HTTPS
HTTP的安全问题? 我们都知道HTTP是不安全的,而HTTPS是安全的,那HTTP有哪些安全问题呢?(考虑传输过程以及响应方) 明文传输,有窃听风险:HTTP协议无法加密数据,所有通信数…...
系列学习前端之第 9 章:一文搞懂 Node.js 和 nvm,掌握 npm
1、说说 Node.js Node.js 本质上是一款应用软件(本质上与QQ、微信一样),它可以运行 JavaScript 代码,这样就使得 JavaScript 能够脱离浏览器运行。Node.js 是基于 Google 的 V8 引擎,V8引擎执行 Javascript 的速度非常…...
超强命令行解析工具Apache Commons CLI
概述 为什么要写这篇文章呢?因为在读flink cdc3.0源码的时候发现了这个工具包,感觉很牛,之前写过shell命令,shell是用getopts来处理命令行参数的,但是其实写起来很麻烦,长时间不写已经完全忘记了,现在才发现原来java也有这种工具类,所以先学习一下这个的使用,也许之后自己在写…...
JAVAEE——多线程进阶,锁策略
文章目录 锁策略乐观锁和悲观锁乐观锁悲观锁两者的比较 读写锁重量级锁和轻量级锁重量级锁轻量级锁 自旋锁公平锁和非公平锁公平锁非公平锁 可重入锁和不可重入锁可重入锁不可重入锁 锁策略 乐观锁和悲观锁 乐观锁 什么是乐观锁呢?我们可以认为乐观锁比较自信&am…...
富文本编辑器Quill全套教程
Quill简介 Quill是一款现代的富文本编辑器,它以其API驱动的设计和对文本格式的深度理解而著称。与传统的富文本编辑器不同,Quill专注于以字符为中心,构建了一个直观且易于使用的API,使得开发者能够轻松地对文本进行格式化和编辑。…...
Swift 代码注释的使用
Swift代码注释的使用 在 iOS 开发中,代码注释是一种很好的实践,可以帮助他人更容易理解你的代码。通常可以在代码中使用注释来解释代码的功能、目的、实现细节等。下面是一些常见的 iOS 代码注释示例: 1. 单行注释: // 这是一个…...
蓝桥杯—DS1302
目录 1.管脚 2.时序&官方提供的读写函数 3.如何使用读写函数 4.如何在数码管中显示在DS1302中读取出的数据? 1.管脚 2.时序&官方提供的读写函数 /* # DS1302代码片段说明1. 本文件夹中提供的驱动代码供参赛选手完成程序设计参考。2. 参赛选手可以自行…...
nginx: 集群环境配置搭建
nginx 集群环境搭建 1 ) 概述 nginx 本身就应该选择性能强劲的机器同时为了满足更多流量的需求, 多台nginx 机器做集群来满足强大的需求故而,我们需要一个负载均衡器,以及多台nginx的机器 这里负载均衡器应该有主从和热备,目前先使用一台来描…...
Linux:进程终止和等待
一、进程终止 main函数的返回值也叫做进程的退出码,一般0表示成功,非零表示失败。我们也可以用不同的数字来表示不同失败的原因。 echo $?//打印最近一次进程执行的退出码 而作为程序猿,我们更需要知道的是错误码所代表的错误信息&#x…...
一、next-auth 身份验证凭据-使用电子邮件和密码注册登录
一、next-auth 身份验证凭据-使用电子邮件和密码注册登录 文章目录 一、next-auth 身份验证凭据-使用电子邮件和密码注册登录一、前言二、前置准备1、环境配置2、相关库安装(1)vercel 配置(2)Yarn 包管理配置 3、next项目初始化与…...
wordpress aplayer/郑州制作网站公司
跨境电商发展了这么多年,从最开始的亚马逊,eBay到速卖通,Lazada再到现在很多新出平台,可谓五花八门。很多主流平台卖家都有使用测评补单来增加产品权重、提高销量。经常有小众平台的卖家咨询我他做的平台能否像亚马逊那样通过测评…...
网站建设捌金手指下拉二五/长沙seo 优化选智投未来no1
1、复制旧表的数据到新表(假设两个表结构一样) INSERT INTO 新表 SELECT * FROM 旧表 2、复制旧表的数据到新表(假设两个表结构不一样) INSERT INTO 新表(字段1,字段2,.......) SELECT 字段1,字段2,...... FROM 旧表 3、复制表结构及数据到新表 select * into 目标表名 from 源…...
网站已备案添加新域名/吉林seo推广
操作系统:windows 2008 R2 SP1 vCenter版本:5.0 数据库版本:SQL 2008 R2 企业版 在安装完数据库,继续安装VC时,会提示80端口被占用,这是由于SQL 2008的"SQL Server Reporting Services"服务造成的…...
湖南网站建设/各城市首轮感染高峰期预测
Swift标准库可以编译安卓armv7的内核,这使得可以在安卓移动设备上执行Swift语句代码。本文解释了如何在你的安卓手机上运行一个简单的“hello,world”程序。如果你遇到了任何问题,请参考下面的说明,上传BUG到 https://bugs.swift.…...
wordpress统计分析/东莞网络优化公司
作者 | 张俊鸣素有“大笨象”之称的银行股轻盈起舞,上证指数五天内连攻3000点到3400点之间的五个百点整数关口,“牛市来了”已经成为众多投资者的共识。伴随着汹涌入市的资金潮,日成交破万亿再度成为“新常态”,部分券商的APP一度…...
佛山做外贸网站的公司吗/色盲测试图片60张
转载自: http://blog.csdn.net/kevin6216/article/details/7096712 一 安装与配置SVN 1.安装subversion centos: yum install subversion ubuntu: apt-get install subversion 2.建立版本库,本例中我们的版本库建立在/var/svn,假设该版本库目录为:foo cd /var mkdir…...