-
Amira Abdel-Rahman authoredAmira Abdel-Rahman authored
overview.html 4.76 KiB
<!DOCTYPE html>
<html>
<head>
<title>js-colormaps: Overview</title>
<link rel="stylesheet" type="text/css" href="styles.css">
<script type="text/javascript" src="js-colormaps.js"></script>
<script>
function appendHTMLbyID(id, text) {
old_html = document.getElementById(id).innerHTML;
document.getElementById(id).innerHTML = old_html+text;
}
function enforceBounds(x) {
if (x < 0) {
return 0;
} else if (x > 1){
return 1;
} else {
return x;
}
}
function interpolateLinearly(x, values) {
// Split values into four lists
var x_values = [];
var r_values = [];
var g_values = [];
var b_values = [];
for (i in values) {
x_values.push(values[i][0]);
r_values.push(values[i][1][0]);
g_values.push(values[i][1][1]);
b_values.push(values[i][1][2]);
}
var i = 1;
while (x_values[i] < x) {
i = i+1;
}
i = i-1;
var width = Math.abs(x_values[i] - x_values[i+1]);
var scaling_factor = (x - x_values[i]) / width;
// Get the new color values though interpolation
var r = r_values[i] + scaling_factor * (r_values[i+1] - r_values[i])
var g = g_values[i] + scaling_factor * (g_values[i+1] - g_values[i])
var b = b_values[i] + scaling_factor * (b_values[i+1] - b_values[i])
return [enforceBounds(r), enforceBounds(g), enforceBounds(b)];
}
function drawColormap(CanvasID, colormap) {
var c = document.getElementById(CanvasID);
var ctx = c.getContext("2d");
for (i = 0; i <= 1024; i++) {
var color = interpolateLinearly(i/1024, colormap);
r = Math.round(255*color[0]);
g = Math.round(255*color[1]);
b = Math.round(255*color[2]);
ctx.fillStyle = 'rgb('+r+', '+g+', '+b+')';
ctx.fillRect(i, 0, 1, 50);
}
}
function drawColormapTable(TableID) {
var Sequential = ['Blues', 'BuGn', 'BuPu',
'GnBu', 'Greens', 'Greys', 'Oranges', 'OrRd',
'PuBu', 'PuBuGn', 'PuRd', 'Purples', 'RdPu',
'Reds', 'YlGn', 'YlGnBu', 'YlOrBr', 'YlOrRd'];
var Sequential2 = ['afmhot', 'autumn', 'bone', 'cool', 'copper',
'gist_heat', 'gray', 'hot', 'pink',
'spring', 'summer', 'winter'];
var Diverging = ['BrBG', 'bwr', 'coolwarm', 'PiYG', 'PRGn', 'PuOr',
'RdBu', 'RdGy', 'RdYlBu', 'RdYlGn', 'Spectral',
'seismic'];
var Qualitative = ['Accent', 'Dark2', 'Paired', 'Pastel1',
'Pastel2', 'Set1', 'Set2', 'Set3'];
var Miscellaneous = ['gist_earth', 'terrain', 'ocean', 'gist_stern',
'brg', 'CMRmap', 'cubehelix', 'gnuplot',
'gnuplot2', 'gist_ncar', 'nipy_spectral',
'jet', 'rainbow', 'gist_rainbow', 'hsv',
'flag', 'prism']
if (TableID == 'Sequential') {
var cm_type = Sequential;
} else if (TableID == 'Sequential2') {
var cm_type = Sequential2;
} else if (TableID == 'Diverging') {
var cm_type = Diverging;
} else if (TableID == 'Qualitative') {
var cm_type = Qualitative;
} else {
var cm_type = Miscellaneous;
}
for (i in cm_type) {
var cmap = cm_type[i];
appendHTMLbyID(TableID, '<tr><td>'+cmap+'</td><td><canvas id="'+cmap+'" width="1024" height="50"></canvas></td></tr>');
}
for (i in cm_type) {
var cmap = cm_type[i];
drawColormap(cmap, window[cmap]);
}
}
</script>
</head>
<body>
<h2>Sequential</h2>
<table id='Sequential'>
</table>
<h2>Sequential (2)</h2>
<table id='Sequential2'>
</table>
<h2>Diverging</h2>
<table id='Diverging'>
</table>
<h2>Qualitative</h2>
<table id='Qualitative'>
</table>
<h2>Miscellaneous</h2>
<table id='Miscellaneous'>
</table>
<script>
drawColormapTable('Sequential');
drawColormapTable('Sequential2');
drawColormapTable('Diverging');
drawColormapTable('Qualitative');
drawColormapTable('Miscellaneous');
</script>
</body>
</html>