0

私はしばらくの間グーグルで問題の解決策を見つけようとしてきましたが、見つけたものはすべて複雑すぎます。

動作するFlot円グラフがあります。Djangoから次の形式でJSON配列を受け取ります。

[0, 3, 5, 6, 7]

配列は、各シリーズのインスタンスの数を表します(つまり、シリーズ1の0インスタンス、シリーズ2の3インスタンスなど)。

次に、その配列は、次のコードを使用して単純なFlot円グラフに表示されます(theData上記の配列です)。

function loadTotalChart(theData) {
  $.plot($("#total-pie-chart"), theData ,
  {
    series: {
        pie: { 
            show: true
    }
        },
label: {
    show:true
},
legend: {
    show: false
    },
grid: {
    hoverable: true,
    }
   });
  }

問題は、ラベルが配列内で未定義であるため、円グラフに各系列の「未定義:30%」などが表示されることです。

私がやろうとしているのは、シリーズごとにラベルを追加することです。ラベルは、グラフのすべてのインスタンスで同じです。

JSON配列を取得し、ラベルを追加して、それをFlotに渡すにはどうすればよいですか?

どうもありがとう!

編集:

Liam McCannのおかげで、データがある場合にのみグラフをプロットするための次のコードができました。

function checkJsons(otherJson,newJson)
{
for (var key in otherJson) {if(otherJson[key] != newJson[key]) {return false;}}
return true;
}

function loadWeekChart(theData)
{
var blankData = [0, 0, 0, 0, 0];
if(checkJsons(blankData,theData)){$('#week-pie-chart').empty().append('Nothing to show yet');} 

else { $.plot($("#week-pie-chart"), theData ,
    {
        series: {
            pie: { 
                show: true
            }
        }
    }); }
 } 
4

1 に答える 1

2

私は自分の質問に答えたことがわかりました。これは、ラベルのない JSON 配列 (例: [1, 2, 4, 1, 5]) を取得し、配列にデータが含まれていることを確認し (つまり、 ではない[0, 0, 0, 0, 0])、ラベルを追加してグラフを表示するために現在使用しているコードです。

function loadTotalChart(theData) {
  var blankData = [0, 0, 0, 0, 0];
  if(checkJsons(blankData,theData)){
  $('#total-pie-chart').empty().append('Nothing to show yet');
} else { 
  var totalPieData = [
    {label: "1/5", data:theData[0]},
    {label: "2/5", data:theData[1]},
    {label: "3/5", data:theData[2]},
    {label: "4/5", data:theData[3]},
    {label: "5/5", data:theData[4]},
  ];
  $.plot($("#total-pie-chart"), totalPieData ,
    {
        series: {
            pie: { 
                 show: true
            }
        },
        label: {
               show:true
        },
        legend: {
                show: false
        },
        grid: {
              hoverable: true,
        }
    }); 
  }
} 

誰かがコードの問題、またはそれを行うためのより良い方法を見つけることができる場合は、私に知らせてください!

編集: この質問を振り返ってみると、この関数で参照されている checkJsons 関数が含まれていないことに気付きました。ここにあります:

function checkJsons(otherJson,newJson){
    for (var key in otherJson) {if(otherJson[key] != newJson[key]) {return false;}}
    return true;
 }
于 2012-07-24T10:29:22.423 に答える