Для выполнения примера необходимо создать html-страницу и выполнить следующие действия:
1. Добавить ссылку на css-файл PP.css. Также нужно добавить ссылки на следующие js-файлы:
PP.js;
PP.GraphicsBase.js;
PP.Charts_Canvas.js;
resources.ru.js.
2. Далее в теге <head> необходимо добавить стиль для блока с идентификатором «chart»:
<style type="text/css">
div#chart {
border: #CCCCCC 1px solid;
padding: 1px;
margin: 1px;
width: 450px;
height: 400px;
}
</style>
3. Затем в теге <head> необходимо добавить сценарий, создающий точечную диаграмму:
<script>
var chart;
// Создает диаграмму
function createChart() {
// Создаем диаграмму
chart = new PP.Ui.Chart({
Width: 450, // Ширина диаграммы
Height: 400, // Высота диаграммы
ParentNode: "chart",
Series: [{
Name: "Австралия", // Наименование ряда
Data: getSerieData1(), // Массив значений
Color: getColors()[0], // Цвет
LineColor: getColors()[4], // Цвет линий
LineWidth: 2, // Толщина линий
Marker: getMarker(getColors()[0])
}, {
Name: "Азия",
Data: getSerieData2(),
Color: getColors()[1],
LineColor: getColors()[5],
LineWidth: 2,
Marker: getMarker(getColors()[1])
}],
Type: "Scatter", // Тип диаграммы
// Ось X
XAxis: {
Categories: ["2001", "2002", "2003", "2004", "2005", "2006"],
IsX: true,
Labels: {
Enabled: true
}
},
// Дополнительная ось Y
YSAxis: {
Enabled: false
}
});
}
// Возвращает маркер для ряда данных диаграммы
function getMarker(borderColor) {
var marker = {
BorderColor: borderColor,
BorderWidth: 2,
Color: "rgb(255, 255, 255)",
Enabled: true,
Radius: 8,
Symbol: "Circle",
};
return marker;
}
// Создаёт ось Y для диаграммы
function createAxis() {
var axis = new PP.Ui.ChartCanvasAxis({
AllowDecimals: false, // Запрещаем использовать дробные значения
Parent: chart,
// Устанавливаем положение оси, установленное пользователем
Position: "custom",
Min: 0,
Max: 70,
PlotBands: [],
PositionValue: -1, // Ось Y располагаем слева от области построения диаграммы
Primary: true, // Данная ось является основной
// Количество интервалов оси
TickIntervalsCount: 5,
// Заголовок оси
Title: {
Text: "Значение",
DisplayUnit: "млн. руб.",
Font: new PP.Font(),
Wrap: PP.Ui.TextWrapping.WrapWithEllipsis,
Align: "Middle"
},
// Запрещаем использовать максимальные и минимальные значения по умолчанию
UseDefaultExtremes: false,
LabelClick: function(sender, args) {
if (args.Tick) {
if (args.Tick.getFont().getIsUnderline()) {
args.Tick.getFont().setIsUnderline(false);
} else {
args.Tick.setFont(new PP.Font());
args.Tick.getFont().setIsUnderline(true);
}
this.redraw();
}
},
LabelMouseOut: function(sender, args) {
if (args.Tick) {
args.Tick.setColor("rgb(0,0,0)");
this.redraw();
}
},
LabelMouseOver: function(sender, args) {
if (args.Tick) {
args.Tick.setColor("rgb(255,0,0)");
this.redraw();
}
},
TitleDblClick: function(sender, args) {
if (args.Axis && args.Axis.getTitle()) {
console.log("Заголовок оси: «%s»", args.Axis.getTitle().Text);
}
}
});
// Устанавливаем методы доступа для свойств Color, Font и ticks
PP.Object.defineProps(PP.Ui.ChartAxisTick, ["Color", "Font"], true);
PP.Object.defineProps(PP.Ui.ChartCanvasAxis, ["ticks"], true);
return axis;
}
// Выводит информацию об указанной оси диаграммы
function printAxisInfo(axis) {
console.log("Длина оси Y в пикселях: %s", axis.getPixelLength());
value = 50;
console.log("Координата оси Y, соответствующая значению %s: %s", value,
axis.getPixelValue(value));
console.log("Значение оси Y, соответствующее координате %s: %s", 100,
axis.getAxisValue(100, true));
console.log("Цена одного деления оси: %s", axis.getTickInterval());
console.log("Длина одного деления оси в пикселях: %s", axis.getTickPixelInterval());
console.log("Ширина оси Y: %s", axis.getSize());
console.log("Ряды данных, связанные с осью:");
for (var i in axis.getLinkedSeries()) {
console.log(" %s", axis.getLinkedSeries()[i].getName());
}
}
// Создаёт массив цветов
function getColors() {
var colors = [
"rgb(147,61,168)",
"rgb(255,217,0)",
"rgb(255,145,145)",
"rgb(107,188,128)",
"rgb(160,203,200)",
"rgb(195,214,108)",
"rgb(239,193,100)", "rgb(239,193,100)", "rgb(255,191,191)", "rgb(169,216,181)", "rgb(205,227,226)", "rgb(223,233,178)", "rgb(247,223,175)", ]; return colors; }
// Возвращает массив значений для первого ряда данных
function getSerieData1() {
var data = [{
X: 0,
Y: 10,
Name: "2001",
Color: getColors()[0]
}, {
X: 1,
Y: 30,
Name: "2002",
Color: getColors()[1]
}, {
X: 2,
Y: 17,
Name: "2003",
Color: getColors()[2]
}, {
X: 3,
Y: 25,
Name: "2004",
Color: getColors()[3]
}, {
X: 4,
Y: 55,
Name: "2005",
Color: getColors()[4]
}];
return data;
}
// Возвращает массив значений для второго ряда данных
function getSerieData2() {
var data = [{
X: 0,
Y: 15,
Name: "2001",
Color: getColors()[5]
}, {
X: 1,
Y: 24,
Name: "2002",
Color: getColors()[6]
}, {
X: 2,
Y: 19,
Name: "2003",
Color: getColors()[7]
}, {
X: 3,
Y: 29,
Name: "2004",
Color: getColors()[8]
}, {
X: 4,
Y: 28,
Name: "2005",
Color: getColors()[9]
}];
return data;
}
function onReady() {
// Создаём точечную диаграмму createChart(); // Создаём ось Y var yAxis = createAxis(); // Устанавливаем данную ось chart.setYAxis(yAxis, true); // Перерисовываем диаграмму chart.redraw(true); // Выводим информацию об оси Y printAxisInfo(yAxis); } </script>
4. В теге <body> в качестве значения атрибута «onLoad» указать имя функции для создания диаграммы и добавить блок с идентификатором «chart»:
<body onload="onReady()"> <div id="chart"></div> </body>
В результате выполнения примера на html-странице была размещена точечная диаграмма:

В консоли браузера была выведена информация о вертикальной оси диаграммы:
Длина оси Y в пикселях: 302
Координата оси Y, соответствующая значению 50: 86.28571428571428
Значение оси Y, соответствующее координате 100: 49.139072847682115
Цена одного деления оси: 14
Длина одного деления оси в пикселях: 60.4
Ширина оси Y: 66.21875
Ряды данных, связанные с осью:
Австралия
Азия
См. также: