如何在Achartengine中设置X轴标签的值

5
实际上,在我的应用程序中,我使用了achartEngine创建了一个图表。在x轴上,我最初显示的是1到31的值。现在,有没有可能显示类似于1-03-20122-03-20123-03-2012,等等,一直到当前月份的最后一天,并且当它达到当前月份的最后一天即31-03-2012时,之后显示的值应该是1-04-20122-04-2012等等。我在显示像1、2、3、4、5这样的值时使用的代码如下所示。有人可以帮我解决这个问题吗?

图表的代码

 renderer = new XYMultipleSeriesRenderer(2);        
    int length = colors.length;     
    for (int i = 0; i < length; i++) 
    {
        XYSeriesRenderer r = new XYSeriesRenderer();
        r.setColor(colors[i]);
        r.setPointStyle(styles[i]);
        renderer.addSeriesRenderer(r);
    }
    
    int rendererLength = renderer.getSeriesRendererCount();
    for (int i = 0; i < rendererLength; i++) 
    {
      ((XYSeriesRenderer) renderer.getSeriesRendererAt(i)).setFillPoints(true);
    }               
    renderer.setAxisTitleTextSize(12);
    renderer.setChartTitleTextSize(12);
    renderer.setLabelsTextSize(10);
    renderer.setLegendTextSize(12);
    renderer.setPointSize(5f);
    
    renderer.setApplyBackgroundColor(true);
    renderer.setBackgroundColor(Color.parseColor("#F5F5F5"));
    renderer.setMarginsColor(Color.parseColor("#F5F5F5"));
    
    renderer.setChartTitle("Weight / Temperature");
    renderer.setXLabels(20);
    renderer.setXTitle(sdFormatter.format(currentDate));        
    renderer.setXAxisMin(1);
    renderer.setXAxisMax(nMaxDay);
    renderer.setXLabelsAlign(Align.CENTER);
                
    renderer.setYLabels(10);  
    renderer.setYTitle("Weight", 0);
    renderer.setYTitle("Temperature", 1);
    renderer.setYAxisMin(10, 0);
    renderer.setYAxisMax(90, 0);
    renderer.setYAxisMin(10, 1);
    renderer.setYAxisMax(90, 1);
    renderer.setYAxisAlign(Align.LEFT, 0);
    renderer.setYAxisAlign(Align.RIGHT, 1);
    renderer.setYLabelsAlign(Align.LEFT, 0);
    renderer.setYLabelsAlign(Align.RIGHT, 1);
    
    renderer.setAxesColor(Color.LTGRAY);
    renderer.setLabelsColor(Color.parseColor("#5f5f5f"));          
    renderer.setShowGrid(true);
    renderer.setGridColor(Color.GRAY);

截图 在此输入图片描述


你在AchartEngineDemo中使用了哪个类? - Abhi
XYMultipleSeriesRenderer(此对象包含图形属性,如颜色) - AndroidDev
我使用了achartengine-0.7.0 .jar,然后按照文档中建议的代码进行了操作。 - AndroidDev
你看到运行项目了对吧?它会显示一个带有几个选项的列表,你从这个列表中选择了哪一个? - Abhi
+1,因为你的代码帮助我找出了为什么我看不到标签的原因 ;) - Tyler
显示剩余3条评论
2个回答

13
使用Demo中的AverageTemperatureChart类。
setChartSettings(renderer, "Average temperature", "Month", "Temperature", 0.5, 5.5, 0, 4,
        Color.LTGRAY, Color.LTGRAY);

然后像这样更改并检查更改

 for (int i = 0; i < titles.length; i++) 
    {
      x.add(new double[] { 1, 2, 3, 4 });
       }

为了演示,添加了四个。

并通过renderer.addTextLabel();添加标签。

例如:

String[] date={"1-3-2012","1-4-2012","1-5-2012","1-6-2012"}; 
for (int i = 0; i < date.length; i++) 
    { 

    renderer.addTextLabel(i+1, date[i]);
    }
    renderer.setXLabelsAlign(Align.CENTER);
    renderer.setXLabels(0);

难道没有 CustomLabelFormatter 或类似的东西可以让你动态地生成标签吗?这个库真是太麻烦了... - hotzen

4
除了Abhi的回答之外,如果您想为X标签添加网格,请添加以下行:
renderer.setShowCustomTextGrid(true);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接