1. 南丁格尔玫瑰图的前世今生
第一次看到南丁格尔玫瑰图时,我被它独特的美感震撼到了。这种图表看起来像一朵绽放的玫瑰,但实际上它是柱状图在极坐标系下的变形。这种图表最早由弗洛伦斯·南丁格尔在克里米亚战争期间使用,用来直观展示士兵伤亡数据。你可能不知道,正是这张图说服了当时的英国政府改善战地医院条件,拯救了无数生命。
在实际工作中,我发现这种图表特别适合展示周期性数据或多维度的对比。比如我们公司上季度做区域销售分析时,用传统柱状图展示10个区域的销售额和利润率,决策者看了直摇头。但改用玫瑰图后,CEO一眼就看出哪个区域表现最好,哪个需要重点关注。这就是可视化魔力的最好证明。
与传统柱状图相比,玫瑰图有三个明显优势:一是空间利用率高,在有限面积内展示更多信息;二是视觉冲击力强,容易吸引注意力;三是适合展示周期性数据,比如月度、季度报表。不过要注意,由于面积是半径的平方关系,玫瑰图会放大数值差异,这点在使用时需要特别注意。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 数据准备与预处理
2.1 数据获取与清洗
我常用TidyTuesday项目的数据做演示,这次我们使用远足路线数据。首先加载必要的包并导入数据:
r复制library(ggplot2)
library(dplyr)
library(stringr)
hike_data <- readr::read_rds("https://raw.githubusercontent.com/rfordatascience/tidytuesday/master/data/2020/2020-11-24/hike_data.rds")
原始数据需要做一些清洗。比如location字段包含"区域 -- 具体地点"的信息,我们只需要提取区域部分:
r复制hike_data$region <- as.factor(word(hike_data$location, 1, sep = " -- "))
长度字段是字符型,包含单位和数值,需要转换为纯数字:
r复制hike_data$length_num <- as.numeric(sapply(strsplit(hike_data$length, " "), "[[", 1))
2.2 数据聚合与计算
商业报告中通常需要聚合数据。比如我们
