python绘制三维动态柱状图-使用pyecharts模块

目录

  • 1. 原始数据
  • 2. 代码
  • 3. 结果

当有数据想要进行横向纵向同步比较时,三维柱状图是最好的选择,目前基础的word和excel还不具备此功能,可以使用专业画图软件origin pro来做,python也是很多人首先想到的。网上搜了一下关于python绘制三维柱状图,没有找到可用的,偶然间发现一个第三方库pyecharts,不仅可以绘制三维图,还能动态展示,生成的是html文件。
中文文档地址:http://pyecharts.herokuapp.com/;github项目源码

仅以下方数据示例,更复杂的操作请参看GitHub

1. 原始数据

python绘制三维动态柱状图-使用pyecharts模块_第1张图片
我的原始数据都是按100算的,所以在函数中有用除以100计算,如果数据正好是1以内,可以不做除以100处理

2. 代码

import random
from pyecharts.faker import Faker
from pyecharts import options as opts
from pyecharts.charts import Bar3D
import pandas as pd
import numpy as np
def read_do():   #负责数据的读取和整理
    init_data=pd.read_excel(r"D:\python\pra\画图\青岛指标.xlsx")
    init_data=np.array(init_data)
    data_tip=['GDP增速','常住人口城镇化率','第二产业占GDP比重','第三产业占GDP比重','城市恩格尔系数','公园绿地建成区绿化覆盖率',
              '居民消费价格指数','商品零售价格指数','工业生产者出厂价格指数']
    data_year=[2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018]
    data_pre=[]

    num=1
    N=0
    for st in data_tip:
        ofr=0
        for dy in data_year:
            fuck = [st,dy,float(init_data[ofr][num]/100)] # 原始数据做除以100处理,使其位于0-1之间
            data_pre.append(fuck)
            N = N+1
            ofr = ofr+1
        num = num+1
    return data_pre
def bar3d_base() -> Bar3D:
    data = read_do()
    data_tip=['GDP增速','常住人口城镇化率','第二产业占GDP比重','第三产业占GDP比重','城市恩格尔系数','公园绿地建成区绿化覆盖率', '居民消费价格指数','商品零售价格指数','工业生产者出厂价格指数']
    data_year=[2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018]
    c = (
        Bar3D()
        .add(
            "",
            data,
            xaxis3d_opts = opts.Axis3DOpts(data_tip,type_="category",max_=9),
            yaxis3d_opts = opts.Axis3DOpts(data_year,type_="time",max_=2019),
            zaxis3d_opts = opts.Axis3DOpts(type_="value",max_=1), # 此处最大值为1,也可以自行设置,不过值过大颜色都是红色
            grid3d_opts = opts.Grid3DOpts(width="280",height="100")
        )
        .set_global_opts(
            visualmap_opts = opts.VisualMapOpts(max_=1),
            title_opts = opts.TitleOpts(title = "青岛指标"),
        
        )
    )


    return c
abc = bar3d_base()
abc.render("青岛指标.html")

3. 结果

在这里插入图片描述
python绘制三维动态柱状图-使用pyecharts模块_第2张图片
python绘制三维动态柱状图-使用pyecharts模块_第3张图片
可以看到,图片左侧有一个颜色条,表示0-1的数值,故要将数据处理为0-1之间。
可以旋转查看,是动态的。

你可能感兴趣的:(商业分析,python代码)