Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java AChartEngine Y轴自定义标签区域边距和图表值为字符串?_Java_Android_Achartengine - Fatal编程技术网

Java AChartEngine Y轴自定义标签区域边距和图表值为字符串?

Java AChartEngine Y轴自定义标签区域边距和图表值为字符串?,java,android,achartengine,Java,Android,Achartengine,我已经创建了一个图表,显示测试期间回答的问题(X)/时间(Y)。 有关详细信息,请参见第一个问题 但现在我需要正确显示图表项目符号值,此时显示毫秒值,但我需要显示自定义hh:mm:ss值,就像我对Y轴标签所做的那样,并以某种方式自定义Y轴区域以正确显示完整值。 下面是图表现在的屏幕截图 [编辑] 在丹的帮助下,我几乎得到了我想要的。这只是个小问题。 在下面的屏幕截图中查看当前显示的图表值。 我从AChartEngine存储库更新到1.1.0。 addNotations位于TimeSeries对

我已经创建了一个图表,显示测试期间回答的问题(X)/时间(Y)。 有关详细信息,请参见第一个问题

但现在我需要正确显示图表项目符号值,此时显示毫秒值,但我需要显示自定义hh:mm:ss值,就像我对Y轴标签所做的那样,并以某种方式自定义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()));
            }
        }
    }

提前谢谢你

首先,隐藏图表值:

renderer.setDisplayChartValues(false);
然后,为每个图表值添加注释:

renderer.addAnnotation("text", x, y);
要使Y轴标签可见,只需将其向左对齐即可:

renderer.setYLabelsAlign(Align.LEFT);
或者您可以增加利润:

renderer.setMargins(margins);

确保您使用的是可用的最新ACE版本。

谢谢Dan,就要到了,请检查我编辑的问题,了解我对图表值的最后一个问题,它们不在应有的位置,这是有原因的!不要使用TimeSeries,使用XYSeries。同样的问题,实际上没有任何改变!很难从你发布的3行代码中猜出发生了什么。我在这个链接中上传了整个fragment类