利用python绘制带有时间线的柱状图

 更新时间:2023年07月31日 11:47:02   作者:不能再留遗憾了  
这篇文章主要为大家详细介绍了如何使用python绘制出带有时间线的柱状图,文中的示例代码讲解的非常详细,具有一定的学习与借鉴价值,需要的可以参考一下

如何绘制柱状图

绘制柱状图跟绘制折线图的步骤是大致相同的。

python 中绘制柱状图依赖于 pyecharts.charts 模块下的 Bar 方法。

from pyecharts.charts import Bar
bar = Bar()
x_data = ["英国","美国","中国"]
y_data = [10,20,30]
bar.add_xaxis(x_data)
bar.add_yaxis("GDP",y_data)
bar.render("柱状图.html")

我们还可以将横坐标与纵坐标颠倒一下,来使数据的展示更加的形象。

使用 bar.reversal_axis() 反转x轴和y轴。

这里数据显示在柱状图中,我们看的不是很方便,我也也可以通过设置系列配置选项来使数据显示在柱状图的右侧。

bar.add_yaxis("GDP",y_data,label_opts=LabelOpts(position="right"))

所以我们经过完善后的整体代码是:

from pyecharts.charts import Bar
from pyecharts.options import LabelOpts
bar = Bar()
x_data = ["英国","美国","中国"]
y_data = [10,20,30]
bar.add_xaxis(x_data)
bar.add_yaxis("GDP",y_data,label_opts=LabelOpts(position="right"))
bar.reversal_axis()  # 反转x轴和y轴
bar.render("柱状图.html")

添加时间线

通过添加时间线我们可以看到多种不同的数据,每一个时间其实就是一个柱状图,时间线是由一个一个的柱状图组成的。

from pyecharts.charts import Bar,Timeline
from pyecharts.options import LabelOpts,TitleOpts
bar1 = Bar()
bar2 = Bar()
bar3 = Bar()
x_data = ["英国","美国","中国"]
y_data1 = [10,20,30]
y_data2 = [20,30,40]
y_data3 = [40,50,70]
bar1.add_xaxis(x_data)
bar1.add_yaxis("GDP",y_data1,label_opts=LabelOpts(position="right"))
bar1.reversal_axis()  # 反转x轴和y轴
bar1.set_global_opts(title_opts=TitleOpts(title="2021年GDP"))
bar2.add_xaxis(x_data)
bar2.add_yaxis("GDP",y_data2,label_opts=LabelOpts(position="right"))
bar2.reversal_axis()  # 反转x轴和y轴
bar2.set_global_opts(title_opts=TitleOpts(title="2022年GDP"))
bar3.add_xaxis(x_data)
bar3.add_yaxis("GDP",y_data3,label_opts=LabelOpts(position="right"))
bar3.reversal_axis()  # 反转x轴和y轴
bar3.set_global_opts(title_opts=TitleOpts(title="2023年GDP"))
timeline = Timeline()
timeline.add(bar1,"2021")
timeline.add(bar2,"2022")
timeline.add(bar3,"2023")
timeline.render("2021-2023中美英三国GDP.html")

如果我们要让动态柱状图动起来的话,我们需要设置配置选项。

timeline.add_schema(
    play_interval=1000,  # 每个柱状图播放间隔时间,单位(毫秒)
    is_timeline_show=True,  # 是否显示时间线,默认显示
    is_auto_play=True,  # 是否自动播放
    is_loop_play=True  # 是否循环播放
)

根据提供的数据绘制动态柱状图

我们显示出1960年-2014年全国GDP数据前八的国家和数据。

这里提供的数据比较简单,我们只需要将第一行无用的数据删除,然后再将这些数据转换为我们绘制柱状图需要的数据就好了。

读取并删除无用数据

f = open("D:/桌面/1960-2019全球GDP数据.csv","r",encoding="GB2312")
data_lines = f.readlines()
f.close()
data_lines.pop(0)

GB2312 编码是中文编码格式

将数据转换为字典

data_dict = {}
for line in data_lines:
    data_list = line.split(",")  # 每一行以逗号分割,返回一个列表
    year = data_list[0]
    country = data_list[1]
    GDP = float(data_list[2][:-1])  # 每一行最后有一个换行符
    # 这里需要做出异常判断,因为当我们第一次插入数据的时候并没有容器来装这些数据
    try:
        data_dict[year].append((country, GDP))
    except:
        data_dict[year] = []
        data_dict[year].append([country, GDP])

创建柱状图并添加到时间线中

sorted_year_line = sorted(data_dict.keys())  # 按时间顺序排序
timeline = Timeline({"scheme":ThemeType.LIGHT})  # 在创建时间线的时候传入scheme参数可以设置时间线的主题,也就是柱状图的颜色
for year in sorted_year_line:
    x_data = []
    y_data = []
    data_dict[year].sort(key=lambda element : element[1],reverse=True)
    year_data = data_dict[year][0:8]  # 取GDP前八的数据
    for data in year_data:
        x_data.append(data[0])
        y_data.append(data[1] / 100000000)
    bar = Bar()
    x_data.reverse()
    y_data.reverse()  # 让GDP排名第一的数据在最上面,所以我们将x_data 和 y_data中的数据反转一下
    bar.add_xaxis(x_data)
    bar.add_yaxis("GDP(亿)",y_data,label_opts=LabelOpts(position="right"))
    bar.reversal_axis()  # 将x轴和y轴翻转
    bar.set_global_opts(
        title_opts=TitleOpts(title=f"{year}年全国GDP数据前八")
    )
    timeline.add(bar,year)

配置选项并生成带有数据的折线图

timeline.add_schema(
    play_interval=1000,
    is_timeline_show=True,
    is_auto_play=True,
    is_loop_play=False
)
timeline.render("1960-2014年全国GDP数据前八.html")

到此这篇关于利用python绘制带有时间线的柱状图的文章就介绍到这了,更多相关python时间线柱状图内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python实现Dijkstra算法

    Python实现Dijkstra算法

    今天小编就为大家分享一篇关于Python实现Dijkstra算法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-10-10
  • 三行Python代码提高数据处理脚本速度

    三行Python代码提高数据处理脚本速度

    Python是一门非常适合处理数据和自动化完成重复性工作的编程语言,我们在用数据训练机器学习模型之前,通常都需要对数据进行预处理,而Python就非常适合完成这项工作。本文将为大家介绍如何利用Python代码让你的数据处理脚本快别人4倍,需要的可以参考一下
    2022-03-03
  • 关于Python使用logging库进行有效日志管理的方法详解

    关于Python使用logging库进行有效日志管理的方法详解

    在开发大型软件或处理复杂问题时,我们经常需要一种方法来记录和跟踪程序的运行状态,Python 提供了一个名为 logging 的标准库,可以帮助我们更好地完成这项任务,在这篇文章中,我们将介绍如何使用 Python 的 logging 库进行日志记录
    2023-06-06
  • python调用另外一个py文件中函数的具体步骤

    python调用另外一个py文件中函数的具体步骤

    这篇文章主要给大家介绍了关于python调用另外一个py文件中函数的具体步骤,要在一个Python文件中调用其他Python文件中的方法,可以使用Python的模块导入功能,需要的朋友可以参考下
    2023-11-11
  • 使用pytorch完成kaggle猫狗图像识别方式

    使用pytorch完成kaggle猫狗图像识别方式

    今天小编就为大家分享一篇使用pytorch完成kaggle猫狗图像识别方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-01-01
  • Python查找不限层级Json数据中某个key或者value的路径方式

    Python查找不限层级Json数据中某个key或者value的路径方式

    今天小编就为大家分享一篇Python查找不限层级Json数据中某个key或者value的路径方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-02-02
  • python 集合 并集、交集 Series list set 转换的实例

    python 集合 并集、交集 Series list set 转换的实例

    今天小编就为大家分享一篇python 集合 并集、交集 Series list set 转换的实例。具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-05-05
  • Playwright中如何保持登录状态

    Playwright中如何保持登录状态

    本文主要介绍了Playwright中如何保持登录状态,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-12-12
  • Python实现socket库网络通信套接字

    Python实现socket库网络通信套接字

    socket又叫套接字,实现网络通信的两端就是套接字。分为服务器对应的套接字和客户端对应的套接字,本文给大家介绍Python实现socket库网络通信套接字的相关知识,包括套接字的基本概念,感兴趣的朋友跟随小编一起看看吧
    2021-06-06
  • python math模块的基本使用教程

    python math模块的基本使用教程

    这篇文章主要介绍了python math模块的基本使用教程,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下
    2021-01-01

最新评论