堆积面积图、三维散点图(pyecharts)

在对数据的掌握及分析变得愈加重要的当今时代,数据可视化作为提高用户对数据的理解程度,创新架构,增进体验的重要一环,一向富有表现力的Python语言应当可以发挥更大作用,优秀的pyechart第三方库即在这样的背景下诞生。

一、pyecharts是什么?

要了解pyecharts是什么?我们必须先了解Echares是什么。Echarts是一个由百度开源的商业级数据图表,它是一个纯JavaScript的图表库,可以为用户提供直观生动,可交互,可高度个性化定制的数据可视化图表,赋予了用户对数据进行挖掘整合的能力。

我们即可定义:pyecharts库是一个用于生成 Echarts 图表的类库。

二、堆积面积图使用步骤

1.引入所要用到的数据库

代码如下:

import pandas as pd

如果你运行不成功,那可是你没有安装这个数据库,只按住win+R输入cmd,打开命令提示符后输入“pip install pandas” ,点击回车。等待安装完后就可以正常使用了。当然不只是这个数据库,其他的数据库没有,你也可以使用“pip install”+数据库名称进行安装

2.读入数据

代码如下:

data_mpv_sale = pd.read_excel(r'E:\20210322022\数据可视化\MPV销量数据2012-2021(1).xlsx')
data_mpv_sale

3.数据预处理

(1).数据去重,并查看是否去重成功

data_mpv_sale2 = data_mpv_sale.drop_duplicates(subset=['采集时间','排名'],keep='last')
data_mpv_sale2 = data_mpv_sale2.sort_values(by=['采集时间','排名'])
data_mpv_sale2

 可以看到去重成功了

(2).数据加工

时间条件筛选

'201721'>'20173'
data_mpv_sale3 = data_mpv_sale2[data_mpv_sale2['采集时间']>'2017']
data_mpv_sale3['车型'] 

data_mpv_sale3['厂商']

data_mpv_sale3['车型_厂商'] = data_mpv_sale3['车型'] + '_' + data_mpv_sale3['厂商']
data_mpv_sale3

 时间数据加工

data_mpv_sale4 = data_mpv_sale3.copy() # 复制一个表格对象
data_mpv_sale4['年份'] = data_mpv_sale4['采集时间'].agg(lambda x:int(x[:4]))
data_mpv_sale4['月份'] = data_mpv_sale4['采集时间'].agg(lambda x:int(x[-2:]))
def jidu(month):
    if month<=3:
        return 1
    elif month<=6:
        return 2
    elif month<=9:
        return 3
    else:
        return 4
data_mpv_sale4['季度']  = data_mpv_sale4.loc[:,'月份'].agg(jidu)
data_mpv_sale4['年份_季度'] = data_mpv_sale4['年份'].agg(lambda x:str(x)+'年') + data_mpv_sale4['季度'].agg(lambda x:str(x)+'季度')
data_mpv_sale4

重新聚合车辆季度销量

sale_season = data_mpv_sale4.groupby(by=['车型_厂商','年份_季度'])['销量'].sum()
sale_season

 定位销量头部车型

# 16年后前20名
sale_total20 = data_mpv_sale4.groupby(by=['车型_厂商'])['销量'].sum().sort_values(ascending=False)[:10].index.values
sale_total20

4.数据结构重组

# 定义时间列表
year = [2017,2018,2019,2020,2021]
season = [1,2,3,4]
list_time = []
for y in year:
    for s in season:
        if y==2021 and s>=3:
            break
        else:
            list_time.append(f'{y}年{s}季度')
list_time
# 定义字典存储20辆车的季度销量信息
sale_dict = {}
for c in sale_total20:
    sale_dict.setdefault(c,[]) # 创建键:c,值:[]
    for t in list_time:
        if t in sale_season[c].index:
            sale_dict[c].append(int(sale_season[c][t]))
        else:
            sale_dict[c].append(0) # 没有销量记录的季度需要手动填入0
sale_dict

 5.画图

import pyecharts.options as opts
from pyecharts.charts import Line

c = (
    Line(init_opts=opts.InitOpts(width='800px',height='400px'))
    .add_xaxis(xaxis_data=list_time)
    
    .set_global_opts(
#         title_opts=opts.TitleOpts(title="2017-2021年MPV销量前10名车型走势"),
        tooltip_opts=opts.TooltipOpts(trigger="axis", axis_pointer_type="cross"), # 配置提示框
        yaxis_opts=opts.AxisOpts(
            type_="value",
            axistick_opts=opts.AxisTickOpts(is_show=True),
            splitline_opts=opts.SplitLineOpts(is_show=True),
        ),
        xaxis_opts=opts.AxisOpts(type_="category", boundary_gap=False),
        datazoom_opts=opts.DataZoomOpts(), # 配置滑动条
    )
)

for name,sale_list in sale_dict.items():
    c.add_yaxis(
        series_name=name, # 序列名称,由车型名称定义
        stack="总量", # 设置堆积图
        y_axis=sale_list, # 销量数据
        areastyle_opts=opts.AreaStyleOpts(opacity=0.5), # 设置面积图
        label_opts=opts.LabelOpts(is_show=False),
        is_smooth = True, # 显示平滑曲线
    )
c.render_notebook()
# c.render('2017-2021年MPV销量前10名车型走势.html')

这样我们的堆积面积图就搞好了,让我们来看看成果吧

在最终的效果图中新增加了标题,设置了居中,颜色和大小
backgroundColor 背景色
默认无背景transparent;颜色可以使用 RGB 表示,比如 ‘rgb(128, 128, 128)’,如果想要加上 alpha 通道表示不透明度,可以使用 RGBA,比如 ‘rgba(128, 128, 128, 0.5)’,也可以使用十六进制格式。

 

三、三维散点图

1.引入数据库

import pandas as pd

2.导入数据

data = pd.read_excel(r'E:\20210322022\数据可视化\航空公司数据-剔除空年龄.xlsx')
data

3.剔除年龄缺失值

data.dropna(subset=['年龄'],inplace=True)

4.数据筛选

data_select = data.loc[:100,['年龄','飞行次数','最大乘机时间间隔']]
x = data_select['飞行次数'].tolist()
y = data_select['最大乘机时间间隔'].tolist()
z = data_select['年龄'].tolist()
z

 5.画图

import pyecharts.options as opts
from pyecharts.charts import Scatter3D
c = (
    Scatter3D()
    .add(
        '',
        data = [[i,j,k] for i,j,k in zip(x,y,z)], # 数据:二维数组
        xaxis3d_opts=opts.Axis3DOpts( # x轴配置
            name='飞行次数',
            type_="value",
        ),
        yaxis3d_opts=opts.Axis3DOpts( # y轴配置
            name='最大乘机时间间隔',
            type_="value",
        ),
        zaxis3d_opts=opts.Axis3DOpts( # z轴配置
            name='年龄',
            type_="value",
        ),
    )
    .set_global_opts(
        visualmap_opts=opts.VisualMapOpts(
                max_= max(z),
                range_color=[
                    "#1710c0",
                    "#0b9df0",
                    "#00fea8",
                    "#00ff0d",
                    "#f5f811",
                    "#f09a09",
                    "#fe0300",
                ],
        ),
    )
)
c.render_notebook()

                                                颜色可以自己改

最后三维散点图也出来了

优点:

1.简洁的 API 设计,使用如丝滑般流畅,支持链式调用
2.囊括了 30+ 种常见图表,应有尽有
3.支持主流 Notebook 环境,Jupyter Notebook 和 JupyterLab
4.可轻松集成至 Flask,Django 等主流 Web 框架
5.高度灵活的配置项,可轻松搭配出精美的图表
6.详细的文档和示例,帮助开发者更快的上手项目
7.多达 400+ 地图文件以及原生的百度地图,为地理数据可视化提供强有力的支持

四、总结

到这里,今天的推介内容已全部结束,总的来说,pyechart库作为优秀的python第三方库,为Echarts图表库与python建立了良好沟通。当然,python可实现的功能还有很多,期待大家的不断学习探索与python迸发出更大的火花吧!



 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值