NAME
Imager::Heatmap - Perl extension for drawing Heatmap using Imager
SYNOPSIS
use Imager::Heatmap;
my $hmap = Imager::Heatmap->new(
xsize => 640, # Image width
ysize => 480, # Image height
xsigma => 10, # Sigma value of X-direction
ysigma => 10, # Sigma value of Y-direction
);
# Add point datas to construct density matrix
$hmap->insert_datas(@piont_datas); # @point_datas should be: ( [ x1, y1, weight1 ], [ x2, y2, weight2 ] ... )
$hmap->insert_datas(...); # You can call multiple times to add large data that cannot process at a time.
# After adding datas, you could get heatmap as Imager instance.
my $img = $hmap->draw;
# Returned image is 4-channels image. So you can overlay it on other images.
$base_img->rubthrough( src => $hmap->img ); # Overlay on other images(see Imager::Transformations)
# And you can access probability density matrix using matrix method if you like.
# In case, maybe you would like to create some graduations which be assigned to color of heatmap and its value.
$hmap->matrix;
DESCRIPTION
Imager::Heatmap is a module to draw heatmap using Imager.
This module calculates probability density matrix from input data and map a color for each pixels to represent density of input data.
METHODS
new()
Create a blessed object of Imager::Heatmap. You can specify some options as follows. See the accessors description for more details about each parameters.
$hmap = Imager::Heatmap->new(xsize => 300, ysize => 300);
Options
- o xsize (required)
-
X-direction size of heatmap image.
- o ysize (required)
-
Y-direction size of heatmap image.
- o xsigma (optional, default: 1.0)
-
Sigma value of X-direction.
- o ysigma (optional, default: 1.0)
-
Sigma value of Y-direction.
- o correlation (optional, default: 0.0)
-
Correlation between X and Y.
xsize()
Set/Get the X-direction size of heatmap image. Constructed matrix will invalidated after call this method as "Setter".
$hmap->xsize(100);
$xsize = $hmap->xsize;
ysize()
Set/Get the Y-direction size of heatmap image. Constructed matrix will invalidated after call this method as "Setter".
$hmap->ysize(100);
$ysize = $hmap->ysize;
xsigma()
Set/Get the Sigma value of X-direction. This value represents the standard deviation of X-direction. This value should be positive number. You will see the heatmap that amplicifed for X-direction if you increment this number.
$hmap->xsigma(10.0);
$xsigma = $hmap->xsigma;
ysigma()
Set/Get the Sigma value of Y-direction. This value represents the standard deviation of Y-direction. This value should be positive number. You will see the heatmap that amplicifed for Y-direction if you increment this number.
$hmap->ysigma(10.0);
$ysigma = $hmap->ysigma;
correlation()
Set/Get the correlation coefficient of XY; This value represents correlation between X and Y. This value should be the number between -1 and 1. (includeing -1 and 1)
$hmap->correlation(0.5);
$correlation = $hmap->correlation;
insert_datas()
Construct the matrix that represents probability density of each pixels of image. This method may be take a while if the datas are large.
$hmap->insert_datas([ $x1, $y1, $weight1 ], [ $x2, $y2 ], ...);
Each element of array should contain x([0]), y([1]), and optionally weight([2]) as follows:
@insert_datas = ( [ x1, y1, weight1 ], [ x2, y2, weight2 ] ... );
The default value of weight is 1.
x and y will implicitly cast to integer in XS, so it doesn't make any sense specifying real numbers to these parameters.
weight can be a real number.
draw()
Draw a heatmap from a constructed probability density matrix and return it.
my $img = $hmap->draw;
Rerturn value is blessed object of Imager. It is created as following options($self is blessed object of Imager::Heatmap)
my $img = Imager->new(
xsize => $self->xsize,
ysize => $self->ysize,
channels => 4,
);
matrix()
Get the processed probability density matrix.
$matrix = $hmap->matrix;
Return value is flat array. You can access the value of pixel(x,y) as follows:
$pixel_value = $matrix->[$y * $hmap->xsize + $x];
2-dimensional Probability Desnsity Matrix
Imager::Heatmap calculates probability density matrix of input datas.
You can find the equation used to calculate 2-dimensional probability density matrix at following location:
http://en.wikipedia.org/wiki/Multivariate_normal_distribution#Bivariate_case
SEE ALSO
Imager(3), Imager::Transformations(3)
The equation used to calculate 2-dimensional probability density matrix: Multivariate normal distribution - Wikipedia, the free encyclopedia http://en.wikipedia.org/wiki/Multivariate_normal_distribution#Bivariate_case
AUTHOR
Yuto KAWAMURA(kawamuray), <kawamuray.dadada@gmail.com>
COPYRIGHT AND LICENSE
Copyright (C) 2012 by Yuto KAWAMURA(kawamuray)
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.12.3 or, at your option, any later version of Perl 5 you may have available.