• Python综合案例(动态柱状图)


    一、基础柱状图

    基本代码

    1. """
    2. 演示基础柱状图的开发
    3. """
    4. from pyecharts.charts import Bar
    5. from pyecharts.options import LabelOpts
    6. # 使用Bar构建基础柱状图
    7. bar = Bar()
    8. # 添加x轴的数据
    9. bar.add_xaxis(["中国", "美国", "英国"])
    10. # 添加y轴数据
    11. bar.add_yaxis("GDP", [30, 20, 10], label_opts=LabelOpts(position="right"))
    12. # 反转x和y轴
    13. bar.reversal_axis()
    14. # 绘图
    15. bar.render("基础柱状图.html")

    基本效果

    二、时间动态柱状图 

    基本代码:

    1. """
    2. 演示带有时间线的柱状图开发
    3. """
    4. from pyecharts.charts import Bar, Timeline
    5. from pyecharts.options import LabelOpts
    6. from pyecharts.globals import ThemeType
    7. bar1 = Bar()
    8. bar1.add_xaxis(["中国", "美国", "英国"])
    9. bar1.add_yaxis("GDP", [30, 30, 20], label_opts=LabelOpts(position="right"))
    10. bar1.reversal_axis()
    11. bar2 = Bar()
    12. bar2.add_xaxis(["中国", "美国", "英国"])
    13. bar2.add_yaxis("GDP", [50, 50, 50], label_opts=LabelOpts(position="right"))
    14. bar2.reversal_axis()
    15. bar3 = Bar()
    16. bar3.add_xaxis(["中国", "美国", "英国"])
    17. bar3.add_yaxis("GDP", [70, 60, 60], label_opts=LabelOpts(position="right"))
    18. bar3.reversal_axis()
    19. # 构建时间线对象
    20. timeline = Timeline({"theme": ThemeType.LIGHT})
    21. # 在时间线内添加柱状图对象
    22. timeline.add(bar1, "点1")
    23. timeline.add(bar2, "点2")
    24. timeline.add(bar3, "点3")
    25. # 自动播放设置
    26. timeline.add_schema(
    27. play_interval=1000,
    28. is_timeline_show=True,
    29. is_auto_play=True,
    30. is_loop_play=True
    31. )
    32. # 绘图是用时间线对象绘图,而不是bar对象了
    33. timeline.render("基础时间线柱状图.html")

     基本效果:

    三、GDP动态柱状图 

    基本代码:

    1. """
    2. 演示第三个图表:GDP动态柱状图开发
    3. """
    4. from pyecharts.charts import Bar, Timeline
    5. from pyecharts.options import *
    6. from pyecharts.globals import ThemeType
    7. # 读取数据
    8. f = open("D:/1960-2019全球GDP数据.csv", "r", encoding="GB2312")
    9. data_lines = f.readlines()
    10. # 关闭文件
    11. f.close()
    12. # 删除第一条数据
    13. data_lines.pop(0)
    14. # 将数据转换为字典存储,格式为:
    15. # { 年份: [ [国家, gdp], [国家,gdp], ...... ], 年份: [ [国家, gdp], [国家,gdp], ...... ], ...... }
    16. # { 1960: [ [美国, 123], [中国,321], ...... ], 1961: [ [美国, 123], [中国,321], ...... ], ...... }
    17. # 先定义一个字典对象
    18. data_dict = {}
    19. for line in data_lines:
    20. year = int(line.split(",")[0]) # 年份
    21. country = line.split(",")[1] # 国家
    22. gdp = float(line.split(",")[2]) # gdp数据
    23. # 如何判断字典里面有没有指定的key呢?
    24. try:
    25. data_dict[year].append([country, gdp])
    26. except KeyError:
    27. data_dict[year] = []
    28. data_dict[year].append([country, gdp])
    29. # print(data_dict[1960])
    30. # 创建时间线对象
    31. timeline = Timeline({"theme": ThemeType.LIGHT})
    32. # 排序年份
    33. sorted_year_list = sorted(data_dict.keys())
    34. for year in sorted_year_list:
    35. data_dict[year].sort(key=lambda element: element[1], reverse=True)
    36. # 取出本年份前8名的国家
    37. year_data = data_dict[year][0:8]
    38. x_data = []
    39. y_data = []
    40. for country_gdp in year_data:
    41. x_data.append(country_gdp[0]) # x轴添加国家
    42. y_data.append(country_gdp[1] / 100000000) # y轴添加gdp数据
    43. # 构建柱状图
    44. bar = Bar()
    45. x_data.reverse()
    46. y_data.reverse()
    47. bar.add_xaxis(x_data)
    48. bar.add_yaxis("GDP(亿)", y_data, label_opts=LabelOpts(position="right"))
    49. # 反转x轴和y轴
    50. bar.reversal_axis()
    51. # 设置每一年的图表的标题
    52. bar.set_global_opts(
    53. title_opts=TitleOpts(title=f"{year}年全球前8GDP数据")
    54. )
    55. timeline.add(bar, str(year))
    56. # for循环每一年的数据,基于每一年的数据,创建每一年的bar对象
    57. # 在for中,将每一年的bar对象添加到时间线中
    58. # 设置时间线自动播放
    59. timeline.add_schema(
    60. play_interval=1000,
    61. is_timeline_show=True,
    62. is_auto_play=True,
    63. is_loop_play=False
    64. )
    65. # 绘图
    66. timeline.render("1960-2019全球GDP前8国家.html")

     基本效果:

    好了,今天先到这里了!

  • 相关阅读:
    Nginx + tomcat 的搭建
    经济型EtherCAT运动控制器(七):运动缓冲
    JUC编程
    node笔记及实践代码
    Java实现单点登录(SSO)详解
    4.java的IO流技术(2/2)
    【SpringCloud微服务项目实战-mall4cloud项目(5)】——mall4cloud-leaf
    财政政策与货币政策(下)
    MybatisX插件xml映射文件中命名空间爆红
    Android源码编译makefile文件的调试方法
  • 原文地址:https://blog.csdn.net/weixin_51293134/article/details/132689542