python可视化-pyecharts实现3D图、散点图和雷达图

3D图

from pyecharts import options as opts
from pyecharts.charts import Bar3D
import csv

# 读数据
def readDbar():
    contentList=[]
    with open('video.csv','r',encoding='utf-8') as file:
        csvReader = csv.reader(file)
        for item in csvReader:
            contentList.append(item)
    return contentList

# 生成对应的图表
def make3Dbar(contentList):
    bar = Bar3D(init_opts=opts.InitOpts(width='1200px',height='800px'))

# Java h5 python 大数据 其他

    types = ['h5','java','python','大数据','其他']
#     年限
#     三个年限列表

    playCount7 = [0,0,0,0,0]
    playCount8 = [0,0,0,0,0]
    playCount9 = [0,0,0,0,0]
#     根据读取的数据 将每一年的每一学科的播放量进行统计
    for item in contentList:

        type = item[1]
        time = item[5].split('/')[0]
        #播放量
        playCount = int(item[3])

        if type == 'h5':
            if time == '2017':
                playCount7[0]=playCount7[0]+playCount
            elif time == '2018':
                playCount8[0]=playCount8[0]+playCount
            if time == '2019':
                playCount9[0] = playCount9[0] + playCount
        elif type == 'java':
            if time == '2017':
                playCount7[1]=playCount7[0]+playCount
            elif time == '2018':
                playCount8[1]=playCount8[0]+playCount
            if time == '2019':
                playCount9[1] = playCount9[0] + playCount
        elif type == 'python':
            if time == '2017':
                playCount7[2]=playCount7[2]+playCount
            elif time == '2018':
                playCount8[2]=playCount8[2]+playCount
            if time == '2019':
                playCount9[2] = playCount9[2] + playCount
        elif type == '大数据':
            if time == '2017':
                playCount7[3]=playCount7[3]+playCount
            elif time == '2018':
                playCount8[3]=playCount8[3]+playCount
            if time == '2019':
                playCount9[3] = playCount9[3] + playCount
        elif type == '其他':
            if time == '2017':
                playCount7[4]=playCount7[4]+playCount
            elif time == '2018':
                playCount8[4]=playCount8[4]+playCount
            if time == '2019':
                playCount9[4] = playCount9[4] + playCount

    print(playCount7,playCount8,playCount9)


#     学科对应的年限 年 学科 播放量  ==定义一个二位列表 让不同年份和播放分开
    result= []
    for i in range(len(types)):
        item = []
        item.append(types[i])
        item.append('2017')
        item.append(playCount7[i])
        result.append(item)
    for i in range(len(types)):
        item = []
        item.append(types[i])
        item.append('2018')
        item.append(playCount8[i])
        result.append(item)
    for i in range(len(types)):
        item = []
        item.append(types[i])
        item.append('2019')
        item.append(playCount9[i])
        result.append(item)

    bar.add('学科播放量统计',result)
    bar.render('学科播放量统计3D图.html')



if __name__ == '__main__':
    contentList = readDbar()
    make3Dbar(contentList)

代码中文档:video.csv
格式如下:之作部分展示

【教育】web前端 1000集全套(学完可就业/持续更新~,h5,274:53:22,393000,11000,2019/3/11,逆风微笑的代码狗,http://www.bilibili.com/video/av45from=search&seid=11791596652186258788
【程序员】2019Python全套视频教程,python,201:20:27,7601,260,2019/8/2,教育,http://www.bilibili.com/video/av6from=search&seid=11791596652186258788
【教育】Python 900集(学完可就业/2019版),python,350:51:44,41000,848,2019/9/27,教育,http://www.bilibili.com/video/from=search&seid=11791596652186258788
【教育】Web安全   kali Linux渗透攻防项目实战,其他,12:16:31,3778,9,2019/8/3,逆狗,http://www.bilibili.com/video/av62065508?from=sea
【(教育)课外拓展】Spring Security oAut

结果:

在这里插入图片描述

散点图

from pyecharts import options as opts
from pyecharts.charts import Scatter
import pandas as pd
from pyecharts.commons.utils import JsCode

def scatter_render():
    df = pd.DataFrame(
        {
            '年龄':[18,23,28,30,32,40,19,45],
            '信用积分':[630,710,730,740,680,700,650,800],
            '姓名':['小明','彦祖','德华','大聪明','rose','tom','小丽丽','刘能']
        }
    )

    # 年龄的排序
    df.sort_values('年龄',inplace=True,ascending=True)
    c = (
        Scatter()
        .add_xaxis(df.年龄.values.tolist())
        .add_yaxis(
            '信用积分',
            df[['信用积分','姓名']].values.tolist(),
            label_opts=opts.LabelOpts(
                formatter=JsCode(
                    # js中函数的写法   通过定义js的回调函数自定义组合的标签显示
                    "function(params){return params.value[2];}"
                )
            )
        )
        .set_global_opts(
            title_opts=opts.TitleOpts(title='散点图图例'),
            #     设置数据的范围和数据的连续性
            xaxis_opts=opts.AxisOpts(
                type_='value',
                min_=18
            ),
            yaxis_opts=opts.AxisOpts(
                min_=600
            )
        )

    )
    return c
scatter_render().render('散点图显示.html')

结果:
在这里插入图片描述

雷达图



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

v1 = [[8.5,100000,15000,5000,13000,5000]]
v2 = [[8.1,120000,16000,7000,15000,7000]]

def radar_base() ->Radar:
    c = (
        Radar()
        .add_schema(
            schema=[
                opts.RadarIndicatorItem(name='KDA',max_=10),
                opts.RadarIndicatorItem(name='输出', max_=140000),
                opts.RadarIndicatorItem(name='经济', max_=20000),
                opts.RadarIndicatorItem(name='生存', max_=10000),
                opts.RadarIndicatorItem(name='推进', max_=20000),
                opts.RadarIndicatorItem(name='刷野', max_=10000),
            ]
        )
        .add(
            '鲁班',v1,
            color='green',
            #通过颜色属性 将其填充
            areastyle_opts=opts.AreaStyleOpts(
                opacity=0.5,
                color='green'
            ),
        )
        .add(
            '后裔',v2,
            color='red',
            areastyle_opts=opts.AreaStyleOpts(
                opacity=0.5,
                color='red'
            ),
        )
        .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
        .set_global_opts(title_opts=opts.TitleOpts(title='英雄成长属性对比'))
    )

    return c

radar_base().render("雷达图.html")

结果:
在这里插入图片描述

  • 4
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值