Highcharts: с несколькими осями

Я не разработчик, поэтому мне нужна ваша помощь. Я хотел бы создать диаграммы с Highcharts с несколькими осями, например: http://www.highcharts.com/demo/combo-multi-axes В примере Highcharts используются 3 типа значений: температура, давление и осадки, но мне нужно, чтобы они отображали температуру и влажность на одних и тех же диаграммах, поэтому только два типа значения. Данные (температура и влажность) хранятся в формате XML благодаря RRDtool (циклическая база данных). Теперь я использую Highcharts для построения базовой линии, поэтому каждая диаграмма отображает только один тип значений (одна диаграмма для температуры, другая диаграмма для влажности).

Это мой код базовой линейной диаграммы:

    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
            <script type="text/javascript" src="/weather-station/js/highcharts.js"></script>
    <script type="text/javascript">
        $(function () {
            $(document).ready(function() {

                $.ajax({
                    type: "GET",
                    url: "/data/temperature24h.xml",
                    dataType: "xml",
                    success: function(xml) {

                        Highcharts.setOptions({global:{useUTC:false}});
                        options={chart:{renderTo:"container-fluid",type:"spline",zoomType:"xy"},title:{text:""},xAxis:{type:"datetime",dateTimeLabelFormats:{hour:"%H. %M"}},yAxis:{title:{text:"Temperature (°C)"}},tooltip:{formatter:function(){return"<b>"+this.series.name+"</b><br/>"+Highcharts.dateFormat("%H:%M",this.x)+": "+this.y.toFixed(1)+" °C"}},plotOptions:{series:{marker:{radius:2}}},lineWidth:1,series:[]}

                        var series = []
                        //alert('start');

                        //define series
                        $(xml).find("entry").each(function() {
                            var seriesOptions = {
                                name: $(this).text(),
                                data: []
                            };
                            options.series.push(seriesOptions);
                        });
                        //alert('finish part 1');

                        //populate with data
                        $(xml).find("row").each(function() {
                            var t = parseInt($(this).find("t").text()) * 1000

                            $(this).find("v").each(function(index) {
                                var v = parseFloat($(this).text())
                                v = v || null
                                if (v != null) {
                                    //alert('index = ' + index + 'time=' + t + 'v=' + v);
                                    options.series[index].data.push([t, v])
                                };
                            });
                        });
                        //alert('finish part 2');

                        options.title.text = "Temperatures of the last 24h"
                        $.each(series, function(index) {
                            options.series.push(series[index]);
                        });
                        //alert('finish part 3');

                        chart = new Highcharts.Chart(options);
                    }
                });
            });
        });

    </script>

            <script type="text/javascript" src="/weather-station/js/exporting.js"></script>

Это пример некоторых строк XML (время и данные):

<?xml version="1.0" encoding="ISO-8859-1"?>

<xport>
<meta>
<start>1381828200</start>
<step>300</step>
<end>1381828200</end>
<rows>289</rows>
<columns>3</columns>
<legend>
<entry>External Temperature</entry>
<entry>Internal Temperature</entry>
<entry>Bedroom Temperature</entry>
</legend>
</meta>
<data>
<row><t>1381828200</t><v>2.2399482146e+01</v><v>2.3000000000e+01</v><v>2.2600000000e+01</v></row>
<row><t>1381828500</t><v>2.2598366803e+01</v><v>2.3000000000e+01</v><v>2.2600000000e+01</v></row>
<row><t>1381828800</t><v>2.2898350863e+01</v><v>2.3099450288e+01</v><v>2.2600000000e+01</v></row>
<row><t>1381829100</t><v>2.3197774941e+01</v><v>2.3100000000e+01</v><v>2.2600000000e+01</v></row>
<row><t>1381914600</t><v>NaN</v><v>NaN</v><v>NaN</v></row>
</data>
</xport>    

Пожалуйста, может ли кто-нибудь изменить мой основной код Highcharts для создания кода с несколькими осями, получая данные из файлов XML?

Большое спасибо!


person Fabio    schedule 16.10.2013    source источник


Ответы (1)


Вам необходимо ознакомиться с парсингом XML и структурой ряда для нескольких осей Y, как здесь: http://www.highcharts.com/demo/combo-multi-axes Затем подготовьте данные во время предварительной обработки.

person Sebastian Bochan    schedule 16.10.2013