4

このタイトルは少し奇妙に思えますが、うまく説明できませんでした。

ここに私が必要なものがあります。このJavaScript関数があり、データを文字列変数として渡す必要があります:

var chart;
function drawChart() {
    chart = new Highcharts.Chart({
        chart: {
            renderTo: 'container',
            plotBackgroundColor: null,
            plotBorderWidth: null,
            plotShadow: false
        },
        series: [{
            type: 'pie',
            name: 'Browser share',
            data: [
                ['Firefox',   45.0],
                ['IE',       26.8],
                {
                    name: 'Chrome',
                    y: 12.8,
                    sliced: true,
                    selected: true
                },
                ['Safari',    8.5],
                ['Opera',     6.2],
                ['Others',   0.7]
            ]
        }]
    });
}

このデータをパラメーターとして関数に渡す必要があります

[ ['Firefox', 45.0], ['IE', 26.8], { name: 'Chrome', y: 12.8, sliced: true, selected: true }, ['Safari', 8.5], ['Opera', 6.2]、[「その他」、0.7]]

どうすればできますか?

私はそれがこのように見えるようにしたい

var chart;
function drawChart(dataString) {
    chart = new Highcharts.Chart({
        chart: {
            renderTo: 'container',
            plotBackgroundColor: null,
            plotBorderWidth: null,
            plotShadow: false
        },
        title: {
            text: 'Browser market shares at a specific website, 2010'
        },
        tooltip: {
            pointFormat: '{series.name}: <b>{point.percentage}%</b>',
            percentageDecimals: 1
        },
        plotOptions: {
            pie: {
                allowPointSelect: true,
                cursor: 'pointer',
                dataLabels: {
                    enabled: true,
                    color: '#000000',
                    connectorColor: '#000000',
                    formatter: function() {
                        return '<b>'+ this.point.name +'</b>: '+ this.percentage +' %';
                    }
                }
            }
        },
        series: [{
            type: 'pie',
            name: 'Browser share',
            data: dataString
        }]
    });
}

@ moonwave99 による解決策を試しました:

var browsers = [
 ['Firefox',   45.0],
 ['IE',       26.8],
 {
     name: 'Chrome',
     y: 12.8,
     sliced: true,
     selected: true
 },
 ['Safari',    8.5],
 ['Opera',     6.2],
 ['Others',   0.7]
];

...........
        series: [{
            type: 'pie',
            name: 'Browser share',
            data:  JSON.stringify(browsers) 
        }]
............

そして私の結果はこれです:

ここに画像の説明を入力

解決策: http://jsfiddle.net/USzVy/1/

var browsers = [
 ['Firefox',   45.0],
 ['IE',       26.8],
 {
     name: 'Chrome',
     y: 12.8,
     sliced: true,
     selected: true
 },
 ['Safari',    8.5],
 ['Opera',     6.2],
 ['Others',   0.7]
];


function drawChart() {
var data_str = JSON.stringify(browsers);

    var options ={
        chart: {
            renderTo: 'container',
            plotBackgroundColor: null,
            plotBorderWidth: null,
            plotShadow: false
        },
        series: [{
            type: 'pie',
            name: 'Browser share',
            data: JSON.parse(data_str)
        }]
    }

  chart = new Highcharts.Chart(options);
}

ありがとう

4

5 に答える 5

5

まず、データを文字列ではなく配列として定義します。

 var data = [["Firefox",45.0],["IE",26.8],{name: "Chrome",y: 12.8, sliced: true,selected: true},["Safari",8.5],["Opera",6.2],["Others",0.7]];

次に、文字列化してパラメーターとして関数に渡します。

 var data_str = JSON.stringify(data);
 drawChart(data);

次に変換して JSON に戻します

 series: [{
        ...
        data: JSON.parse(data)
    }
于 2012-09-27T12:38:39.997 に答える
3

使用JSON.stringify

var browsers = [
     ['Firefox',   45.0],
     ['IE',       26.8],
     {
         name: 'Chrome',
         y: 12.8,
         sliced: true,
         selected: true
     },
     ['Safari',    8.5],
     ['Opera',     6.2],
     ['Others',   0.7]
]

...

data : JSON.stringify(browsers)

...

編集フィドルを参照してください

EDIT2:私はこのライブラリAPIを見ました、そしてあなたは文字列を必要としませんが、オプションの配列を必要とします!ドキュメントを読むと、それが完了します。

于 2012-09-27T11:53:35.140 に答える
1
var chart;
function drawChart(dataString) {
    // options to create the chart
    var options = {
        chart: {
            renderTo: 'container',
            plotBackgroundColor: null,
            plotBorderWidth: null,
            plotShadow: false
        },
        series: [{
            type: 'pie',
            name: 'Browser share',
            data: dataString // using the parameter
        }]
    };
    chart = new Highcharts.Chart(options);
}
// here you get the dataString some way
var dataString = [
    ['Firefox',   45.0],
    ['IE',       26.8],
    {
        name: 'Chrome',
        y: 12.8,
        sliced: true,
        selected: true
    },
    ['Safari',    8.5],
    ['Opera',     6.2],
    ['Others',   0.7]
];
drawChart(dataString);
于 2012-09-27T12:22:41.117 に答える
1
function drawChart(data) {
    chart = new Highcharts.Chart({
        chart: {
            renderTo: 'container',
            plotBackgroundColor: null,
            plotBorderWidth: null,
            plotShadow: false
        },
        series: [{
            type: 'pie',
            name: 'Browser share',
            data: JSON.parse(data)
        }]
    });
}

var data = "[ ['Firefox', 45.0], ['IE', 26.8], { name: 'Chrome', y: 12.8, sliced: true, selected: true }, ['Safari', 8.5], ['Opera', 6.2], ['Others', 0.7] ]";
drawChart(data);
于 2012-09-27T11:52:47.403 に答える
1

素晴らしい、解決策、私はあなたのコードを試していましたが、私のチャートには何も表示されませんでした. parseInt() コマンドを使用します。

            function graficar(var1,var2,var3,var4){

                    var chart;
                    var datos=[];
                    datos[0]=parseInt(var1);
                    datos[1]=parseInt(var2);
                    datos[2]=parseInt(var3);
                    datos[3]=parseInt(var4);

                    var datos_str =JSON.stringify(datos);

                    alert(datos_str);

                    chart = new Highcharts.Chart({
                        chart: {
                                renderTo: 'grafico',
                                type: 'column'
                                },
                        title: {
                                text: 'Titulo de ventas'
                               },
                        xAxis: {
                                categories: ['30%', '40%', '50%', '60%']
                                },

                        tooltip: {
                            formatter: function() {
                                        return ''+
                                        this.series.name +': '+ this.y +'';
                                        }
                                },
                        credits: {
                            enabled: false
                               },
                        series: [{
                                name: 'Valores',

                                data: JSON.parse(datos_str)

... ... ... ...

ありがとう

于 2013-02-13T03:04:32.813 に答える