精彩专栏推荐订阅:在下方主页👇🏻👇🏻👇🏻👇🏻
💖🔥作者主页:计算机毕设木哥🔥 💖
一、项目介绍
全球经济社会发展指标分散在多国多年截面里,经济体量、民生状况与数字接入往往各看各的,研究者和学生想对照区域差距、发展分层和联网水平时,缺少一套能把指标清洗、统计分析和图表呈现串起来的系统。手工拼表既费时,也难把聚类、关联这类挖掘结果稳定展示出来。本文通过开发一个基于大数据的全球经济社会发展指标数据可视化分析系统,用以帮助解决全球发展指标难统一查看、难对照挖掘结果的问题。
本系统采用 Hadoop、Spark/PySpark、Python、Django、Vue、ECharts 与 MySQL 实现,业务侧覆盖经济实力、民生福祉、数字发展三个分析维度共十五项结果,含区域产值对比、人均产值走势、预期寿命走势、区域失业差异、网民占比走势等统计图,并用 K-Means 完成国别发展分群、用 FP-Growth 挖掘发展标签共现,同时提供可视化大屏与国别发展指标数据管理,管理员还可维护个人中心与密码信息。
经系统测试,本网站能满足计算机及相关专业学生毕业设计演示需求,也能给关注全球发展指标的教学与研究使用者提供按维度看图、按国别管数的入口,对大数据可视化类课题落地有参考意义。
二、视频展示
基于大数据的全球经济社会发展指标数据可视化分析
三、开发环境
- 大数据技术:Hadoop、Spark、Hive
- 开发技术:Python、Django框架、Vue、Echarts
- 软件工具:Pycharm、DataGrip、Anaconda
- 可视化 工具 Echarts
四、系统展示
系统页面模块模块:






五、代码展示
methods: {
fetchList(url) {
return this.$http({ url: url, method: 'get' }).then(res => {
const d = (res.data && res.data.data) || []
return Array.isArray(d) ? d : []
}).catch(() => [])
},
loadAll() {
Promise.all([
this.fetchList('analysis/internet_users_trend'),
this.fetchList('analysis/region_internet_level'),
this.fetchList('analysis/internet_adoption_layers'),
this.fetchList('analysis/country_dev_clusters'),
this.fetchList('analysis/dev_label_association')
]).then(arr => {
this.initNetTrend(arr[0])
this.initRegionNet(arr[1])
this.initAdopt(arr[2])
this.initCluster(arr[3])
this.initAssoc(arr[4])
})
},
initNetTrend(data) {
const el = this.$refs.netTrendChart
if (!el) return
const rows = (data || []).slice().sort((a, b) => Number(a.year || 0) - Number(b.year || 0))
const width = el.clientWidth || 800
let opt = buildLineSingle(rows, {
xField: 'year', yField: 'avg_internet_users_pct',
yName: '网民占比(%)', xName: '年份', area: true, width
})
opt = deepMerge(opt, this.netTrendConfig.override)
safeInit(el, chart => {
chart.setOption(opt)
refitGrid(chart, { xLabels: rows.map(r => String(r.year || '')), width })
this.charts.netTrend = chart
}, this)
},
initRegionNet(data) {
const el = this.$refs.regionNetChart
if (!el) return
const rows = (data || []).slice().sort(
(a, b) => Number(b.avg_internet_users_pct || 0) - Number(a.avg_internet_users_pct || 0)
)
const width = el.clientWidth || 480
let opt = buildBarH(rows, {
yField: 'region', xField: 'avg_internet_users_pct', xName: '网民占比(%)', width
})
opt = deepMerge(opt, this.regionNetConfig.override)
safeInit(el, chart => {
chart.setOption(opt)
refitGrid(chart, { yLabels: rows.map(r => String(r.region || '')), width })
this.charts.regionNet = chart
}, this)
},
initAdopt(data) {
const el = this.$refs.adoptChart
if (!el) return
const children = data.map(r => ({
name: String(r.internet_adoption_category || ''),
value: Number(r.count || 0)
}))
const tree = [{ name: '联网采纳', children: children }]
let opt = buildSunburst(tree, { name: '国家数' })
opt = deepMerge(opt, this.adoptConfig.override)
safeInit(el, chart => {
chart.setOption(opt)
this.drills.adopt = setupSunburstDrill(chart, opt, {
container: this.$refs.adoptCrumb, rootLabel: '联网采纳', theme: 'light'
})
this.charts.adopt = chart
}, this)
},
initCluster(data) {
const el = this.$refs.clusterChart
if (!el) return
const width = el.clientWidth || 800
let opt = buildEffectScatter(data, {
xField: 'gdp_per_capita', yField: 'life_expectancy',
sizeField: 'internet_users_pct', nameField: 'country',
xName: '人均GDP', yName: '预期寿命', width
})
const byCountry = {}
data.forEach(r => { byCountry[String(r.country || '')] = r })
opt = deepMerge(opt, this.clusterConfig.override)
if (opt.tooltip) {
opt.tooltip.formatter = function (p) {
const name = (p.value && p.value[3]) || p.name || ''
const row = byCountry[name] || {}
const label = row.cluster_label || ''
return '<b>' + name + '</b><br/>人均GDP:' + (row.gdp_per_capita || '') +
'<br/>预期寿命:' + (row.life_expectancy || '') +
'<br/>联网占比:' + (row.internet_users_pct || '') +
(label ? ('<br/>分群:' + label) : '')
}
}
safeInit(el, chart => {
chart.setOption(opt)
refitGrid(chart, { width })
this.charts.cluster = chart
}, this)
},
initAssoc(data) {
const el = this.$refs.assocChart
if (!el) return
const rows = (data || []).slice()
.map(r => ({
rule: String(r.antecedents || '') + ' → ' + String(r.consequents || ''),
lift: Number(r.lift || 0)
}))
.filter(r => r.rule.indexOf('→') > 0 && r.lift > 0)
.sort((a, b) => b.lift - a.lift)
.slice(0, 12)
const width = el.clientWidth || 800
let opt = buildBarH(rows, {
yField: 'rule', xField: 'lift', xName: '提升度', yLabelWidth: 200, width
})
opt = deepMerge(opt, this.assocConfig.override)
safeInit(el, chart => {
chart.setOption(opt)
refitGrid(chart, { yLabels: rows.map(r => r.rule), width })
this.charts.assoc = chart
}, this)
}
}
六、项目文档展示

七、项目总结
本课题围绕全球经济社会发展指标,构建了一套从数据处理到结果展示的可视化分析系统。系统以 2000–2024 年国别发展数据为基础,经预处理后由 Hadoop 与 Spark 完成指标统计与挖掘,覆盖经济实力、民生福祉、数字发展三个维度共十五项分析,并用 K-Means 完成国别发展分群、用 FP-Growth 挖掘发展标签共现。前端基于 Django、Vue 与 ECharts,提供三维分析页、可视化大屏和国别发展指标管理,便于对照区域产值、收入结构、寿命与失业、网民与联网水平等结果。经测试,本系统能支撑毕业设计演示与指标查阅需求,对大数据类课题落地具有参考价值。
大家可以帮忙点赞、收藏、关注、评论啦 👇🏻
💖🔥作者主页:计算机毕设木哥🔥 💖

685

被折叠的 条评论
为什么被折叠?



