[图表]pyecharts模块-日历图

[图表]pyecharts模块-日历图

先来看代码:

import random
import datetime

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


begin = datetime.date(2017, 1, 1)
end = datetime.date(2017, 12, 31)
data = [
    [str(begin + datetime.timedelta(days=i)), random.randint(1000, 25000)]
    for i in range((end - begin).days + 1)
]

(
    Calendar()
    .add(
        series_name="",
        yaxis_data=data,
        calendar_opts=opts.CalendarOpts(
            pos_top="120",
            pos_left="30",
            pos_right="30",
            range_="2017",
            yearlabel_opts=opts.CalendarYearLabelOpts(is_show=False),
        ),
    )
    .set_global_opts(
        title_opts=opts.TitleOpts(pos_top="30", pos_left="center", title="2017年步数情况"),
        visualmap_opts=opts.VisualMapOpts(
            max_=20000, min_=500, orient="horizontal", is_piecewise=False
        ),
    )
    .render("calendar_heatmap.html")
)

再来看结果:

[图表]pyecharts模块-日历图_第1张图片
[图表]pyecharts模块-日历图_第2张图片

再来看解析:

这段代码使用了Python中的pyecharts模块创建了一个日历图,并使用了随机数和日期相关的模块。

首先,导入了需要的模块:

  • random:用于生成随机数的模块
  • datetime:用于处理日期和时间的模块
  • opts:包含一些图表配置选项的模块
  • Calendar:用于创建日历图的类

接下来,定义了开始日期begin和结束日期end,并通过datetime.date创建了日期对象:

begin = datetime.date(2017, 1, 1)
end = datetime.date(2017, 12, 31)

然后,通过循环生成了一个包含日期和随机数的二维列表data,每个日期对应一个随机数:

data = [
    [str(begin + datetime.timedelta(days=i)), random.randint(1000, 25000)]
    for i in range((end - begin).days + 1)
]

在每次循环中,通过datetime.timedelta增加了一天的时间,将日期转换为字符串,并生成了一个随机数。

接着,创建了一个Calendar对象,并使用add方法添加数据。通过指定yaxis_data参数传入data列表,设置了日历图的配置选项:

(
    Calendar()
    .add(
        series_name="",
        yaxis_data=data,
        calendar_opts=opts.CalendarOpts(
            pos_top="120",
            pos_left="30",
            pos_right="30",
            range_="2017",
            yearlabel_opts=opts.CalendarYearLabelOpts(is_show=False),
        ),
    )
    ...
)

calendar_opts中,设置了日历图的位置、范围、年份标签等选项。

然后,使用set_global_opts方法设置全局选项,这里设置了图表的标题和可视化映射的选项:

    .set_global_opts(
        title_opts=opts.TitleOpts(pos_top="30", pos_left="center", title="2017年步数情况"),
        visualmap_opts=opts.VisualMapOpts(
            max_=20000, min_=500, orient="horizontal", is_piecewise=False
        ),
    )

标题的位置设置在顶部居中,标题内容为"2017年步数情况"。可视化映射的选项设置了最大值、最小值、方向等。

最后,使用render方法将图表渲染为一个HTML文件,并保存为"calendar_heatmap.html":

    .render("calendar_heatmap.html")

整个过程中,每个方法调用都返回了当前对象,所以可以使用链式调用的方式来依次添加数据和配置。最终,调用render方法将图表渲染为HTML文件。通过设置日期和随机数数据以及相应的配置选项,实现了日历图的生成,展示了每天的步数情况。

注:图表资源来源于:
pyecharts-gallery
本站只提供常用图表与其解析

你可能感兴趣的:(python,python,开发语言,数据分析,信息可视化)