Пример создания точечной диаграммы

Для выполнения примера необходимо создать html-страницу и выполнить следующие действия:

1. Добавить ссылку на css-файл PP.css. Также нужно добавить ссылки на следующие 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

Ряды данных, связанные с осью:

  Австралия

  Азия

См. также:

Chart