4

テスト中に回答された質問(X)/時間(Y)を示すグラフを作成しました。詳細については、ここで最初の質問を参照してください。

しかし、チャートの箇条書きの値を正しく表示する必要があります。現時点ではミリ秒の値が表示されていますが、Y軸ラベルで行ったようにカスタムhh:mm:ss値を表示し、何らかの方法でY軸をカスタマイズする必要があります。完全な値を正しく表示するための領域。以下は、チャートが現在どのように見えるかのスクリーンショットです。

チャートの質問/推定回答時間

[編集]

ダンの助けを借りて、私はほとんど欲しいものを手に入れました。それはほんの少しの問題です。下のスクリーンショットで、グラフの値が表示されているところを確認してください。AChartEngineリポジトリから1.1.0にアップデートしました。addNotationsはTimeSeriesオブジェクトにあります。TimeSeriesインスタンスにデータを追加する場所に、以下のコードをコピーして貼り付けます。

myQuestionsTimeSeries.add(i, DateTimeHelper.getMillisFromTime(answer.getEstimatedAnswerTime()));
                xyMultipleSeriesRenderer.addYTextLabel(DateTimeHelper.getMillisFromTime(answer.getEstimatedAnswerTime()),
                        String.valueOf(answer.getEstimatedAnswerTime()));
                myQuestionsTimeSeries.addAnnotation(String.valueOf(answer.getEstimatedAnswerTime()), i,
                        DateTimeHelper.getMillisFromTime(answer.getEstimatedAnswerTime()));

このチャートのコード結果は次のとおりです。

現時点での私のチャート

[編集]

これは基本的にクラス全体です。

private void initQuestionsTimeChart() {
        xyMultipleSeriesDataset = new XYMultipleSeriesDataset();
        xyMultipleSeriesRenderer = new XYMultipleSeriesRenderer();
        questionsTimeChart = ChartFactory.getLineChartView(getActivity(), xyMultipleSeriesDataset, xyMultipleSeriesRenderer);
        rootView.addView(questionsTimeChart);

        initSeriesData();
    }

    private void initSeriesData() {
        createMyQuestionsSeries();
        addSeriesAndRenderer(myQuestionsTimeSeries, myQuestionsRenderer);

        xyMultipleSeriesRenderer.setYTitle("Questions Time");
        xyMultipleSeriesRenderer.setXTitle("Questions Number");
        xyMultipleSeriesRenderer.setMarginsColor(Color.argb(0, 255, 255, 255));
        xyMultipleSeriesRenderer.setAxesColor(Color.BLACK);
        xyMultipleSeriesRenderer.setLabelsColor(Color.BLACK);
        xyMultipleSeriesRenderer.setXLabelsColor(Color.BLACK);
        xyMultipleSeriesRenderer.setYLabelsColor(0, Color.BLACK);
        xyMultipleSeriesRenderer.setAxisTitleTextSize(16);
        xyMultipleSeriesRenderer.setLabelsTextSize(15);
        xyMultipleSeriesRenderer.setYLabelsAlign(Paint.Align.RIGHT);
        xyMultipleSeriesRenderer.setSelectableBuffer(20);
        xyMultipleSeriesRenderer.setYLabels(0);
        xyMultipleSeriesRenderer.setMargins(new int[]{ 80, 80, 80, 80 });
    }

    private void addSeriesAndRenderer(XYSeries series, XYSeriesRenderer renderer) {
        xyMultipleSeriesDataset.addSeries(series);
        xyMultipleSeriesRenderer.addSeriesRenderer(renderer);
    }

    private void createMyQuestionsSeries() {
        myQuestionsTimeSeries = new TimeSeries("My Questions/Time");
        myQuestionsRenderer = new XYSeriesRenderer();
        myQuestionsRenderer.setColor(Color.BLUE);
        myQuestionsRenderer.setLineWidth(3f);
        myQuestionsRenderer.setPointStyle(PointStyle.CIRCLE);
        myQuestionsRenderer.setFillPoints(true);
        myQuestionsRenderer.setChartValuesSpacing(10f);
    }

    private void fillData() {
        int i = 0;
        for (Answer answer : getAnswers()) {
            i++;
            if (answer.getEstimatedAnswerTime() != null) {
                myQuestionsTimeSeries.add(i, DateTimeHelper.getMillisFromTime(answer.getEstimatedAnswerTime()));
                xyMultipleSeriesRenderer.addYTextLabel(DateTimeHelper.getMillisFromTime(answer.getEstimatedAnswerTime()),
                        String.valueOf(answer.getEstimatedAnswerTime()));
                myQuestionsTimeSeries.addAnnotation(String.valueOf(answer.getEstimatedAnswerTime()), i,
                        DateTimeHelper.getMillisFromTime(answer.getEstimatedAnswerTime()));
            }
        }
    }

前もって感謝します!

4

1 に答える 1

7

まず、グラフの値を非表示にします。

renderer.setDisplayChartValues(false);

次に、グラフの値ごとに、注釈を追加します。

renderer.addAnnotation("text", x, y);

Y軸ラベルを表示するには、それらを左に揃えるだけです。

renderer.setYLabelsAlign(Align.LEFT);

または、マージンを増やすことができます。

renderer.setMargins(margins);

ここで入手できる最新のACEビルドを使用していることを確認してください。

于 2013-02-26T10:42:36.190 に答える