CanvasJS allows customizing type of marker that is used to display data point. Given example shows Scatter Chart with custom marker-types. It also includes PHP source code that you can try running locally.
<?php
$dataPoints1 = array(
array("x" => 23, "y" => 340),
array("x" => 28, "y" => 390),
array("x" => 39, "y" => 400),
array("x" => 34, "y" => 430),
array("x" => 24, "y" => 321),
array("x" => 29, "y" => 250),
array("x" => 29, "y" => 400),
array("x" => 23, "y" => 290),
array("x" => 27, "y" => 250),
array("x" => 34, "y" => 380),
array("x" => 36, "y" => 350),
array("x" => 33, "y" => 405),
array("x" => 32, "y" => 453),
array("x" => 21, "y" => 292)
);
$dataPoints2 = array(
array("x" => 19, "y" => 192),
array("x" => 27, "y" => 250),
array("x" => 35, "y" => 330),
array("x" => 32, "y" => 190),
array("x" => 29, "y" => 189),
array("x" => 22, "y" => 160),
array("x" => 27, "y" => 200),
array("x" => 26, "y" => 192),
array("x" => 24, "y" => 225),
array("x" => 33, "y" => 330),
array("x" => 34, "y" => 250),
array("x" => 30, "y" => 120),
array("x" => 37, "y" => 160),
array("x" => 24, "y" => 196)
);
?>
<!DOCTYPE HTML>
<html>
<head>
<script>
window.onload = function () {
var chart = new CanvasJS.Chart("chartContainer", {
animationEnabled: true,
title:{
text: "Server Performance"
},
axisX: {
title:"Server Load (in TPS)"
},
axisY:{
title: "Response Time (in ms)"
},
legend:{
cursor: "pointer",
itemclick: toggleDataSeries
},
data: [
{
type: "scatter",
toolTipContent: "<span style=\"color:#4F81BC \"><b>{name}</b></span><br/><b> Load:</b> {x} TPS<br/><b> Response Time:</b></span> {y} ms",
name: "Server Jupiter",
markerType: "square",
showInLegend: true,
dataPoints: <?php echo json_encode($dataPoints1); ?>
},
{
type: "scatter",
name: "Server Neptune",
markerType: "triangle",
showInLegend: true,
toolTipContent: "<span style=\"color:#C0504E \"><b>{name}</b></span><br/><b> Load:</b> {x} TPS<br/><b> Response Time:</b></span> {y} ms",
dataPoints: <?php echo json_encode($dataPoints2); ?>
}
]
});
chart.render();
function toggleDataSeries(e){
if (typeof(e.dataSeries.visible) === "undefined" || e.dataSeries.visible) {
e.dataSeries.visible = false;
}
else{
e.dataSeries.visible = true;
}
chart.render();
}
}
</script>
</head>
<body>
<div id="chartContainer" style="height: 370px; width: 100%;"></div>
<script src="https://cdn.canvasjs.com/canvasjs.min.js"></script>
</body>
</html>
You can choose different types of markers using markerType. Some other commonly used customization options are markerColor, markerBorderColor, markerBorderThickness etc.