最近给大家分享了 2000~2023 年 1 月土地出让公告数据(含地块位置经纬度及其所处的省市区县) 数据,数据介绍里面我使用这份数据绘制了一些图表,今天我们一起来看一下这些图表是如何绘制的。
×
大家需要从上述链接里面下载 2000~2023年1月31日地块出让信息(含经纬度).dta 文件放到附件里面(附件中没有提供这个文件)。
部分省市土地成交均价变化 由于省市数量较多,所以这里仅仅选择 “北京市”、”上海市”、”重庆市”、”天津市”、”广东省” 和 “浙江省” 六个省市。
导入数据保留所需变量:
keep 合同签订日期 年份 省_经纬度解析 省代码_经纬度解析 市_经纬度解析 市代码_经纬度解析 县_经纬度解析 县代码_经纬度解析 供地面积_公顷 供地总面积_公顷 成交价格_万元 链接 drop if missing(供地面积_公顷) | 成交价格_万元 == 0
计算地价并分年月汇总:
destring 成交价格_万元, replace forcegen unit = 成交价格_万元 / 供地面积_公顷keep 合同签订日期 年份 unit 省_经纬度解析 省代码_经纬度解析 市_经纬度解析 市代码_经纬度解析 县_经纬度解析 县代码_经纬度解析gen month = mofd (合同签订日期)format month %tmCY-N drop if missing (unit)drop if unit > 100000collapse (mean ) unit, by (month 省_经纬度解析)
由于 2007 年之前的数据较少,所以仅仅绘图展示 07 年之后的:
keep if month >= monthly("2007-01", "YM")
保留我们想要观察的几个省市:
keep if inlist(省_经纬度解析, "北京市", "上海市", "重庆市", "天津市", "广东省", "浙江省")
下面我们再通过循环构造绘图语句:
local colors `""254 212 57" "112 154 225" "138 145 151" "210 175 129" "253 116 70" "213 228 162" "25 126 192""' levelsof 省_经纬度解析, local(prov) local cmd = "tw" local leg = "" local count = 0 foreach i in `prov' { local count = `count' + 1 local color: word `count' of `colors' local cmd = `"`cmd' (line unit month if 省 == "`i'", lc("`color'"))"' local leg = `"`leg' `count' "`i'""' } `cmd', xla(560(40)720 756) yti("土地成交均价(元/平)") /// leg(order(`leg') pos(11) row(3) ring(0)) /// caption("数据来源:中国土地市场网") /// ti("2000 年 1 月~2023 年 1 月部分省市的土地成交均价变化") /// subti("整理 & 绘制:微信公众号 RStata") gr export "2007年1月~2023年1月部分省市的土地成交均价变化.png", width(2400) replace
分年月计算的地价震荡幅度很大,下面我们再来分年汇总看看结果:
use "2000~2023年1月31日地块出让信息(含经纬度).dta" , clear keep 合同签订日期 年份 省_经纬度解析 省代码_经纬度解析 市_经纬度解析 市代码_经纬度解析 县_经纬度解析 县代码_经纬度解析 供地面积_公顷 成交价格_万元destring 成交价格_万元, replace forcegen unit = 成交价格_万元 / 供地面积_公顷keep 合同签订日期 年份 unit 省_经纬度解析 省代码_经纬度解析 市_经纬度解析 市代码_经纬度解析 县_经纬度解析 县代码_经纬度解析gen month = mofd (合同签订日期)format month %tmCY-N keep if month >= monthly ("2007-01" , "YM" )drop if missing (unit)drop if unit > 100000collapse (mean ) unit, by (年份 省_经纬度解析)keep if inlist (省_经纬度解析, "北京市" , "上海市" , "重庆市" , "天津市" , "广东省" , "浙江省" )local colors `""254 212 57" "112 154 225" "138 145 151" "210 175 129" "253 116 70" "213 228 162" "25 126 192""' levelsof 省_经纬度解析, local (prov)local cmd = "tw" local leg = "" local count = 0foreach i in `prov' { local count = `count' + 1 local color: word `count' of `colors' local cmd = `"`cmd' (line unit 年份 if 省 == "`i'", lc("`color'") lp(solid))"' local leg = `"`leg' `count' "`i'""' } `cmd' , xti("年份" ) yti("土地成交均价(元/平)" ) leg(order (`leg' ) pos(11) row(3) ring(0)) caption("数据来源:中国土地市场网" ) ti("2007 年 1 月~2023 年 1 月部分省市的土地成交均价变化" ) subti("整理 & 绘制:微信公众号 RStata" ) xla(2007(2)2023) gr export "2007年1月~2023年1月部分省市的土地成交年度均价变化.png" , width(2400) replace
如果我们想绘制光滑的曲线图,可以使用 mspline 绘制:
*- 样条法绘图 local colors `""254 212 57" "112 154 225" "138 145 151" "210 175 129" "253 116 70" "213 228 162" "25 126 192""' levelsof 省_经纬度解析, local(prov) local cmd = "tw" local leg = "" local count = 0 foreach i in `prov' { local count = `count' + 1 local color: word `count' of `colors' local cmd = `"`cmd' (mspline unit 年份 if 省 == "`i'", lc("`color'") bands(17) lp(solid))"' local leg = `"`leg' `count' "`i'""' } `cmd', xti("年份") yti("土地成交均价(元/平)") /// leg(order(`leg') pos(11) row(3) ring(0)) /// caption("数据来源:中国土地市场网") /// ti("2007 年 1 月~2023 年 1 月部分省市的土地成交均价变化") /// subti("整理 & 绘制:微信公众号 RStata") xla(2007(2)2023) gr export "2007年1月~2023年1月部分省市的土地成交年度均价变化(样条法).png", width(2400) replace
band(17) 中的 17 也就是总年份数(2007~2023)。
绘制市县地图 关于如何使用 Stata 绘制省市区县的地图,大家可以在平台上搜索对应的课程学习,这里展示下代码。
use "2000~2023年1月31日地块出让信息(含经纬度).dta" , clear keep 年份 省_经纬度解析 省代码_经纬度解析 市_经纬度解析 市代码_经纬度解析 县_经纬度解析 县代码_经纬度解析 供地面积_公顷 成交价格_万元ren 省_经纬度解析 省ren 省代码_经纬度解析 省代码ren 市_经纬度解析 市ren 市代码_经纬度解析 市代码ren 县_经纬度解析 县ren 县代码_经纬度解析 县代码destring 成交价格_万元, replace forcegen unit = 成交价格_万元 / 供地面积_公顷collapse (mean ) unit, by (县 县代码 年份)destring 县代码, replace drop if missing (县代码)drop 县keep if 年份 == 2022merge 1:m 县代码 using "chinacounty2021mini_db.dta" drop if missing (ID)replace unit = -1 if missing (unit)spmap unit using chinacounty2021mini_coord.dta, id(ID) clmethod(custom) clbreaks(-1 0 40 400 1000 2000 3000 4000 100000) fcolor("gray" "237 248 233" "199 233 192" "161 217 155" "116 196 118" "65 171 93" "35 139 69" "0 90 50" ) ocolor("white" ...) osize(vvvthin ...) graphr(margin(medium)) legend(size(*1) order (2 "无数据" 3 "< 40元/平" 4 "40~400元/平" 5 "400~1000元/平" 6 "1000~2000元/平" 7 "2000~3000元/平" 8 "3000~4000元/平" 9 "> 4000元/平" )) line (data(chinaprov2021mini_line_coord3.dta) select(drop if inlist (group, 4, 7)) by (group) size(vthin *1 *0.5 *0.5 *0.5) pattern(solid ...) color(gray black "0 85 170" black black )) polygon(data(polygon3) fcolor(black) osize(vvthin)) label (data(chinacounty2021mini_label3.dta) x(X) y (Y) label (cname) length (20) size(*0.8)) ti("2022 年中国各区县土地成交均价" , size(*1.1)) subtitle("数据来源:中国土地市场网" ) caption("绘制:微信公众号 RStata" , size(*0.8)) gr export 2022年中国各区县土地成交均价.png, width(2400) replace
各城市地价分布:
use "2000~2023年1月31日地块出让信息(含经纬度).dta" , clear keep if 年份 == 2022keep 年份 省_经纬度解析 省代码_经纬度解析 市_经纬度解析 市代码_经纬度解析 县_经纬度解析 县代码_经纬度解析 供地面积_公顷 成交价格_万元ren 省_经纬度解析 省ren 省代码_经纬度解析 省代码ren 市_经纬度解析 市ren 市代码_经纬度解析 市代码ren 县_经纬度解析 县ren 县代码_经纬度解析 县代码destring 成交价格_万元, replace forcegen unit = 成交价格_万元 / 供地面积_公顷drop if missing (unit)collapse (mean ) unit, by (市代码)destring 市代码, replace drop if missing (市代码)merge m :m 市代码 using chinacity2021mini_db.dtadrop if missing (ID)replace unit = -1 if missing (unit)spmap unit using chinacity2021mini_coord.dta, id(ID) clmethod(custom) clbreaks(-1 0 40 400 1000 2000 3000 4000 100000) fcolor("gray" "237 248 233" "199 233 192" "161 217 155" "116 196 118" "65 171 93" "35 139 69" "0 90 50" ) ocolor("white" ...) osize(vvthin ...) graphr(margin(medium)) legend(size(*1) order (2 "无数据" 3 "< 40元/平" 4 "40~400元/平" 5 "400~1000元/平" 6 "1000~2000元/平" 7 "2000~3000元/平" 8 "3000~4000元/平" 9 "> 4000元/平" )) line (data(chinaprov2021mini_line_coord3.dta) select(drop if inlist (group, 4, 7)) by (group) size(vthin *1 *0.5 *0.5 *0.5) pattern(solid ...) color(gray black "0 85 170" black black )) polygon(data(polygon3) fcolor(black) osize(vvthin)) label (data(chinacity2021mini_label3.dta) x(X) y (Y) label (cname) length (20) size(*0.8)) ti("2022 年中国各城市土地成交均价" , size(*1.1)) subtitle("数据来源:中国土地网" ) caption("绘制:微信公众号 RStata" , size(*0.8)) gr export 2022年中国各城市土地成交均价.png, width(2400) replace
地块分布 同样,地图 + 散点图的绘制方法也可以参考平台上对应课程的视频讲解学习。
use "2000~2023年1月31日地块出让信息(含经纬度).dta" , clear keep 省_经纬度解析 纬度 经度 年份drop if missing (经度) | missing (纬度)ren 省_经纬度解析 省keep if 年份 == 2022encode 省, gen (prov)geo2xy 纬度 经度, gen (lat lon) projection(albers, 6378137 298.257223563 25 47 0 105) replace gen class = "main" save mainpoint, replace use mainpoint, clear keep if inrange (lon, 120000, 1766004.1) & inrange (lat, 320000, 2557786.0)replace lon = lon * 0.5 + 2100000replace lat = lat * 0.5 + 1665139replace class = "smallbox" append using mainpointsave pointdata, replace use chinacity2021mini_db.dta, clear grmap using chinacity2021mini_coord.dta, id(ID) ocolor("black" ...) osize(vvthin ...) line (data(chinaprov2021mini_line_coord3.dta) select(keep if inlist (group, 1, 2, 3, 5, 6)) by (group) size(vvthin *1 *0.5 *0.5 *0.5) pattern(solid ...) color(white black "0 85 170" black black )) polygon(data(polygon3) fcolor(black) osize(vvthin)) label (data(chinacity2021mini_label3) x(X) y (Y) label (cname) length (20) size(*0.8)) point(data(pointdata) by (prov) fcolor("80 80 255" "206 61 50" "116 155 88" "240 230 133" "70 105 131" "186 99 56" "93 177 221" "128 34 104" "107 215 107" "213 149 167" "146 72 34" "131 123 141" "199 81 39" "213 143 92" "122 101 165" "228 175 105" "59 27 83" "205 222 183" "97 42 121" "174 31 99" "231 199 111" "90 101 94" "204 153 0" "153 204 0" "169 169 169" "204 153 0" "153 204 0" "51 204 0" "0 204 51" "0 204 153" "0 153 204" "10 71 255" "71 117 255" "255 194 10" ) x(lon) y (lat) size(vtiny ...) shape(o ...)) leg(off) ti("2022 年各省土地出让地块分布" , color(black)) subti("绘制:微信公众号 RStata" ) graphr(margin(medium)) caption("数据来源:中国土地市场网,使用高德地图和百度地图地理编码接口解析经纬度" , size(*0.8)) gr export 2022年各省土地出让地块分布.png, width(2400) replace
点击这里跳转到 RStata 短书平台获取附件:使用 Stata 绘图展示历年土地成交均价变化与市县地价分布
评论