2017-01-12 5 views
1

私はプログラミングの初心者です。スキルと知識が不足しているため、私は自分の問題に固執しています。私はThis is the chart I need to createamchartsで4つの基準を使ってテーブルを生成するには

>> = amchartsに、このようなテーブルを作成しようとしましたが、これは=のように私は成功したテーブルを作成することができます>>This is the chart I have made using amcharts 問題は、私は、チャートのテーブルを生成する方法がわからないです。私はすでにテーブルを生成する方法についてのチュートリアルを見たことがありますが、チャートにはカテゴリがあり、どのように行うべきかについては何も分かりません。

これは、コード、私が作ったと私はaddInitHandler `

<!doctype html> 
<html class="no-js" lang=""> 
    <head> 
     <meta charset="utf-8"> 
     <meta http-equiv="x-ua-compatible" content="ie=edge"> 
     <title></title> 
     <meta name="description" content=""> 
     <meta name="viewport" content="width=device-width, initial-scale=1"> 

     <script src="plugins/amcharts/amcharts.js" type="text/javascript"></script> 
     <script src="plugins/amcharts/serial.js" type="text/javascript"></script> 

<style> 

#chartdiv { 
    width: 900px; 
    max-width: 100%; 
    height: 300px; 
    border: 2px solid #eee; 
    border-bottom: none; 
} 

#chartdata { 
    width: 900px; 
    max-width: 100%; 
    border: 2px solid #eee; 
    border-top: none; 
} 

#chartdata * { 
    -webkit-box-sizing: border-box; 
    -moz-box-sizing: border-box; 
    box-sizing: border-box; 
} 

#chartdata table { 
    width: 100%; 
    border-collapse: collapse; 
} 

#chartdata table th, 
#chartdata table td { 
    text-align: center; 
    padding: 5px 7px; 
} 

#chartdata table th { 
    background: #999; 
    color: #fff; 
} 

#chartdata table td { 
    border: 1px solid #eee; 
} 

#chartdata table td.row-title { 
    font-weight: bold; 
    width: 150px; 
} 
</style> 

<script> 
/** 
* A plugin to automatically creata a data table for the chart 
* The plugin will check if the chart config has the following setting set: "dataTableId" 
*/ 
AmCharts.addInitHandler(function(chart) { 

    // check if export to table is enabled 
    if (chart.dataTableId === undefined) 
    return; 

    // get chart data 
    var data = chart.dataProvider; 

    // create a table 
    var holder = document.getElementById(chart.dataTableId); 
    var table = document.createElement("table"); 
    holder.appendChild(table); 
    var tr, td; 

    // construct table 
    for (var i = 0; i < chart.graphs.length; i++) { 

    // add rows 
    tr = document.createElement("tr"); 
    table.appendChild(tr); 
    td = document.createElement("td"); 
    td.className = "row-title"; 
    td.innerHTML = chart.graphs[i].title; 
    tr.appendChild(td); 

    for (var x = 0; x < chart.dataProvider.length; x++) { 
     td = document.createElement('td'); 
     td.innerHTML = chart.dataProvider[x][chart.graphs[i].valueField]; 
     tr.appendChild(td); 
    } 
    } 

}, ["serial"]); 

/** 
* Define chart data 
*/ 
var chartData = [{ 
    "category": "Operations-25", 
    "quarter": "25", 
    "averageyears":"0.1", 
    "numofemployees":"12" 
    },{ 
    "category": "Operations-28", 
    "quarter": "28", 
    "averageyears":"3.00", 
    "numofemployees":"22" 
    },{ 
    "category": "Operations-29", 
    "quarter": "29", 
    "averageyears":"5.00", 
    "numofemployees":"2" 
    },{ 
    "category": "Operations-30", 
    "quarter": "30", 
    "averageyears":"6.02", 
    "numofemployees":"4" 
    },{ 
    "category": "Main Office-25", 
    "quarter": "25", 
    "averageyears":"2.05", 
    "numofemployees":"12" 
    },{ 
    "category": "Main Office-26", 
    "quarter": "26", 
    "averageyears":"4.05", 
    "numofemployees":"12" 
    },{ 
    "category": "Main Office-27", 
    "quarter": "27", 
    "averageyears":"2.00", 
    "numofemployees":"12" 
    },{ 
    "category": "Main Office-29", 
    "quarter": "29", 
    "averageyears":"1.05", 
    "numofemployees":"12" 
    },{ 
    "category": "Main Office-30", 
    "quarter": "30", 
    "averageyears":"6.05", 
    "numofemployees":"12" 
    }] 

}]; 

var chart = AmCharts.makeChart("chartdiv", { 
    "type": "serial", 
    "theme": "light", 
    "dataProvider": chartData, 
    "dataTableId": "chartdata", 
    "legend": { 
     "horizontalGap": 10, 
     "position": "bottom", 
     "useGraphSettings": true, 
     "markerSize": 10 
    }, 
    "valueAxes": [{ 
     "id":"v1", 
     "axisColor": "#FF6600", 
     "axisThickness": 2, 
     "axisAlpha": 1, 
     "position": "left", 
     "title":"Average Of Years in Service" 

    }, { 
     "id":"v2", 
     "axisColor": "#FCD202", 
     "axisThickness": 2, 
     "axisAlpha": 1, 
     "position": "right", 
     "title":"Number of Employees" 
    }], 
    "graphs": [{ 
     "valueAxis": "v1", 
     "color": "#FF6600", 
     "type":"column", 
     "title": "Average Of Years in Service", 
     "valueField": "averageyears", 
     "columnWidth":0.6, 
     "fillAlphas": 0.8 
    }, { 
     "valueAxis": "v2", 
     "color": "#FCD202", 
     "type":"column", 
     "title": "Number of Employees", 
     "valueField": "numofemployees", 
     "clustered": false, 
     "columnWidth":0.3, 
     "fillAlphas": 0.8 
    }], 
    "categoryField": "category", 
    "categoryAxis": { 
    "gridPosition": "start", 
    "axisAlpha": 0.5, 
    "gridAlpha": 0, 
    "position": "left", 
    "fontSize": 12, 
    "boldLabels": "bold" , 
    "guides": [ { 
     "category": "Main Office-25", 
     "toCategory": "Main Office-30", 
     "lineAlpha": 5, 
     "tickLength": 30, 
     "expand": true, 
     "label": "Chowking Main Office", 

    }, { 
     "category": "Operations-25", 
     "toCategory": "Operations-30", 
     "lineAlpha": 5, 
     "tickLength": 30, 
     "expand": true, 
     "label": "Chowking Operations", 

    } ], 
    "labelFunction": function(label, item) { 
     return item.dataContext.quarter; 
    } 
    } 
}); 
</script> 
    </head> 
    <body> 
     <div id="chartdiv"></div>     
     <div id="chartdata"></div> 
    </body> 
</html> 

`

+0

私が見たチュートリアルはhttps://www.amcharts.com/kbase/displaying-automatically-generated-table-data-synced-category-axis/でした。 – linkundefined

答えて

1

データが表示されない理由があるため、余分なのですが追加したとき、それは実行されません。 }];データ定義内に構文エラーの原因となっている行があります。これは、ブラウザの開発者ツールバー/コンソール(通常はF12を押してアクセス可能)を使用して確認できます。違反行を削除すると、チャートと表が機能しますが、探しているものにが閉じるようにCSS、グラフの余白、設定を微調整する必要があります。

凡例をテーブルに配置することはできませんが、色付きボックスを模した行タイトルに<span>を追加することで外観を模倣することができます。あなたは、チャートの独自legend定義を削除する必要があります

td.innerHTML = '<span style="width: 12px; height: 12px; background:' + chart.graphs[i].color + '; display:inline-block; margin-right:6px"></span>' + chart.graphs[i].title; 

:ここでは、テーブルのプラグインで変更されたラインです。そこから

、私は、グリッド線を同期させるために、あなたの設定にsynchronizeGrid: trueを追加したチャートのautoMargins設定を無効にして、テーブルとチャートを揃える助けるために自分自身の余白を設定します。

var chart = AmCharts.makeChart("chartdiv", { 
    // other config omitted 
    "synchronizeGrid": true, 
    "autoMargins": false, 
    "marginLeft": 150, 
    "marginBottom": 55, 
    "marginRight": 60, 
    // ... 

次に、私はあなたを更新categoryAxis 'tickPosition"start"のように、希望するスクリーンショットのようなマークの間にラベルが表示されます。その後、私はガイド 'tickLengthを増やしてテーブルに接続し、tickLengthがラベルを下にシフトするようにlabelOffsetを増やすように調整しました。 tickAlphaと他のalphaの値の範囲は0〜1です。 5は1と同じである:

"categoryAxis": { 
    "gridPosition": "start", 
    "tickPosition": "start", 
    "tickLength": 15, 
    "axisAlpha": 0.5, 
    "gridAlpha": 0, 
    "fontSize": 12, 
    "boldLabels": "bold", 
    "guides": [{ 
     "category": "Main Office-25", 
     "toCategory": "Main Office-30", 
     "lineAlpha": 1, 
     "tickLength": 60, 
     "expand": true, 
     "label": "Chowking Main Office", 
     "labelOffset": -30 

    }, { 
     "category": "Operations-25", 
     "toCategory": "Operations-30", 
     "lineAlpha": 1, 
     "tickLength": 60, 
     "expand": true, 
     "label": "Chowking Operations", 
     "labelOffset": -30 
    }], 

最後に、私は、プラグイン内のデータ・セルのためのクラスを追加し、テーブルのフォントがチャートのデフォルトフォントを一致し、グリッドように、セルサイズを調整するようにCSSを更新しますもっと密接に並んでいる。あなたはおそらくそれをもっと微調整することができますが、これは十分に見えました。ここで

は私のすべての変更とフィドルです:https://jsfiddle.net/m5nm9chL/3/

これはかなりあなたがご希望のスクリーンショットを取得しようとしている最も近いですが、さらにCSS /余白を調整して自由に感じます。

+0

私の質問に答えていただきありがとうございました:)本当に助けになりました。 – linkundefined

関連する問題