0

これをどのように使用できますか: https://developers.google.com/chart/interactive/docs/rolesグラフを動的に作成する場合?

これは私のコードの一部です:

...
data.addRows(dates.length);
for (i = 0; i < dates.length; i++){
    if (i!=0){
        data.setValue( i, 0, new Date(dates[i]) ); 
        temp = graph[dates[i]];
        var j = 0;
        if (temp){
            for (j = 0; j < groups.length; j++){
                if ( groups[j] in temp){
                    var volume = parseFloat(temp[groups[j]]);
                    console.log(i + '  ' + j + '  ' + volume);
                    data.setValue( i, j+1, volume )
                }
            }
        }
    }else{
        data.setValue( i, 0, new Date(dates[i]) ); 
        var j = 0;
        for (j = 0; j < groups.length; j++){
            data.setValue( 0, j+1, 0 )
        }
    }
}
...

「data.setValue」で値を設定した後、役割も設定するにはどうすればよいですか? (間隔値が必要です)「data.setRole」のようなものが素晴らしいでしょう!! :-)

4

1 に答える 1

4

DataTableロールなしで を作成してDataViewから、ビューの列にロールを割り当てる を作成できます。ドキュメントは、ここでこれを行う方法を示しています:

DataView.setColumns方法

ビューを作成するときに、列の役割を明示的に設定できます。これは、新しい計算列を作成するときに役立ちます。詳細について は、を参照DataView.setColumns()してください。

DataView.setColumns() ヘルプ ファイルでは、これを行う方法を次のように説明しています。

setColumns(columnIndexes)

  1. columnIndexes - 数値および/またはオブジェクトの配列 (混合可能): 数値は、ビューに含めるソース データ列のインデックスを指定します。データは変更されずに取得されます。ロールまたは追加の列プロパティを明示的に定義する必要がある場合は、sourceColumn プロパティでオブジェクトを指定します。
  2. オブジェクトは計算列を指定します。計算列は、行ごとにその場で値を作成し、それをビューに追加します。オブジェクトには次のプロパティが必要です。
    • calc [関数] - そのセルの値を計算するために列の各行に対して呼び出される関数。関数シグネチャは func(dataTable, row) です。ここで、dataTable はソース DataTable で、row はソース データ行のインデックスです。この関数は、type で指定された型の単一の値を返す必要があります。
    • type [string] - calc 関数が返す値の JavaScript タイプ。
    • label [オプション、文字列] - この生成された列に割り当てるオプションのラベル。指定しない場合、ビュー列には
      ラベルがありません。
    • id [オプション、文字列] - この生成された列に割り当てるオプションの ID。
    • sourceColumn - [オプション、数値] 値として使用するソース列。指定する場合は、calc または type プロパティを指定しないでください。
      これは、オブジェクトの代わりに数値を渡すのと似てい
      ますが、新しい列の役割とプロパティを指定できます。
    • properties [オプション、オブジェクト] - この列に割り当てる任意のプロパティを含むオブジェクト。指定しない場合、ビュー
      列にはプロパティがありません。
    • role [オプション、文字列] - この列に割り当てるロール。指定しない場合、既存のロールはインポートされません。

たとえば、interval 列が列 #3 の場合、次のように言います。

dataView.setColumns([0, 1, {sourceColumn: 2, role: 'interval'}]);

上記は、列 0 と列 1 をロールなしでそのまま設定し、列 2 は間隔列として割り当てられます。

編集

コメントに応じて、間隔はデータセットにあります。次に例を示します。

function drawVisualization() {
  // Create and populate the data table.
  var data = google.visualization.arrayToDataTable([
    ['Year', 'Austria', 'Interval A', 'Interval B'],
    ['2003',  100,   95,       125],
    ['2004',  110,   96,       150],
    ['2005',  120,   97,       175],
    ['2006',  130,   98,       200],
    ['2007',  140,   99,       225],
    ['2008',  150,   100,      250]
  ]);

  // Create Data View using columns 2 & 3 as intervals
  var dataView = new google.visualization.DataView(data);
  dataView.setColumns([0, 1, {sourceColumn: 2, role: 'interval'}, {sourceColumn: 3, role: 'interval'}]);

  // Create and draw the visualization.
  new google.visualization.LineChart(document.getElementById('visualization')).
    draw(dataView,
         {width:600, height:400,
          hAxis: {title: "Year"}}
        );
}

元のデータ テーブルに間隔値を列として含めます。次に、データビューを使用して、これらの列を「間隔」ロール列に変更します。次に、データビューを描画します。これにより、期待どおりにエラー バー (間隔列) が表示されます。

于 2013-02-12T05:04:25.947 に答える