2009-2017年中国水资源数据可视化(python+pyecharts)

pyecharts是一款将python与echarts结合的强大的数据可视化工具,本文将为你展示基于pyecharts2009-2017年中国水资源数据的可视化,将2009-2017年中国水资源总量(地表水、地下水资源量)、水资源供给结构(地表水、地下水、其他供给)、水资源利用结构(农业、工业、生活、生态)以及人均水资源量和人均用水量的整体情况、各省指标情况等多维数据、多时间尺度的可视化,感兴趣的可以通过下面的百度网盘链接下载HTML文件,通过浏览器在本地打开(需在联网状态),查看2009-2017年中国水资源整体情况及各省水资源情况。

1. 中国水资源格局可视化

感兴趣的可通过下面分享的百度网盘地址,下载 waterData.html 文件到本地,在联网的情况下用浏览器(推荐使用Google浏览器)打开即可查看中国水资源格局的可视化结果。

中国水资源格局HTML文件百度网盘下载地址:单击此处下载
提取码:bpse

序号 指标 图标类型
1 中国水资源量(1个图) 柱状图+折线图
2 中国供水结构(1个图) 柱状图+折线图
3 中国人均水资源量、用水量(1个图) 折线图
4 各省水资源空间分布(3个图) 地图 VisualMap
5 各省供水结构空间分布(4个图) 地图 VisualMap
6 各省用水结构空间分布(4个图) 地图 VisualMap
7 各省人均水资源量、用水量(2个图) 地图 VisualMap

中国水资源格局HTML文件截图示例:

2. 各省水资源可视化

感兴趣的可通过下面分享的百度网盘地址,下载 prosWater.html 文件到本地,在联网的情况下用浏览器(推荐使用Google浏览器)打开即可查看各省水资源的可视化结果。

各省水资源可视化HTML文件百度网盘下载地址:单击此处下载
提取码:h2gc

序号 指标 图标类型
1 供水结构(1个图) 饼图
2 用水结构(1个图) 饼图
3 水资源总量(1个图) 折线图
4 人均水资源量(1个图) 折线图
5 用水总量(1个图) 折线图
6 人均用水量(1个图) 折线图

各省水资源可视化HTML文件截图示例:

江苏省示例
2009-2017年中国水资源数据可视化(python+pyecharts)_第1张图片
北京市示例2009-2017年中国水资源数据可视化(python+pyecharts)_第2张图片

3. 2017年各省水资源之最:

水资源的数据均来自国家统计局网站中资源和环境指标中。人均水资源量、人均用水量单位为:m³/人, 其他指标单位为:亿m³

序号 指标 最大值 最小值
1 水资源总量 西藏(4749.9) 宁夏(10.8)
2 地表水资源总量 西藏(4749.9) 宁夏(8.7)
3 地下水资源总量 西藏(1086) 天津(5.5)
4 用水总量 江苏(591.3) 青海(25.8)
5 地表水供给量 江苏(575.3) 北京(12.4)
6 地下水供给量 黑龙江(163.1) 上海(0)
7 其他供给量 北京(10.5) 上海(0)、西藏(0)
8 农业用水量 新疆(514.4) 北京(5.1)
9 工业用水量 江苏(250.1) 西藏(1.5)
10 生活用水量 广东(100.9) 宁夏(2.3)
11 生态用水量 内蒙(23.1) 西藏(0.2)
12 人均水资源量 西藏(142311.3) 天津(83.36)
13 人均用水量 新疆(2280.78) 天津(176.33)

4. 参考代码如下:

该数据可视化主要利用了pyecharts中的Page()、Tab()、Map()、Bar()、Grid()等类型的图,以下是各类型图表的代码示例,感兴趣的可以去pyecharts网站查看pyecharts的说明文档,了解更详细的内容。

示例代码参考pyecharts网站。

# Page()顺序多图

from pyecharts.faker import Faker
from pyecharts import options as opts
from pyecharts.charts import Bar, Line, Page
def bar_base() -> Bar:
    c = (
        Bar()
        .add_xaxis(Faker.choose())
        .add_yaxis("商家A", Faker.values())
        .add_yaxis("商家B", Faker.values(), is_selected=False)
        .set_global_opts(title_opts=opts.TitleOpts(title="Bar-基本示例", subtitle="我是副标题"))
    )
    return c
def line_base() -> Line:
    c = (
        Line()
        .add_xaxis(Faker.choose())
        .add_yaxis("商家A", Faker.values())
        .add_yaxis("商家B", Faker.values())
        .set_global_opts(title_opts=opts.TitleOpts(title="Line-基本示例"))
    )
    return c
page = Page()
page.add(bar_base(), line_base())
page.render()

# Tab选项卡多图
from pyecharts.faker import Faker
from pyecharts import options as opts
from pyecharts.charts import Bar, Tab, Pie, Line
from pyecharts.components import Table

def bar_datazoom_slider() -> Bar:
    c = (
        Bar()
        .add_xaxis(Faker.days_attrs)
        .add_yaxis("商家A", Faker.days_values)
        .set_global_opts(
            title_opts=opts.TitleOpts(title="Bar-DataZoom(slider-水平)"),
            datazoom_opts=[opts.DataZoomOpts()],
        )
    )
    return c
    
def line_markpoint() -> Line:
    c = (
        Line()
        .add_xaxis(Faker.choose())
        .add_yaxis(
            "商家A",
            Faker.values(),
            markpoint_opts=opts.MarkPointOpts(data=[opts.MarkPointItem(type_="min")]),
        )
        .add_yaxis(
            "商家B",
            Faker.values(),
            markpoint_opts=opts.MarkPointOpts(data=[opts.MarkPointItem(type_="max")]),
        )
        .set_global_opts(title_opts=opts.TitleOpts(title="Line-MarkPoint"))
    )
    return c
    
def pie_rosetype() -> Pie:
    v = Faker.choose()
    c = (
        Pie()
        .add(
            "",
            [list(z) for z in zip(v, Faker.values())],
            radius=["30%", "75%"],
            center=["25%", "50%"],
            rosetype="radius",
            label_opts=opts.LabelOpts(is_show=False),
        )
        .add(
            "",
            [list(z) for z in zip(v, Faker.values())],
            radius=["30%", "75%"],
            center=["75%", "50%"],
            rosetype="area",
        )
        .set_global_opts(title_opts=opts.TitleOpts(title="Pie-玫瑰图示例"))
    )
    return c

def table_base() -> Table:
    table = Table()

    headers = ["City name", "Area", "Population", "Annual Rainfall"]
    rows = [
        ["Brisbane", 5905, 1857594, 1146.4],
        ["Adelaide", 1295, 1158259, 600.5],
        ["Darwin", 112, 120900, 1714.7],
        ["Hobart", 1357, 205556, 619.5],
        ["Sydney", 2058, 4336374, 1214.8],
        ["Melbourne", 1566, 3806092, 646.9],
        ["Perth", 5386, 1554769, 869.4],
    ]
    table.add(headers, rows).set_global_opts(
        title_opts=opts.ComponentTitleOpts(title="Table")
    )
    return table

tab = Tab()
tab.add(bar_datazoom_slider(), "bar-example")
tab.add(line_markpoint(), "line-example")
tab.add(pie_rosetype(), "pie-example")
tab.add(table_base(), "table-example")
tab.render()

# Map()地图

from example.commons import Faker
from pyecharts import options as opts
from pyecharts.charts import Map

def map_base() -> Map:
    c = (
        Map()
        .add("商家A", [list(z) for z in zip(Faker.provinces, Faker.values())], "china")
        .set_global_opts(title_opts=opts.TitleOpts(title="Map-基本示例"))
    )
    return c

#Grid()并行多图

from pyecharts.faker import Faker
from pyecharts import options as opts
from pyecharts.charts import Bar, Grid, Line,Scatter


def grid_vertical() -> Grid:
    bar = (
        Bar()
        .add_xaxis(Faker.choose())
        .add_yaxis("商家A", Faker.values())
        .add_yaxis("商家B", Faker.values())
        .set_global_opts(title_opts=opts.TitleOpts(title="Grid-Bar"))
    )
    line = (
        Line()
        .add_xaxis(Faker.choose())
        .add_yaxis("商家A", Faker.values())
        .add_yaxis("商家B", Faker.values())
        .set_global_opts(
            title_opts=opts.TitleOpts(title="Grid-Line", pos_top="48%"),
            legend_opts=opts.LegendOpts(pos_top="48%"),
        )
    )

    grid = (
        Grid()
        .add(bar, grid_opts=opts.GridOpts(pos_bottom="60%"))
        .add(line, grid_opts=opts.GridOpts(pos_top="60%"))
    )
    return grid

最后感谢pyecharts团队的贡献,感兴趣的可以去github上了解更多关于pyecharts项目的内容。

你可能感兴趣的:(水资源,人均用水量,水资源量,可视化,供水结构,用水结构,pyecharts)