簡體   English   中英

Android折線圖x軸值

[英]Android Line Chart x-axis Values

嘗試使用Android中的ACHartEngine庫將數據填充到折線圖時遇到問題。 基本上,無論特定月份的金額如何,我都嘗試從1月到12月使用x軸創建折線圖:

在此處輸入圖片說明

從x軸開始,有1月-12月,盡管有些月份的數量為0。 我現在的問題是我只設法繪制了帶有金額月份的圖表。 假設當前我的數據庫具有以下記錄:

在此處輸入圖片說明

因此,基本上我的圖表僅包含Jun,Aug和Sep,而不是Jan-Dec。

這是我設置折線圖的方式:

private void openTotalMonthlyChart() {
    int[] x = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 };

    // Creating an XYSeries for Expenses
    XYSeries expensesSeries = new XYSeries("Expenses");
    // Adding data to Expense Series
    for (int i = 0; i < trans_list.size(); i++) {
        expensesSeries.add(x[i], trans_list.get(i).getAmount());
    }

    // Creating a dataset to hold each series
    XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();
    // Adding Expenses Series to the dataset
    dataset.addSeries(expensesSeries);

    // Creating XYSeriesRenderer to customize expensesSeries
    XYSeriesRenderer expensesRenderer = new XYSeriesRenderer();
    expensesRenderer.setColor(Color.rgb(124, 181, 236));
    expensesRenderer.setPointStyle(PointStyle.CIRCLE);
    expensesRenderer.setFillPoints(true);
    expensesRenderer.setLineWidth(2);
    expensesRenderer.setDisplayChartValues(true);

    // Creating a XYMultipleSeriesRenderer to customize the whole chart
    XYMultipleSeriesRenderer multiRenderer = new XYMultipleSeriesRenderer();
    multiRenderer.setXLabels(0);
    multiRenderer.setChartTitle("Total Monthly Expenses");
    multiRenderer.setXTitle("");
    multiRenderer.setYTitle("Amount");
    multiRenderer.setZoomButtonsVisible(true);

    for (int j = 0; j < trans_list.size(); j++) {
        multiRenderer.addXTextLabel(j + 1, trans_list.get(j).getDate());
    }

    multiRenderer.addSeriesRenderer(expensesRenderer);

    // Get the component from XML file
    RelativeLayout chartContainer = (RelativeLayout) totalMonthlyView
            .findViewById(R.id.chart_totalMonthly);

    // Creating a Line Chart
    chartOverall = ChartFactory.getLineChartView(getActivity(), dataset,
            multiRenderer);
    // Adding the Line Chart to the RelativeLayout
    chartContainer.addView(chartOverall);
}

我的數據庫SQL語句返回的數據是上面的第二張圖片:

public ArrayList<TransactionRecModel> getTotalMonthly() {
    try {
        String sql = "SELECT SUM(amount) AS total, SUBSTR(date,4,2) AS Month FROM transactionRec WHERE type = 'W' GROUP BY Month";
        Cursor mCur = mDb.rawQuery(sql, null);
        Log.e(TAG, "Data Grab RECORD Success");
        if (mCur.getCount() != 0) {
            if (mCur.moveToFirst()) {
                do {
                    TransactionRecModel trm = new TransactionRecModel();

                    trm.setAmount(mCur.getInt(mCur.getColumnIndex("total")));
                    trm.setDate(mCur.getString(mCur.getColumnIndex("Month")));

                    transList.add(trm);
                } while (mCur.moveToNext());
            }
        }
        return transList;
    } catch (SQLException mSQLException) {
        throw mSQLException;
    }
}

我想知道有什么辦法嗎? 在此先感謝您,我的語法不好。

您可以將MathHelper.NULL_VALUE用作要跳過的值。 請參閱傳感器值圖表 AChartEngine示例以了解如何執行此操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM