pyecharts丨关于热力图Heatmap 您所在的位置:网站首页 python引用pyecharts怎么改变题目的位置 pyecharts丨关于热力图Heatmap

pyecharts丨关于热力图Heatmap

2024-07-13 15:21| 来源: 网络整理| 查看: 265

首先说明本篇讲述的是这个Heatmap。最传统的一种热力图,x轴的24小时,y轴是一周七天,具体的值为该点的统计量的多少,色温高低代表该位置的值的大小。

情景描述: 想要将用户行为放到与周几和具体几点挂钩的层面上展示,探索用户一周和一天之内的行为模式。理想图格式如下: 在这里插入图片描述 使用pyecharts绘制,插在Django的view中,具体的讲解放注释里了。

code

def heatTime_mi(): from pyecharts.charts import HeatMap import numpy as np # 关于时间格式的数据预处理这些放到另一篇文章里详述了 data = pd.read_csv('data/mi10_user_weibo_time_list.txt', encoding='utf-8') pubtime = t.pubtime df_time = pd.DatetimeIndex(pubtime) week = [] for i in df_time: # 通过日期找到星期 week.append(datetime.strptime(str(i), '%Y-%m-%d %H:%M:%S').weekday()) value=np.zeros((7,24),dtype=int) # 创建个二维数组这么费劲儿。。 for h in df_time.hour: for w in week: value[w][h]+=1 data=[] # 构建热力图所需data值 for h in range(0,24): for w in range(0,7): data.append([h,w,value[w][h]]) # data=[[时,周,值], [ ], [ ], [ ], ...] # 这个值要自己去统计。。我真的无力吐槽了 # 另 如果数据量很大,不要用O(n^2)来作死,切身体会。。 # 不要放views里,加载会很慢,最好是在另一个文件里跑出结果直接丢进来,我就是这么做的,所以我下面data里直接装了值。 x_axis = [ "0a", "1a", "2a", "3a", "4a", "5a", "6a", "7a", "8a", "9a", "10a", "11a", "12p", "1p", "2p", "3p", "4p", "5p", "6p", "7p", "8p", "9p", "10p", "11p"] y_axis = [ "Saturday", "Friday", "Thursday", "Wednesday", "Tuesday", "Monday", "Sunday"] data=[[0, 0, 265], [0, 1, 326], [0, 2, 335], [0, 3, 298], [0, 4, 304], [0, 5, 307], [0, 6, 264], [1, 0, 116], [1, 1, 158], [1, 2, 193], [1, 3, 157], [1, 4, 116], [1, 5, 122], [1, 6, 169], [2, 0, 73], [2, 1, 109], [2, 2, 73], [2, 3, 50], [2, 4, 74], [2, 5, 65], [2, 6, 89], [3, 0, 30], [3, 1, 64], [3, 2, 44], [3, 3, 27], [3, 4, 28], [3, 5, 31], [3, 6, 40], [4, 0, 36], [4, 1, 39], [4, 2, 25], [4, 3, 30], [4, 4, 34], [4, 5, 18], [4, 6, 21], [5, 0, 35], [5, 1, 50], [5, 2, 28], [5, 3, 31], [5, 4, 30], [5, 5, 42], [5, 6, 47], [6, 0, 86], [6, 1, 116], [6, 2, 113], [6, 3, 107], [6, 4, 87], [6, 5, 88], [6, 6, 91], [7, 0, 291], [7, 1, 316], [7, 2, 349], [7, 3, 344], [7, 4, 348], [7, 5, 218], [7, 6, 271], [8, 0, 318], [8, 1, 382], [8, 2, 392], [8, 3, 406], [8, 4, 369], [8, 5, 295], [8, 6, 324], [9, 0, 497], [9, 1, 502], [9, 2, 484], [9, 3, 516], [9, 4, 484], [9, 5, 374], [9, 6, 368], [10, 0, 515], [10, 1, 584], [10, 2, 584], [10, 3, 590], [10, 4, 557], [10, 5, 433], [10, 6, 419], [11, 0, 540], [11, 1, 616], [11, 2, 556], [11, 3, 573], [11, 4, 473], [11, 5, 445], [11, 6, 452], [12, 0, 501], [12, 1, 594], [12, 2, 540], [12, 3, 561], [12, 4, 595], [12, 5, 449], [12, 6, 402], [13, 0, 452], [13, 1, 410], [13, 2, 476], [13, 3, 512], [13, 4, 479], [13, 5, 405], [13, 6, 455], [14, 0, 492], [14, 1, 483], [14, 2, 504], [14, 3, 455], [14, 4, 522], [14, 5, 365], [14, 6, 370], [15, 0, 471], [15, 1, 480], [15, 2, 552], [15, 3, 474], [15, 4, 496], [15, 5, 339], [15, 6, 351], [16, 0, 474], [16, 1, 522], [16, 2, 505], [16, 3, 451], [16, 4, 501], [16, 5, 416], [16, 6, 359], [17, 0, 474], [17, 1, 530], [17, 2, 463], [17, 3, 479], [17, 4, 431], [17, 5, 372], [17, 6, 410], [18, 0, 441], [18, 1, 562], [18, 2, 503], [18, 3, 438], [18, 4, 453], [18, 5, 404], [18, 6, 374], [19, 0, 448], [19, 1, 498], [19, 2, 423], [19, 3, 447], [19, 4, 430], [19, 5, 390], [19, 6, 428], [20, 0, 518], [20, 1, 536], [20, 2, 448], [20, 3, 443], [20, 4, 469], [20, 5, 416], [20, 6, 420], [21, 0, 578], [21, 1, 504], [21, 2, 537], [21, 3, 486], [21, 4, 565], [21, 5, 521], [21, 6, 456], [22, 0, 551], [22, 1, 601], [22, 2, 547], [22, 3, 500], [22, 4, 552], [22, 5, 490], [22, 6, 511], [23, 0, 441], [23, 1, 488], [23, 2, 489], [23, 3, 449], [23, 4, 585], [23, 5, 436], [23, 6, 482]] heatmap = (HeatMap() .add_xaxis(x_axis) .add_yaxis("发博数", y_axis, data) .set_global_opts( title_opts=opts.TitleOpts(title="用户发博时间热力图"), visualmap_opts=opts.VisualMapOpts(max_=600) ) ) return heatmap

最后渲染出来的效果: 在这里插入图片描述 至于其他参数的设置,感兴趣就看官方gallery吧。

然后就是根据图来做分析了,blahblah就不放在这里了。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有