暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

R语言绘图|洛伦兹曲线

2153
点击关注了解更多哦

洛伦兹曲线可用于直观表示地理要素的分布集中状况,是地理学研究中一个常见方法。本文主要介绍如何利用R语言绘制洛伦兹曲线

1、数据准备

本文主要参考冯亚芬等(2017)
地理科学发表的《广东省传统村落空间分布特征及影响因素研究》 一文。演示数据来自文中表1数据。数据也可以在后台回复【20220527】获取。具体如下:

2、数据处理

2.1 数据导入与加载package

setwd("C:\\Users\\Acer\\Desktop\\R学习\\常用数据")
library(tidyverse)
library(reshape2)
data <- readxl::read_xlsx("不均衡指数.xlsx")
head(data)
# A tibble: 6 x 2
#  region value
#  <chr>  <dbl>
#1 梅州      40
#2 清远      13
#3 广州      12
#4 湛江      12
#5 肇庆       9
#6 惠州       7

2.2 计算实际累计分布与均匀累计分布

my_data <- data %>% 
  arrange(-value) %>% #排序
  mutate(value_sum = value/sum(value)*100, #实际占比
         value_cum = cumsum(value_sum), #实际累计占比
         mean_value = mean(value)/sum(value)*100, #均匀分布
         mean_cum = cumsum(mean_value)) #均匀分布累计占比
my_data
# A tibble: 21 x 6
#   region value value_sum value_cum mean_value mean_cum
#   <chr>  <dbl>     <dbl>     <dbl>      <dbl>    <dbl>
# 1 梅州      40     31.7       31.7       4.76     4.76
# 2 清远      13     10.3       42.1       4.76     9.52
# 3 广州      12      9.52      51.6       4.76    14.3 
# 4 湛江      12      9.52      61.1       4.76    19.0 
# 5 肇庆       9      7.14      68.3       4.76    23.8 
# 6 惠州       7      5.56      73.8       4.76    28.6 
# 7 东莞       6      4.76      78.6       4.76    33.3 
# 8 佛山       4      3.17      81.7       4.76    38.1 
# 9 江门       4      3.17      84.9       4.76    42.9 
#10 揭阳       4      3.17      88.1       4.76    47.6 
# ... with 11 more rows

2.3 将宽数据转换为长数据,修改因子标签

#将宽数据转换为长数据
my_data2 <- my_data %>% dplyr::select(region,value_cum,mean_cum) %>% 
  reshape2::melt(id.vars = "region", value.name = "prop",variable.name = "type")
#修改因子标签
my_data2$type <- factor(my_data2$type, levels = c("value_cum""mean_cum"), labels = c("实际分布""均匀分布"))

3、绘图

ggplot(my_data2, aes(reorder(region, prop) , prop, color = type,shape = type, linetype = type, group = type)) + 
  geom_line() + 
  geom_point(size = 3) + 
  theme_classic() + 
  labs(x = "城市", y = "比例(%)", fill = "类型",color = "类型",shape = "类型", linetype = "类型") + 
  theme(legend.position = c(0.2, 0.85), 
        axis.text.x = element_text(angle = 90))

4、其他


如有帮助请多多点赞哦!


文章转载自日常分享的小懒猫,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论