0

こんにちは。このJSONデータを使用して、サッカークラブ(チェルシーなど)が好きな人の数を人の数としてユーザーIDに入力して表示することで、高い円グラフを作成したかったのですが、達成できませんでした。

{
  "data": [
    {
      "id":    "/en/chelsea_fc",
      "topic": "Chelsea F.C.",
      "audience": [{
        "information": [
          {
            "category": "Athlete",
            "source":   "Didier Drogba"
          },
          {
            "category": "Athlete",
            "source":   "Frank Lampard"
          },
          {
            "category": "Professional sports team",
            "source":   "Chelsea Football Club"
          },
          {
            "category": "favorite_teams",
            "source":   "Chelsea Football Club"
          }
        ],
        "userid": "100003914111287"
      }],
      "type":  "/soccer/football_team"
    },
    {
      "id":    "/en/manchester_united_fc",
      "topic": "Manchester United F.C.",
      "audience": [{
        "information": [
          {
            "category": "Athlete",
            "source":   "Ryan Giggs"
          },
          {
            "category": "Professional sports team",
            "source":   "Manchester United"
          },
          {
            "category": "favorite_teams",
            "source":   "Manchester United"
          }
        ],
        "userid": "100003921730958"
      }],
      "type":  "/soccer/football_team"
    }
  ]
}

これは私が試したものですが、うまくいきませんでした:

var pts = [];
$.each(json.data, function(i,v){
    pts.push([v.topic, v.audience.length]);
});

 var chart;
    $(document).ready(function() {
        chart = new Highcharts.Chart({
            chart: {
                renderTo: 'container',
                plotBackgroundColor: null,
                plotBorderWidth: null,
                plotShadow: false
            },
            title: {
                text: 'Facebook like'
            },
            tooltip:{
                pointFormat: '{series.name}: <b>{point.percentage}%</b>',
                percentageDecimals: 0
                }


            ,
            plotOptions: {
                pie: {
                    allowPointSelect: true,
                    cursor: 'pointer',
                    point: {
                        events:{
                            click: function (event){
                                //var personame =" ";
                                var id ="10150616324193820";
                                for (var i = 0; i < jsonFB.user1.length; i++) {
                                    for (var k = 0; k < json.data.length; k++) {
                                        for (var j = 0; j < json.data[k].audience.length; j++) {


                                       if (jsonFB.user1[i].id = json.data[k].audience[j].userid) {
                                            var personname = jsonFB.user1[i].name;

                                            var id = 100003921730958;



                                            }

                                       else {

                                           alert("Error!");

                                             }

                                             }


                                            }

                                    alert("Person who like "+this.name +"  are"+ personname);
                                    var ans = confirm("Do you want to view this person profile?");
                                    if (ans)
                                      window.location="http://www.facebook.com/people/@/"+id;


                            }
                        }
                        }
                    },
                    showInLegend: true ,
                    dataLabels: {
                        enabled: true,
                        color: '#000000',
                        connectorColor: '#000000',

                        formatter: function() {
                            return '<b>'+ this.point.name +'</b>: '+ Math.round(this.percentage) +'%';
                        }

                    }
                }
            },

            series: [{
                type: 'pie',
                name: 'Likes',
                data: pts

            }]
        });
    });


});
4

1 に答える 1

0

この行では、パーサーを変更する必要があります。

pts.push([v.topic, v.audience.length]);

length は正しくありませんが、長さ情報から値を取得する必要があります。その結果、パーサーは次のようになります。

$.each(tmp.data, function(i,v){
    pts.push([v.topic, v.audience[0].information.length]);
});

ここで、tmp.data は JSON からのデータです。

于 2013-01-31T11:06:58.573 に答える