Python-PyEcharts动态柱状图

更多优秀文章,请关注个人微信公众号: 程序猿小杨 


一、列表(list)的排序

列表.sort(key=选择排序依据的函数,reverse=TruelFalse)

      1、参数ky,是要求传入一个函数,表示将列表的每一个元素都传入函数中,返回排序的依据;

      2、参数reverse,是否反转排序结果,True表示降序,False表示升序。

用途:常用于嵌套列表排序

参考代码:

#列表的排序sortmy_list=[['中国',100],['美国',60],['俄罗斯',80],['日本',10]]#对上述嵌套列表进行排序,对外层列表进行排序,排序规则是:内层列表的第二个元素数字#1、定义函数,用来确定按照谁来排序# def choose_sort_key(element):#     return element[1]# #嵌套列表排序后的结果:[['中国', 100], ['俄罗斯', 80], ['美国', 60], ['日本', 10]]# my_list.sort(key=choose_sort_key,reverse=True)#2、使用lambda匿名函数my_list.sort(key=lambda element:element[1],reverse=True)print(f"嵌套列表排序后的结果:{my_list}")

二、利用数据绘制动态的GDP柱状图

2.1、准备数据并处理

    关注上面公众号,回复“地图”即可获取相关数据。

2.2、相关代码

####绘制各国前10名GDP动态柱状图#1、导入数据并处理from pyecharts.charts import Bar, Timelinefrom pyecharts.globals import ThemeTypefrom pyecharts.options import LabelOpts, InitOpts, TitleOptstry:    #打开文件    csv_data=open("D:\\1960-2019全球GDP数据.csv", "r", encoding="GB2312")    #读取每行数据    csv_data=csv_data.readlines()    #去掉第一行数据 year,GDP,rate    csv_data.pop(0)    #处理后的字典数据    #格式如下:{年份:[国家,gdp,[国家,gdp,…],年份:[国家,gdp,[国家,gdp,…],…}    data_dict={}    for csv_line_data in csv_data:        line_list=csv_line_data.split(",")        year=int(line_list[0]) #年份        country=line_list[1] #国家        gdp_data =float(line_list[2]) /100000000 # gdp数据        gdp_data=round(gdp_data,2)        try:            data_dict[year].append([country,gdp_data])        except Exception as e:            data_dict[year]=[]            data_dict[year].append([country, gdp_data])    # print(f"处理后的数据:{data_dict}")    timeline = Timeline(init_opts=InitOpts(theme=ThemeType.WHITE))    #2、绘制柱状图    #对字典data_dict按照年份key先排序    sorted_year_data=sorted(data_dict.keys())    #排序后的年份:[1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972,    # print(f"排序后的年份:{sorted_year_data}")    #对每一年GDP数据进行绘图    for years in sorted_year_data:        #对嵌套列表按照GDP排序        data_dict[years].sort(key=lambda element:element[1],reverse=True)        #获取每年数据  取前10名        year_data=data_dict[years][0:10]        # print(f"排序后的year_data:{year_data}")        x_data = [];        y_data = [];        for data in year_data:            # 组装x轴数据 国家            x_data.append(data[0])            # 组装y轴数据 GDP 单位亿            y_data.append(float(data[1]))        #构建柱状图        bar=Bar()        x_data.reverse()        y_data.reverse()        #取前10名的数据        bar.add_xaxis(x_data)        bar.add_yaxis("GDP(亿)",y_data,label_opts=LabelOpts(position="right"))        #翻转x/y        bar.reversal_axis()        ## 柱状图bar全局配置        bar.set_global_opts(            # # 标题配置 title:主标题文本,支持使用 \n 换行 title pos_left:组件离容器左侧的距离 pos_bottom:title 组件离容器下侧的距离            title_opts=TitleOpts(title=f"{years}年全球GDP前10数据")        )        # 3、创建时间轴对象        timeline.add(bar, str(years) + "年")    # 设置自动播放    timeline.add_schema(        play_interval="2000",  # 表示播放的速度(跳动的间隔),单位毫秒(ms)。        is_auto_play=True,  # 是否自动播放。        is_loop_play=True,  # 是否循环播放。        is_timeline_show=True  # 是否显示 timeline 组件。如果设置为 false,不会显示,但是功能还存在。    )    # 绘制时间轴图    timeline.render("1960-2019全球GDP前10动态柱状图.html")except Exception as e:    print(f"打开文件异常e:{e}")

效果图:

更多优秀文章,请扫码关注个人微信公众号或搜索“程序猿小杨”添加。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值