js使用heatmap熱力圖的一些操作


因為項目的需要,用到熱力圖heatmap。現在很多像購物網站,都用到heatmap分析顧客在網站上哪些地方點擊量比較大。heatmap的詳細介紹在http://www.patrick-wied.at/static/heatmapjs/index.html#,有例子介紹。


項目中需要知道整個網頁哪些鏈接a,被點擊的次數用顏色的深淺表示。

首先下載heatmap.js插件

熱力圖的范圍用到id="heatmapArea"。因為是整個網頁,所以<body id="heatmapArea">

為了有個背景灰色的效果,需要加個蒙版。以下是具體代碼:


  /*********蒙版的添加***********/
      $("body").append("<div></div>");
      var dm_wh = $(document).width();
      var dm_hg = $(document).height();
      var div_last = $("body").children().last();
      div_last.css({"position":"absolute","top":"0","left":"0","backgroundcolor":"#000","width":dm_wh,"height":dm_hg,"opacity":"0.65"});
    /*********************************************************************************************************************************/


var xx = h337.create({"element":document.getElementById("heatmapArea"), "radius":23,"opacity": 40, "visible":true});
    var m = $("a");
       
    var m_radius = 23;  //半徑的大小
    var m_x = 0;        //x坐標軸
    var m_y = 0;        //y坐標軸
    var m_count = 0;


    for(var i=0;i<m.length;i++)
    {
       var m_html = m.eq(i).html();
        //按鈕形式鏈接 按鈕和圖片
        if(m_html.indexOf("button")>0 || m.eq(i).role == "button" || m_html.indexOf("img")>0)
        {
          var m_img;


          if(m_html.indexOf("img")>0)
            m_img = m.eq(i).find("img");
          else
            m_img = m.eq(i).children();


          m_x = m_img.offset().left;
          m_y = m_img.offset().top;


          var m_count_y = m_img.height()/m_radius;
          var m_count_x = m_img.width()/m_radius;


          //需要幾排的高度
          if(m_count_y >= 1)
          {
            for(var j=0;j<m_count_y;j++)
            {
              for(var h=0;h<m_count_x;h++)
              {
                xx.store.addDataPoint(m_x, m_y,10);
                m_x += m_radius;
              }
              m_y += m_radius;
              m_x = m_img.offset().left;
            }


          }
          else
          {
          for(var h=0;h<m_count_x;h++)
            {
                xx.store.addDataPoint(m_x, m_y,10);
                m_x += m_radius;
            }
          }
        }


        //普通文字形式連接
        else
        {
         m_count = m.eq(i).width() / m_radius;


          var zf_p_l = m.eq(i).css("padding-left");
        var zf_p_t = m.eq(i).css("padding-top") ;


        m_x = m.eq(i).offset().left +m_radius/2;
        m_y = m.eq(i).offset().top +m_radius/3;


        if(zf_p_l)
        {
        zf_p_l = zf_p_l.substring(0,zf_p_l.length-2);
        zf_p_l = zf_p_l*1;
        m_x += zf_p_l;
        }


        if(zf_p_t)
        {
zf_p_t = zf_p_t.substring(0,zf_p_t.length-2);
        zf_p_t = zf_p_t*1;
        m_y += zf_p_t;
        }
       
for(var j =0;j<m_count;j++)
       
            xx.store.addDataPoint(m_x, m_y,50);
            m_x += m_radius;
        }
    }


    }



以下是一個例子的部分截圖:




注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com