ウェブサイトは熱力図の技術をクリックして実現します
22996 ワード
一、ユーザーのクリック行為を捕捉する
この部分はJavascriptで実現する必要があります.ブラウザ互換性の泥沼に陥らないように、JQueryを選択します.
画面解像度を記録するのは、クリック座標を修正する必要がある場合があるからです.たとえば、中央に表示される一定幅のページは、同じ位置の異なる解像度での座標が異なり、画像をレンダリングする場合、座標は1つの解像度を基準に修正する必要があります.また、ユーザーがスクロールバーをドラッグしている場合は、記録すべきではありません.
二、分析クライアントクリックログ
クライアントはAjaxを使用してGETメソッドを使用して空のHTMLページをトリガーし、サービス側にログを残します.
ログ形式によって結果が異なりますが、ここではこれを例に問題を説明します.本稿ではAWKを使用してログを解析します.もちろん、Perlや他のよく知っている言語を使用することもできます.
データの永続化については、MongoDBまたは他のものを使用します.
三、ログ分析結果を用いて画像をレンダリングする
Imagickを例にとると、コードは以下の通りです.
コードは多いが、複雑ではない.plot.pngとclut.pngの2つのピクチャが使用されている.実際に適用する場合、クリック数が非常に大きい場合があります.この場合、すべてのクリックをレンダリングする必要はありません.ランダムサンプリングの戦略をとるべきです.MongoDB持続化を採用すれば、The Random Attributeを参照してください.
注記:コードはimage-tempestを参照してください.
四、熱力図の最終展示
イメージとしては、CSS+Javascriptで生成された画像をWebページに覆い、画像の透明度を調整して統合する効果があります.
ホットスポットは時間とともに変化する可能性があり、ある時間のページと照合できるように、
CutyCaptスクリーンショット.
Heatmapの詳細については、
How to make heat maps
The definitive heatmap
Heatmapは複雑な技術ではありませんが、関連する面が煩雑で、本稿が役に立つことを願っています.
オープンソース熱力図プログラム推奨:clickheat
clickheatに基づいて開発されたHeatmap plugin for Piwik:http://dev.piwik.org/trac/ticket/73
別のマウスクリック追跡オープンソースプログラム:http://code.google.com/p/smt2/
译文:ウェブサイトは热力図の技术をクリックして実现します.http://www.chinakdd.com/article-125829.html.2013-05-17
この部分はJavascriptで実現する必要があります.ブラウザ互換性の泥沼に陥らないように、JQueryを選択します.
<script>
jQuery(document).ready(function() {
$(document).mousedown(function(e) {
if (e.clientX >= $(window).width() || e.clientY >= $(window).height()) {
return;
}
$.get("/path/to/a/empty/html/file", {
page_x : e.pageX,
page_y : e.pageY,
screen_width : screen.width,
screen_height: screen.height
});
});
});
</script>
画面解像度を記録するのは、クリック座標を修正する必要がある場合があるからです.たとえば、中央に表示される一定幅のページは、同じ位置の異なる解像度での座標が異なり、画像をレンダリングする場合、座標は1つの解像度を基準に修正する必要があります.また、ユーザーがスクロールバーをドラッグしている場合は、記録すべきではありません.
二、分析クライアントクリックログ
クライアントはAjaxを使用してGETメソッドを使用して空のHTMLページをトリガーし、サービス側にログを残します.
page_x=...&page_y=...&screen_width=...&screen_height=...
ログ形式によって結果が異なりますが、ここではこれを例に問題を説明します.本稿ではAWKを使用してログを解析します.もちろん、Perlや他のよく知っている言語を使用することもできます.
#!/usr/bin/awk -f
BEGIN {
FS="&";
}
NF == 4 {
param["page_x"] = "0";
param["page_y"] = "0";
param["screen_width"] = "0";
param["screen_height"] = "0";
split($0, query, "&");
for (key in query) {
split(query[key], item, "=");
if (item[1] in param) {
param[item[1]] = item[2];
}
}
print "page_x:" , param["page_x"];
print "page_y:" , param["page_y"];
print "screen_width:" , param["screen_width"];
print "screen_height:", param["screen_height"];
print "
";
}
データの永続化については、MongoDBまたは他のものを使用します.
三、ログ分析結果を用いて画像をレンダリングする
Imagickを例にとると、コードは以下の通りです.
<?php
$coordinates = array();
for ($i = 0; $i < 1000; $i++) {
$coordinates[] = array(rand($i, 1000), rand($i, 1000));
}
$max_repeat = max(
array_count_values(
array_map(function($v) { return "{$v[0]}x{$v[1]}"; }, $coordinates)
)
);
$opacity = 1 - 1 / $max_repeat;
$heatmap_image = new Imagick();
$heatmap_image->newImage(1000, 1000, new ImagickPixel('white'));
$heatmap_image->setImageFormat('png');
$plot_image = new Imagick('plot.png');
$iterator = $plot_image->getPixelIterator();
foreach($iterator as $row) {
foreach ($row as $pixel) {
$colors = $pixel->getColor();
foreach (array('r', 'g', 'b') as $channel) {
$color = $colors[$channel];
if ($color !== 255) {
$colors[$channel] = $color + ((255 - $color) * $opacity);
}
}
$pixel->setColor("rgb({$colors['r']},{$colors['g']},{$colors['b']})");
}
$iterator->syncIterator();
}
$plot_size = $plot_image->getImageGeometry();
foreach ($coordinates as $pair) {
$heatmap_image->compositeImage(
$plot_image,
Imagick::COMPOSITE_MULTIPLY,
$pair[0] - $plot_size['width'] / 2,
$pair[1] - $plot_size['height'] / 2
);
}
$color_image = new Imagick('clut.png');
$heatmap_image->clutImage($color_image);
$heatmap_image->writeImage('heatmap.png');
?>
コードは多いが、複雑ではない.plot.pngとclut.pngの2つのピクチャが使用されている.実際に適用する場合、クリック数が非常に大きい場合があります.この場合、すべてのクリックをレンダリングする必要はありません.ランダムサンプリングの戦略をとるべきです.MongoDB持続化を採用すれば、The Random Attributeを参照してください.
注記:コードはimage-tempestを参照してください.
四、熱力図の最終展示
イメージとしては、CSS+Javascriptで生成された画像をWebページに覆い、画像の透明度を調整して統合する効果があります.
ホットスポットは時間とともに変化する可能性があり、ある時間のページと照合できるように、
CutyCaptスクリーンショット.
Heatmapの詳細については、
How to make heat maps
The definitive heatmap
Heatmapは複雑な技術ではありませんが、関連する面が煩雑で、本稿が役に立つことを願っています.
オープンソース熱力図プログラム推奨:clickheat
clickheatに基づいて開発されたHeatmap plugin for Piwik:http://dev.piwik.org/trac/ticket/73
別のマウスクリック追跡オープンソースプログラム:http://code.google.com/p/smt2/
译文:ウェブサイトは热力図の技术をクリックして実现します.http://www.chinakdd.com/article-125829.html.2013-05-17