先来看代码:
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")
)
再来看结果:
再来看解析:
这段代码使用了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
本站只提供常用图表与其解析