pyecharts:日历图实战

背景【相关资料来源于《 数据之美:一本书学会可视化设计》】:

  1. 时序数据可视化的目的
    可视化时序数据时,目标是看到什么已经成为过去,什么保持不变,以及什么发生了变化,相差程度是多少,造成变化的原因可能是什么?有没有重复出现的模式(周期/循环)?是好还是坏?预期内还是意料之外?
  2. 时序数据可视化的种类
    时序数据和分类数据一样,条形图是观察最直观的方式,只是坐标轴上不再用分类,而是用时间。以下是用时间作为坐标尺,使用不同模式的图形:
    在这里插入图片描述

Pyecharts:日历图实战

  1. 官方示例及详细解释,官方网址:http://gallery.pyecharts.org/#/Calendar/calendar_label_setting
#日历图
#先初始化类实例,然后调用add方法,再设置全局项,最后render
import datetime
import random
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)
]#365天对应的数据

#引入pyecharts
from pyecharts import options as opts
from pyecharts.charts import Calendar
c = (
    Calendar()#创建calendar实例
    .add(
        "日期",#添加在数据显示的前面,用于 tooltip 的显示,legend 的图例
        data,#接收数据,格式为 [(日期1, 值1), (日期2, 值2), ...]
        #日历图的配置选项
        calendar_opts=opts.CalendarOpts(
             # 某一年 range: 2017
            # 某个月 range: '2017-02'
            # 某个区间 range: ['2017-01-02', '2017-02-23']
            # 注意 此写法会识别为['2017-01-01', '2017-02-01']
            # range: ['2017-01', '2017-02']
            range_="2017",#时间范围,可选
            daylabel_opts=opts.CalendarDayLabelOpts(name_map="cn"),#星期名称选择,此处选中文
            monthlabel_opts=opts.CalendarMonthLabelOpts(name_map="cn"),#月份名称选择
        ),
    )
    .set_global_opts(
        title_opts=opts.TitleOpts(title="Calendar-2017年微信步数情况(中文 Label)"),#标题配置
        visualmap_opts=opts.VisualMapOpts(
            max_=20000,
            min_=500,
            orient="horizontal",
            is_piecewise=True,
            pos_top="230px",
            pos_left="100px",
        ),#展示配置
    )
    .render("calendar_label_setting.html")#渲染名称
)

生成图形如下:
在这里插入图片描述

  1. 上述代码生成了日历图,但是我希望图例按类别而非数字展示时,比如在上述例子中,设今日的步数为i,则500<=i<=8300 对应标记是’普通运动量’,如果8300<i<=16000对应标记是’健身小达人’ ,如果i>16000则 ‘健身大神’,代码只需在上面的基础上增加如下的pieces设置即可:
 .set_global_opts(
        title_opts=opts.TitleOpts(title="Calendar-2017年微信运动情况(中文 Label)"),#标题配置
        visualmap_opts=opts.VisualMapOpts(
            max_=20000,
            min_=500,
            orient="horizontal",
            is_piecewise=True,
            pos_top="230px",
            pos_left="100px",
            #增加映射段
            pieces=[{"min": 500, "max": 8300, "label": '普通运动量'},
                    {"min": 8301, "max": 16000, "label": '健身小达人'},
                    {"min": 16001,  "label": '健身大神'}],
        ),#展示配置
    )
    .render("calendar_1.html")#渲染名称

生成图片如下:
在这里插入图片描述
##原创不易,转载请注明##

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值