【问题标题】:AchartEngine annotationsAchartEngine 注释
【发布时间】:2013-01-20 23:51:32
【问题描述】:

在我看到的所有地方,我能找到的唯一信息是通过以下代码添加它们

series.addAnnotation("Hello!!", 1, 1);

但是,当我在我的代码中尝试它时(使用正确的系列名称),我收到一条错误消息,指出不支持 addAnnotation。有人可以帮我解决这个问题吗?谢谢!

【问题讨论】:

  • 我确实有最新版本的 achartengine,但是,我的图表中没有 XYseries。所以,我不知道在哪里添加注释代码:/
  • ...贴在下面,谢谢!

标签: android annotations achartengine


【解决方案1】:

您必须下载该库的最新版本。例如,从here 获取夜间构建。

在您的代码中,将最后一行(返回图表视图的那一行)替换为:

XYMultipleSeriesDataset dataset = buildBarDataset(titles, values);
XYSeries series = dataset.getSeriesAt(0);
series.addAnnotation("Vacation", 6, 30);
return ChartFactory.getBarChartView(context, dataset, renderer, Type.STACKED);

【讨论】:

  • 它工作!非常感谢,我真的很感激……你就是那个人。您不知道是否可以更改注释颜色或大小,对吗?
  • @JP409 可能有点晚了,但是你可以使用 1.2.0 来设置注释格式,见this
  • 除非有一个点的 X 值至少相同,否则注释是否不起作用?还是这只是一个 TimeSeries 约束?
【解决方案2】:

这是代码...

public View getView(Context context) {

    String[] titles = new String[] { "2008", "2007" };
    List<double[]> values = new ArrayList<double[]>();
    values.add(new double[] { 240, 210, 60, 40 });
    values.add(new double[] { htmlHelper.grec, htmlHelper.gwhite, htmlHelper.gim, htmlHelper.gfit });
    int[] colors = new int[] { Color.rgb(255, 255, 255),
            Color.rgb(25, 25, 112) };
    XYMultipleSeriesRenderer renderer = buildBarRenderer(colors);

    switch (context.getResources().getDisplayMetrics().densityDpi) {

    /* Done*/
    case DisplayMetrics.DENSITY_XHIGH:
        renderer.setAxisTitleTextSize(29);
        renderer.setChartTitleTextSize(60);
        renderer.setLabelsTextSize(29);
        renderer.setLegendTextSize(50);
        renderer.setChartValuesTextSize(40);
        break;

    /*done*/
    case DisplayMetrics.DENSITY_HIGH:
        renderer.setAxisTitleTextSize(15);
        renderer.setChartTitleTextSize(47);
        renderer.setLabelsTextSize(19);
        renderer.setLegendTextSize(1);
        renderer.setChartValuesTextSize(40);
        break;

    case DisplayMetrics.DENSITY_LOW:
        renderer.setAxisTitleTextSize(24);
        renderer.setChartTitleTextSize(25);
        renderer.setLabelsTextSize(9);
        renderer.setLegendTextSize(10);
        renderer.setChartValuesTextSize(20);
        break;

    default:
        renderer.setAxisTitleTextSize(39);
        renderer.setChartTitleTextSize(35);
        renderer.setLabelsTextSize(20);
        renderer.setLegendTextSize(2);
        renderer.setChartValuesTextSize(40);
        break;
    }

    setChartSettings(renderer, "Gym Attendance", "", "", 0.5, 12.5, 0,
            24000, Color.BLACK, Color.BLACK);
    renderer.getSeriesRendererAt(0).setDisplayChartValues(false);
    renderer.getSeriesRendererAt(1).setDisplayChartValues(true);
    renderer.setShowLegend(false);
    renderer.setMargins(new int[] { 80, 10, 60, 10 });
    renderer.addXTextLabel(1, "Rec. Hall" + "\n" + ce);
    renderer.addXTextLabel(2, "White" + "\n" + "Building" + "\n"
            + wh);
    renderer.addXTextLabel(3, "IM" + "\n" + "Building" + "\n" + imm);
    renderer.addXTextLabel(4, "Fitness Loft" + "\n" + fi);
    renderer.setXLabelsColor(Color.rgb(0, 0, 0));
    renderer.setYLabelsColor(0, Color.BLACK);
    renderer.setYLabels(10);
    renderer.setXLabels(0);
    renderer.setXAxisMin(0);
    renderer.setXAxisMax(5);
    renderer.setYAxisMin(0);
    renderer.setYAxisMax(250);
    renderer.setAxesColor(Color.BLACK);
    renderer.setXLabelsAlign(Align.CENTER);
    renderer.setYLabelsAlign(Align.LEFT);
    renderer.setPanEnabled(false, false);
    // renderer.setZoomEnabled(false);
    renderer.setZoomRate(1.1f);
    renderer.setBarSpacing(0.5f);
    renderer.setApplyBackgroundColor(true);
    renderer.getSeriesRendererAt(1).setGradientEnabled(true);
    renderer.getSeriesRendererAt(1).setGradientStart(0,
            Color.rgb(192, 192, 192));
    renderer.getSeriesRendererAt(1).setGradientStop(45,
            Color.rgb(25, 25, 112));
    renderer.setBackgroundColor(Color.rgb(220, 220, 220));
    renderer.setMarginsColor(Color.rgb(248, 248, 255));
    renderer.setOrientation(Orientation.HORIZONTAL);
    renderer.setZoomEnabled(false, false);

    return ChartFactory.getBarChartView(context,
            buildBarDataset(titles, values), renderer, Type.STACKED);

}

非常感谢您的观看!起初,我在带有文本视图的框架布局中使用了图形,但是一旦我开始在不同的屏幕尺寸和像素密度上进行测试,它就不起作用了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-04
    • 2011-12-07
    • 1970-01-01
    • 1970-01-01
    • 2014-01-15
    • 2013-03-11
    • 2013-05-23
    • 2015-09-19
    相关资源
    最近更新 更多