R语言基于UCDP数据集绘制密度图异常问题求解
问题排查与解决方案
核心错误原因
- 图层类型使用错误:
geom_density()是单变量密度分布计算图层,仅需要映射x轴变量即可自动计算密度值,你额外映射了y = n,图层无法完成双变量的统计计算,因此仅显示坐标轴无绘图内容。 - 变量类型不匹配:从
head(conflict_no)的输出可见year字段为字符类型(<chr>),不适用于时间维度的连续轴可视化。 - 需求与实现不匹配:你要实现的是不同冲突类型每年发生次数的堆叠趋势图,密度图完全不符合该需求,应改用堆叠柱状图或堆叠面积图实现。
修正代码
# 修正year变量类型 conflict_no <- conflict_no %>% mutate(year = as.numeric(year)) # 绘制堆叠柱状图(最贴合常见的UCDP冲突数量可视化效果) conflict_no %>% ggplot(aes(x = year, y = n, fill = conflict_type)) + geom_col(position = "stack") + labs(x = "年份", y = "冲突数量", fill = "冲突类型")
如果需要实现堆叠面积图效果,仅需将geom_col(position = "stack")替换为geom_area(position = "stack")即可。
内容的提问来源于stack exchange,提问作者Pauline
相关产品推荐
相关产品推荐

