对excel数据绘制染色地图、折线图、柱形图、饼图

现有97年到15年全国各省CO2排放量数据
在这里插入图片描述
在这里插入图片描述
一、代码共实现了以下可视化图表:

  1. 柱形图 97 年和 15 年全国各省 CO2 总排放量对比
  2. 染色地图 97 年和 15 年全国各省 CO2 总排放量分布图
  3. 折线图 :各省在 97 年到 15 年的 CO2 排放量总量趋势图
  4. 由于将 31 个省的折线图画在同一张图中太密集,同时为了分析不同省份之间趋势的相
    似性,对各省的排放趋势做 KMean 聚类 ,分为 3 类,并将不同类的省份画在不同的图
    中分析。
  5. 饼图 :以北京市和福建省为例,分析 2015 年时 CO2 的排放组成。

实现过程

导入所需的包,读取EXEL 表数据,以字典和 dataframe 的格式返回 97 到 15 年各省的 CO2排放总量

import numpy as np
import matplotlib.pyplot as plt
import xlrd
import pandas as pd
import pyecharts
from pyecharts.charts import Pie
from pyecharts.faker import Faker
from pyecharts.charts import Line
from pyecharts import options as opts
from sklearn.cluster import KMeans

plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号
province=['北京','天津','河北','山西','内蒙古','辽宁','吉林','黑龙江','上海','江苏','浙江','安徽','福建','江西','山东','河南','湖北','湖南','广东','广西','海南','重庆','四川','贵州','云南','陕西','甘肃','青海','宁夏','新疆']

1、 柱形图: 97 年和 15 年全国各省 CO2 总排放量对比

# 初始年份和结束年份的全国CO2排放量
def nation_bar(data_sum):
    bar = (
        pyecharts.charts.Bar()
        .add_xaxis(province)
        .add_yaxis('1997年CO2排放量', data_sum[1997][:30])
        .add_yaxis('2015年CO2排放量', data_sum[2015][:30])
        .set_global_opts(title_opts=opts.TitleOpts(title='97年和15年各省CO2排放量对比'))
    )
    bar.render('97年和15年各省CO2排放量对比.html')

在这里插入图片描述
2、染色地图: 97 年和 15 年全国各省 CO2 总排放量分布图

def nation_map(data_sum):
    map_97 = pyecharts.charts.Map()
    map_97.add('1997年全国C02分布图', [list(z) for z in zip(province, data_sum[1997][:30])], maptype='china')
    map_97.set_global_opts(title_opts=opts.TitleOpts(title='97年CO2排放量'),visualmap_opts=opts.VisualMapOpts(max_=max(data_sum[2015][:30]),min_=min(data_sum[2015][:30])))
    map_97.render('97年CO2全国分布图.html')

    # 2015年
    map_15 = pyecharts.charts.Map()
    map_15.add('2015年全国C02分布图', [list(z) for z in zip(province, data_sum[2015][:30])], maptype='china')
    map_15.set_global_opts(title_opts=opts.TitleOpts(title='15年CO2排放量'),visualmap_opts=opts.VisualMapOpts(max_=max(data_sum[2015][:30]),min_=min(data_sum[2015][:30])))
    map_15.render('15年CO2全国分布图.html')

在这里插入图片描述
在这里插入图片描述
3、 折线图:各省在 97 年到 15 年的 C O2 排放量总量趋势图

def lines(df):
    plt.figure(figsize=(15,20))
    for i in range(len(df)):
        plt.plot(df.iloc[i,:],label=df.index[i])
    plt.legend(fontsize=6,loc='upper left')
    plt.show()

在这里插入图片描述
4、聚类,分别画图

def cluster(df):
    matrix = df.to_numpy()
    k = 4
    kmeans = KMeans(n_clusters=k)
    kmeans.fit(matrix)
    provinces = np.array(province)
    provinces = provinces.reshape(len(provinces),1)

    for i in range(k):
        member = kmeans.labels_ == i
        city = matrix[member]
        label_province = provinces[member]
        for j in range(len(city)):
            plt.plot(range(1997,2016),city[j],label=label_province[j][0])
        plt.legend(fontsize=8,loc='upper left')
        plt.show()

在这里插入图片描述
在这里插入图片描述
6. 饼图:以北京市和福建省为例,分析 2015 年时 CO2 的排放组成。

def pie():
    file_path = r'co2_demo\Province sectoral CO2 emissions 2015.xlsx'
    readbook = xlrd.open_workbook(file_path)
    table = readbook.sheet_by_name('Sum')
    composition = table.row_values(0)[2:]
    beijing = table.row_values(1)[2:]
    fujian = table.row_values(13)[2:]
    pie = (
        Pie()
        .add('', [list(z) for z in zip(composition,beijing)],center=["50%", "60%"])
        .set_global_opts(title_opts=opts.TitleOpts(title='北京市CO2组成'),legend_opts=opts.LegendOpts(pos_left="20%"))
        .set_series_opts(label_opts=opts.LabelOpts(formatter="{b}:{c}"))
    )
    pie.render('北京市饼图.html')
    pie = (
        Pie()
        .add('', [list(z) for z in zip(composition,fujian)],center=["50%", "60%"])
        .set_global_opts(title_opts=opts.TitleOpts(title='福建省CO2组成'),legend_opts=opts.LegendOpts(pos_left="20%"))
        .set_series_opts(label_opts=opts.LabelOpts(formatter="{b}:{c}"))
    )
    pie.render('福建省饼图.html')

a
在这里插入图片描述

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值