南丁格尔玫瑰图 With ggplot2【R语言】

article/2025/11/1 10:13:06

前言

之前在饼图中提到过,要整理一下南丁格尔玫瑰图的画法😑
南丁格尔玫瑰图又名鸡冠花图、极坐标区域图,是南丁格尔在克里米亚战争期间提交的一份关于士兵死伤的报告时发明的一种图表。南丁格尔玫瑰图是在极坐标下绘制的柱状图,使用圆弧的半径长短表示数据的大小(数量的多少)。

  • 由于半径和面积的关系是平方的关系,南丁格尔玫瑰图会将数据的比例大小夸大,尤其适合对比大小相近的数值。
  • 由于圆形有周期的特性,所以玫瑰图也适用于表示一个周期内的时间概念,比如星期、月份。

需要的工具

可视化:ggplot2
处理:stringr、dplyr

library(ggplot2)
library(dplyr)
library(stringr)

数据处理

来源:https://github.com/rfordatascience/tidytuesday

hike_data <- readr::read_rds("https://raw.githubusercontent.com/rfordatascience/tidytuesday/master/data/2020/2020-11-24/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) %>%summarise(sum_length = sum(length_num),mean_gain = mean(as.numeric(gain)),n = n()) %>%mutate(mean_gain = round(mean_gain, digits = 0))

数据长这个样子:
在这里插入图片描述

先画一个柱状图

使用:geom_col

p <- ggplot(plot_df) + geom_col(aes(x = reorder(str_wrap(region, 5), sum_length),y = sum_length,fill = n),position = "dodge2",show.legend = TRUE,alpha = .9)p

在这里插入图片描述

转为极坐标

使用:coord_polar()

p <- p + coord_polar()
p

在这里插入图片描述

加一点细节

p + geom_hline(aes(yintercept = y), data.frame(y = c(0:3) * 1000),color = "lightgrey") +geom_segment(aes(x = reorder(str_wrap(region, 5), sum_length),y = 0,xend = reorder(str_wrap(region, 5), sum_length),yend = 3000),linetype = "dashed",color = "gray12") +scale_y_continuous(limits = c(-1500, 3500),expand = c(0, 0),breaks = c(0, 1000, 2000, 3000)) + scale_fill_gradientn("Amount of Tracks",colours = c( "#6C5B7B","#C06C84","#F67280","#F8B195")) +guides(fill = guide_colorsteps(barwidth = 15, barheight = .5, title.position = "top", title.hjust = .5)) + theme_minimal()+theme(axis.title = element_blank(),axis.ticks = element_blank(),axis.text.y = element_blank(),axis.text.x = element_text(color = "gray12", size = 12),legend.position = "bottom")

在这里插入图片描述
最后的图大概就是这个样子,还挺好看😑

所有的代码

library(ggplot2)
library(stringr)hike_data <- readr::read_rds("https://raw.githubusercontent.com/rfordatascience/tidytuesday/master/data/2020/2020-11-24/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) %>%summarise(sum_length = sum(length_num),mean_gain = mean(as.numeric(gain)),n = n()) %>%mutate(mean_gain = round(mean_gain, digits = 0))plt <- ggplot(plot_df) +geom_hline(aes(yintercept = y), data.frame(y = c(0:3) * 1000),color = "lightgrey") + geom_col(aes(x = reorder(str_wrap(region, 5), sum_length),y = sum_length,fill = n),position = "dodge2",show.legend = TRUE,alpha = .9) +# Lollipop shaft for mean gain per regiongeom_segment(aes(x = reorder(str_wrap(region, 5), sum_length),y = 0,xend = reorder(str_wrap(region, 5), sum_length),yend = 3000),linetype = "dashed",color = "gray12") + coord_polar()plt <- plt +scale_y_continuous(limits = c(-1500, 3500),expand = c(0, 0),breaks = c(0, 1000, 2000, 3000)) + scale_fill_gradientn("Amount of Tracks",colours = c( "#6C5B7B","#C06C84","#F67280","#F8B195")) +guides(fill = guide_colorsteps(barwidth = 15, barheight = .5, title.position = "top", title.hjust = .5)) + theme_minimal()+theme(axis.title = element_blank(),axis.ticks = element_blank(),axis.text.y = element_blank(),axis.text.x = element_text(color = "gray12", size = 12),legend.position = "bottom")

http://chatgpt.dhexx.cn/article/MkiJFP1A.shtml

相关文章

echarts最简单的南丁格尔玫瑰图+图例

//图标写在方法里面&#xff08;然后在mounted里展示&#xff09; getEcharts(){ var myChart document.getElementById(‘echarts’); let echarts echarts.init(myChart); var option; var legends this.getlowIncomeData_xData; //图例名字&#xff08;在这里作修改&…

python+matplotlib绘制南丁格尔玫瑰图

实验:绘制南丁格尔玫瑰图   本实验有一定难度,有人说matplotlib绘图和matlab大同小异,我看除了一些函数名相同之外,其他的像参数和使用方法很不一样.另外我不知道是不是在matlab中画玫瑰图直接一个"肉丝"函数就成了,为什么matplotlib里面没有~~   无论如何还是感…

R语言-南丁格尔玫瑰图

简介 南丁格尔玫瑰图&#xff08;Nightingale rose chart&#xff09;即极坐标柱形图&#xff0c;是一种圆形的柱形图。由弗罗伦斯-南丁格尔所发明&#xff0c;普通柱形图的坐标系是直角坐标系&#xff0c;而南丁格尔玫瑰图的坐标系是极坐标系。南丁格尔玫瑰图是在极坐标下绘制…

Tableau——制作南丁格尔玫瑰图

一、适用场景: 需要计算总费用或金额的各个部分构成比例的情况 二、简介&#xff1a; 南丁格尔玫瑰图Nightingale rose diagram是弗罗伦斯南丁格尔所发明的&#xff0c;又名为极区图&#xff0c;是一种圆形的直方图。 如果因为组成部分较多而导致饼图分区多且密集&#xff0…

Tableau 南丁格尔玫瑰图

简介:南丁格尔玫瑰图是弗罗伦斯南丁格尔所发明的。又名为极区图。是一种圆形的直方图。 应用场景&#xff1a;可以看到比饼图更加详细地信息。 参考书目&#xff1a;跟阿达学 Tableau 数据可视化 操作步骤&#xff1a; 以示例-超市为例 1、导出相关数据&#xff08;处理数…

南丁格尔玫瑰图

1、绘制南丁格尔玫瑰图的步骤&#xff1a; 数据准备工作&#xff1a;准备好角度数值和半径数值。 建立画布&#xff0c;并将直角坐标转化为极坐标。并对极坐标进行一定的设置。 使用bar函数进行绘图。 对图形进行美化处理。 2、上代码 import numpy as np import pandas a…

❤echarts 南丁格尔玫瑰图的使用以及南丁格尔玫瑰图详细配置

❤echarts 南丁格尔玫瑰图的使用以及南丁格尔玫瑰图详细配置 1、认识 使用可以参考之前文章&#xff0c;会使用直接跳过1 引入官网的南丁格尔玫瑰图效果如下&#xff1a; 使用函数配置分为三个部分&#xff1a;初始化> 设置配置> 地图使用参数 配置代码如下 option…

【Python】数据分析:如何使用matplotlib和pyecharts制作南丁格尔玫瑰图

目录 一、介绍 二、相关库 三、数据准备 四、pyecahrts代码实现 五、matplotlib代码实现 原文作者&#xff1a;我辈理想版权声明&#xff1a;文章原创&#xff0c;转载时请务必加上[原文超链接](https://blog.csdn.net/qq_15028721?spm1010.2135.3001.5421)、作者信息和本…

南丁格尔图(饼状)

今天来做一个南丁格尔图&#xff0c;参考官网&#xff0c;一会会把源码放上去&#xff0c;注释和详细的解释也会放在最下面供参考理解 基于VScode开发&#xff0c;我用的是子组件不是APP.vue code&#xff1a; <template> <div id"main" :style"{width…

[数据可视化] 南丁格尔玫瑰图

南丁格尔玫瑰图 南丁格尔玫瑰图又名鸡冠花图、极坐标区域图&#xff0c;是南丁格尔在克里米亚战争期间提交的一份关于士兵死伤报告时发明的一种图表&#xff0c;以表达军医院季节性的死亡率&#xff0c;从整体上来看: 这张图是用来说明并比较战地医院伤患因各种原因死亡的人数&…

数据分析软件图表详解-南丁格尔图的故事

DataViz数据可视化分析工具中的南丁格尔图也叫南丁格尔玫瑰图、鸡冠花图或极坐标区域图。是由弗洛伦斯南丁格尔发明的。南丁格尔是英国护士和统计学家&#xff0c;出生于意大利的一个英国上流社会的家庭。虽然出身贵族南丁格尔却选择了完全不同的人生道路&#xff0c;选择了当时…

网络层协议和数据链路层协议

1. IP 协议 IP指网际互连协议&#xff0c;Internet Protocol的缩写&#xff0c;是TCP/IP体系中的网络层协议。IP位于TCP/IP模型的网络层(相当于OSI模型的网络层)&#xff0c;它可以向传输层提供各种协议的信息&#xff0c;例如TCP、UDP等&#xff1b;对下可将IP信息包放到链路层…

数据链路层协议(1)

目录 1.获取IP地址 2.打开浏览器&#xff0c;在浏览器中的地址栏上输入需要访问的服务器的URL&#xff08;资源定位符&#xff09; 3.网关路由收到DNS请求报文后&#xff0c;将先查看数据帧的二层封装&#xff0c;确认该数据帧是给自己的&#xff0c;则将解二层封装看三层封…

【网络】-- 数据链路层

应用层&#xff08;http、https&#xff09;&#xff1a; 数据的使用。传输层&#xff08;UDP、TCP&#xff09;&#xff1a;网络通讯的细节&#xff0c;将数据可靠的从A主机跨网络送到B主机。网络层&#xff08;IP&#xff09;&#xff1a;提供一种能力&#xff0c;将数据从A主…

数据链路层重点协议

目录 1.以太网 2.MTU 3.ARP与RARP协议 1.以太网 1.1 概念 "以太网" 不是一种具体的网络&#xff0c;而是一种技术标准&#xff1b;既包含了数据链路层的内容&#xff0c;也包含了 一些物理层的内容。例如&#xff1a;规定了网络拓扑结构&#xff0c;访问控制方式…

计算机网络基础知识--数据链路层协议

目录 使用点对点信道的数据链路层 数据链路层的三个基本问题 封装成帧 透明传输 差错检测 点对点协议PPP PPP协议的组成 PPP帧的格式 数据链路层的协议数据单元是帧。数据链路层把网络层交下来的数据构成帧发送到链路上&#xff0c;以及把接收到的帧中的数据取出并上交网…

数据链路层之以太网协议

在 IP 数据包交付的过程中&#xff0c;在数据链路层会对数据包进行添加报头信息。以太网协议就是数据链路层的一个重要协议。这样说其实不太准确&#xff0c;因为以太网协议是一个规定数据链路层及物理层的协议&#xff0c;不能说它是数据链路层的一个协议。 以太网帧 以太网…

【计算机网络】数据链路层重点协议

目录 1. 认识以太网 1.1 以太网帧格式 2. 认识MTU 2.1 MTU对IP协议的影响 2.2 MTU对UDP协议的影响 2.3 MTU对TCP协议的影响 3. ARP协议 3.1 ARP协议的作用 3.2 ARP协议的工作流程 1. 认识以太网 以太网是一种局域网的技术规范&#xff0c;而不是一种具体的网络&am…

数据链路层协议(2)

目录 一.网络类型---根据数据链路层运行的协议进行划分 二.数据链路层运行的协议 1.HDLC---高级数据链路控制协议 2.PPP---点到点协议 &#xff08;1&#xff09;链路建立阶段---LCP&#xff08;链路控制协议&#xff09;建立 &#xff08;2&#xff09;认证阶段---PAP&…

数据链路层协议封装

常用的两种数据链路层帧&#xff1a; 以太网帧和PPP帧的区别&#xff1a; 最大的区别&#xff0c;以太网是一个广播链路&#xff0c;一个广播域可能有多个设备&#xff0c;所以以太网帧有MAC地址&#xff0c;为了在整个以太网中确定一个唯一确定到底哪个设备进行接收&#xff0…