加载湖南省区县级行政区划边界地图数据
代码
hunan_geo <- sf::read_sf("data/湖南省.json")
hunan_geo## Simple feature collection with 122 features and 9 fields
## Geometry type: MULTIPOLYGON
## Dimension: XY
## Bounding box: xmin: 108.8 ymin: 24.64 xmax: 114.3 ymax: 30.13
## Geodetic CRS: WGS 84
## # A tibble: 122 × 10
## adcode name childrenNum level parent subFeatureIndex center centroid
## <int> <chr> <int> <chr> <chr> <int> <list> <list>
## 1 430102 芙蓉区 0 district "{ \"adco… 0 <dbl> <dbl>
## 2 430103 天心区 0 district "{ \"adco… 1 <dbl> <dbl>
## 3 430104 岳麓区 0 district "{ \"adco… 2 <dbl> <dbl>
## 4 430105 开福区 0 district "{ \"adco… 3 <dbl> <dbl>
## 5 430111 雨花区 0 district "{ \"adco… 4 <dbl> <dbl>
## 6 430112 望城区 0 district "{ \"adco… 5 <dbl> <dbl>
## 7 430121 长沙县 0 district "{ \"adco… 6 <dbl> <dbl>
## 8 430181 浏阳市 0 district "{ \"adco… 7 <dbl> <dbl>
## 9 430182 宁乡市 0 district "{ \"adco… 8 <dbl> <dbl>
## 10 430202 荷塘区 0 district "{ \"adco… 0 <dbl> <dbl>
## # ℹ 112 more rows
## # ℹ 2 more variables: acroutes <list>, geometry <MULTIPOLYGON [°]>
加载 2023 年湖南省各区县的数据(数据来自湖南省统计局发布的统计年鉴 2024)
代码
hunan_book <- readxl::read_xlsx(path = "data/湖南省各区县统计数据.xlsx", sheet = "2023")
hunan_book## # A tibble: 124 × 13
## 市州 区县 行政编码 年末常住人口 年末常住人口2020 常住人口变化 城镇化率
## <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 长沙市 芙蓉区 430102 64.4 64.3 0.14 100
## 2 长沙市 天心区 430103 89.4 83.7 5.68 99.1
## 3 长沙市 岳麓区 430104 167. 153. 13.6 94.6
## 4 长沙市 开福区 430105 88.2 82.2 6.03 96.6
## 5 长沙市 雨花区 430111 129. 127. 2.25 97.5
## 6 长沙市 望城区 430112 98.4 89.1 9.29 79.8
## 7 长沙市 长沙县 430121 143. 138. 5.84 75.1
## 8 长沙市 浏阳市 430181 144. 143. 0.61 63.8
## 9 长沙市 宁乡市 430182 128. 126. 1.74 61.9
## 10 株洲市 荷塘区 430202 34.3 34.9 -0.57 98.2
## # ℹ 114 more rows
## # ℹ 6 more variables: 地区生产总值 <dbl>, 人均GDP <dbl>, 房地产开发投资 <dbl>,
## # 固定资产投资增速 <dbl>, 社会消费品零售总额 <dbl>,
## # 社会消费品零售总额增速 <dbl>
- 年末常住人口(单位:万人)
- 年末常住人口2020(单位:万人)
- 常住人口变化:2023 年减去2020年的(单位:万人)
- 城镇化率(单位:%)
- 地区生产总值(单位:万元)
- 人均GDP(单位:元)
- 房地产开发投资(单位:万元)
- 固定资产投资增速(单位:%)
- 社会消费品零售总额(单位:亿元)
- 社会消费品零售总额增速(单位:%)
代码
hunan_data <- merge(hunan_geo[, c("name", "adcode")], hunan_book, by.x = "adcode", by.y = "行政编码", all.x = T, sort = F)
hunan_data## Simple feature collection with 122 features and 14 fields
## Geometry type: MULTIPOLYGON
## Dimension: XY
## Bounding box: xmin: 108.8 ymin: 24.64 xmax: 114.3 ymax: 30.13
## Geodetic CRS: WGS 84
## First 10 features:
## adcode name 市州 区县 年末常住人口 年末常住人口2020 常住人口变化
## 1 430102 芙蓉区 长沙市 芙蓉区 64.42 64.28 0.14
## 2 430103 天心区 长沙市 天心区 89.40 83.72 5.68
## 3 430104 岳麓区 长沙市 岳麓区 166.51 152.86 13.65
## 4 430105 开福区 长沙市 开福区 88.21 82.18 6.03
## 5 430111 雨花区 长沙市 雨花区 128.90 126.65 2.25
## 6 430112 望城区 长沙市 望城区 98.43 89.14 9.29
## 7 430121 长沙县 长沙市 长沙县 143.47 137.63 5.84
## 8 430181 浏阳市 长沙市 浏阳市 143.73 143.12 0.61
## 9 430182 宁乡市 长沙市 宁乡市 128.24 126.50 1.74
## 10 430202 荷塘区 株洲市 荷塘区 34.33 34.90 -0.57
## 城镇化率 地区生产总值 人均GDP 房地产开发投资 固定资产投资增速
## 1 100.00 12720538 196396 933901 0.2
## 2 99.09 13645993 154559 2191333 6.7
## 3 94.59 20045470 121739 4977649 -6.6
## 4 96.62 12403049 141184 2186460 6.7
## 5 97.50 23136455 180050 2414835 -22.8
## 6 79.81 11536966 118498 2625063 9.1
## 7 75.14 21327107 149026 2608861 5.3
## 8 63.76 17031662 118144 395888 -19.8
## 9 61.93 13328303 104119 553021 -15.0
## 10 98.19 2866225 83417 223008 -17.5
## 社会消费品零售总额 社会消费品零售总额增速 geometry
## 1 719.59 7.423 MULTIPOLYGON (((113 28.19, ...
## 2 503.23 7.997 MULTIPOLYGON (((113 28.2, 1...
## 3 652.33 4.364 MULTIPOLYGON (((112.7 28.21...
## 4 657.74 8.562 MULTIPOLYGON (((113 28.39, ...
## 5 813.32 5.879 MULTIPOLYGON (((113 28.01, ...
## 6 504.34 4.174 MULTIPOLYGON (((113 28.28, ...
## 7 704.63 6.185 MULTIPOLYGON (((113.1 28.22...
## 8 484.01 6.200 MULTIPOLYGON (((113.2 28.01...
## 9 522.48 5.087 MULTIPOLYGON (((112.7 28.49...
## 10 99.34 6.350 MULTIPOLYGON (((113.3 27.99...
社会消费品零售总额、房地产开发投资、人均GDP的关系。房地产开发投资越多,经济发展的拉动效果越强。越多人买房支出越多,意味着另一部分人收入越多,收入越多越有能力去消费,带动社会消费品零售总额增加,进而带动地区生产总值增长,人均GDP增加。
代码
# custom function
my_scale <- function(x) scales::rescale(x, to = c(5, 20))
library(echarts4r)
hunan_book |>
dplyr::mutate(市县 = paste(市州, 区县, sep = '·')) |>
dplyr::group_by(市州) |>
e_charts(x = 房地产开发投资) |>
e_scatter(serie = 社会消费品零售总额, size = 人均GDP, bind = 市县, scale = my_scale) |>
e_tooltip(formatter = htmlwidgets::JS("
function(params) {
return (
'<strong>' + params.name + '</strong>' +
'<br />房地产开发投资: ' + params.value[0] +
'<br />社会消费品零售总额: ' + params.value[1].toFixed(2) +
'<br />人均GDP: ' + params.value[2] + '元'
)
}
")) |>
e_x_axis(name = "房地产开发投资(万元)", nameLocation = "center", nameGap = 30) |>
e_y_axis(name = "社会消费品零售总额(亿元)", nameLocation = "center", nameGap = 35) |>
e_theme("vintage")长沙是湖南的省会城市,辖下各区的房地产开发投资和社会消费品零售总额相比于其他市都是独树一帜的存在,这是很明显的区域发展不平衡。这种城市化带来的不平衡应该说是预期中的,如果对比日本、美国这样的发达国家的城市来看的话。
除去长沙,岳阳是凸出来的第二个城市,它辖下的岳阳楼区的社会消费品零售总额很高,这应该是旅游业带来的贡献。
代码
library(ggplot2)
library(patchwork)
p1 <- ggplot(data = hunan_book, aes(x = 固定资产投资增速, y = 社会消费品零售总额增速)) +
geom_point(aes(size = 人均GDP), alpha = 0.5) +
geom_smooth(se = FALSE, method = lm) +
coord_equal(ratio = 1) +
theme_light()
p2 <- ggplot(data = hunan_book, aes(x = 常住人口变化, y = 房地产开发投资/10000)) +
geom_point(aes(size = 人均GDP), alpha = 0.5, show.legend = F) +
geom_smooth(se = FALSE, method = lm) +
theme_light()
p3 <- ggplot(data = hunan_book, aes(x = 社会消费品零售总额, y = 地区生产总值/10000)) +
geom_point(aes(size = 人均GDP), alpha = 0.5, show.legend = F) +
geom_smooth(se = FALSE, method = lm) +
theme_light()
p1 / (p2 | p3)## `geom_smooth()` using formula = 'y ~ x'
## `geom_smooth()` using formula = 'y ~ x'
## `geom_smooth()` using formula = 'y ~ x'
图 1: 消费与投资的关系
代码
library(corrplot)
x = hunan_book[, -c(1:3)]
M = cor(x)
set.seed(0)
corrplot(M)
图 2: 变量之间的相关性
房地产开发投资、社会消费品零售总额、地区生产总值、人均GDP相关性非常高。
年末常住人口越多,社会消费品零售总额越高,这自不必说。 常住人口变化也影响社会消费品零售总额,同理。 不过,常住人口变化对房地产开发投资的影响更大。
城镇化率越高意味着城市发展水平高,社会消费品零售总额越高,第三产业服务业占比越高。
代码
library(leaflet)
# 连续型调色板
# pal <- colorNumeric("Spectral", domain = NULL, reverse = TRUE)
# 分段离散调色板
pal <- colorBin("Spectral", bins = c(0, 10, 30, 50, 70, 100, 200), domain = NULL, reverse = TRUE)
# 将数据绘制到地图上
leaflet(hunan_data) |>
addTiles(
# 来自 leafletCN::amap()
urlTemplate = "http://webrd02.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=8&x={x}&y={y}&z={z}",
options = tileOptions(tileSize = 256, minZoom = 3, maxZoom = 17),
attribution = "© <a href=\"http://amap.com\">amp.com</a >"
) |>
addPolygons(
stroke = F, # 不显示各个区县的边界线
weight = 1, # 设置边界线宽度
fillOpacity = 0.5, # 填充多边形的透明度
fillColor = ~ pal(年末常住人口),
label = lapply(paste0(
"区县:", "<b>", hunan_data$name, "</b>", "<br/>",
"常住人口(万):", hunan_data$年末常住人口
), htmltools::HTML)
) |>
addLegend(
position = "bottomright", title = "常住人口(万)",
pal = pal, values = ~年末常住人口, opacity = 1.0
) |>
addScaleBar(position = "bottomleft")代码
# 分段离散调色板
pal <- colorBin("Spectral", bins = c(-5, -2, 0, 2, 5, 10, 15), domain = NULL, reverse = TRUE)
# 将数据绘制到地图上
leaflet(hunan_data) |>
addTiles(
# 来自 leafletCN::amap()
urlTemplate = "http://webrd02.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=8&x={x}&y={y}&z={z}",
options = tileOptions(tileSize = 256, minZoom = 3, maxZoom = 17),
attribution = "© <a href=\"http://amap.com\">amp.com</a >"
) |>
addPolygons(
stroke = F, # 不显示各个区县的边界线
weight = 1, # 设置边界线宽度
fillOpacity = 0.5, # 填充多边形的透明度
fillColor = ~ pal(常住人口变化),
label = lapply(paste0(
"区县:", "<b>", hunan_data$name, "</b>", "<br/>",
"常住人口(万):", hunan_data$年末常住人口, "<br/>",
"人口变化(万):", hunan_data$常住人口变化
), htmltools::HTML)
) |>
addLegend(
position = "bottomright", title = "人口变化(万)",
pal = pal, values = ~常住人口变化, opacity = 1.0
) |>
addScaleBar(position = "bottomleft")