私は、incomeとexpensesという2つのテーブルを持っています。これらのテーブルのそれぞれも通貨タイプを持っています。charts multiCurrencyタイムスタンプによるjs php実装グループ
私は、毎月の通貨でどのくらいの収入と経費が発生しているかを調べるためにクエリを実行しています。
クエリは結構です、それは、これを返します。
[
{"type":"income","monto":"1000","currency":"1","month":"6","year":"2016","idcurrency":"1","name":"Pesos argentinos","simbolo":"$"},
{"type":"expenditure","monto":"-500","currency":"1","month":"6","year":"2016","idcurrency":"1","name":"Pesos argentinos","simbolo":"$"},
{"type":"income","monto":"5000","currency":"2","month":"6","year":"2016","idcurrency":"2","name":"Dolares estadounidenses","simbolo":"u$d"},
{"type":"expenditure","monto":"-5000","currency":"2","month":"6","year":"2016","idcurrency":"2","name":"Dolares estadounidenses","simbolo":"u$d"},
{"type":"expenditure","monto":"-5000","currency":"3","month":"6","year":"2016","idcurrency":"3","name":"Pesos uruguayos","simbolo":"$"}
]
私はチャートのJSを使用して、それをプロットする必要がありますが、問題はチャートJSのマニュアルに従って、私はラベルと設定する必要があることですこれらのラベルのそれぞれの値。 何ヶ月も通貨で何の動きもありませんでしたが、別の通貨ではデータが間違って表示されることがあります。 どうすればこの問題を解決できますか?
おかげ
編集: イムラベルは、実際にそれらを生成するためにこれを使用してイムのために、バーグラフを使用しようとしている:
$desde = new DateTime();
$desde->modify('first day of this month');
$desde = $desde->sub(new DateInterval('P1Y'));
$hasta = new DateTime();
$hasta->modify('first day of next month');
$interval = DateInterval::createFromDateString('1 month');
$period = new DatePeriod($desde, $interval, $hasta);
$info = array();
foreach ($period as $dt) {
array_push($info,$dt->format("Y-m"));
}
パトリック・ソリューションが、私はそれを動作させることはできません。
// Bar chart
var ctx = document.getElementById("graficoIngresosCostos");
let dataSource =
<?=$dataSource?>;
//build the labels (you already did it in your OP. This is your info array
// that holds the first day of each month)
let labels = <?=$labels?>;
let currencies = <?=$monedas?>;
let datasets = [];
currencies.forEach(c => {
//filter out the incomes and expenditures for just the currency
// you're interested in
let incomeSource = dataSource.filter(
source=>source.nombre===c && source.concepto==='ingresos');
let expenseSource = dataSource.filter(
source=>source.nombre===c && source.concepto==='gastos');
let incomeDataset = { //dataset that holds this currency's income
label:c + ': ingresos',
data:[],
backgroundColor:'#03586A' //set color of bars
};
let expenseDataset = {//dataset that holds this currency's expense
label:c + ': gastos',
data:[],
backgroundColor:'#03586A' //set color of bars
};
//add datapoints to income and expense datasets for this currency
incomeSource.forEach(source=>{incomeDataset.data.push(source.monto)});
expenseSource.forEach(source=>{expenseDataset.data.push(source.monto)});
//todo: set backgroundColor for the bars of this dataset
//add the datasets to the chart
datasets.push(incomeDataset,expenseDataset);
});
//at this point you have all the datasets organized. Build chart
//ctx refers to the 2dContext of the canvas
let chart = new Chart(ctx,{
type:'bar',
data:{labels:labels, datasets:datasets}
});
チャートが既に機能していないと判断しましたか?あなたはラベルとして何を使用していますか?どのようなタイプのチャートですか? – BeetleJuice
私はhaventのために、ラベルとしてデータを書式設定する方法を知らないので、 私はラベルのためのコードを使って答えを編集しました。棒グラフ –
x軸のラベルは日付であると想定しています。 y軸は金額になりますか? – BeetleJuice