首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何利用阿查滕根用条形图标注y轴的椭圆尺寸

如何利用阿查滕根用条形图标注y轴的椭圆尺寸
EN

Stack Overflow用户
提问于 2013-03-19 06:17:19
回答 2查看 1.1K关注 0票数 2

我是非常新的android开发人员,特别是图形。现在,我正在使用AchartEngine库创建以下图形,但我有以下问题:

Q-1.我想用固定宽度显示左边的标签,用省略号显示剩余的内容。

Q-2当我要改变方向从纵向到景观,图形是显示像下面的第二个图像。如何为图形设置最佳布局?

Q-3如何在X轴上设置0 1 2 3.10?

我为这个图表编写了以下代码:

createLayoutMethod():

用于创建图形布局的/** /

代码语言:javascript
复制
@SuppressWarnings("deprecation")
private void createGraphLayout() {
    // TODO Auto-generated method stub
    /** Initialixation for Graph */
    /** objext of dataset which is put on Graph*/
    dataset = new XYMultipleSeriesDataset();
    series = new CategorySeries("Number of Customer");


    renderer = new XYSeriesRenderer();
    //renderer.setColor(Color.rgb(0, 168, 240));

    mRenderer = new XYMultipleSeriesRenderer();

    /** Setting for Renderer **/
    mRenderer.setLabelsColor(Color.BLACK);
    mRenderer.setBackgroundColor(Color.WHITE);
    mRenderer.setOrientation(Orientation.VERTICAL);
    mRenderer.setClickEnabled(true);
    mRenderer.setLegendTextSize(15);
    mRenderer.setLabelsTextSize(13);
    mRenderer.setApplyBackgroundColor(true);
    mRenderer.setMargins(new int[] {10,10,200,10});

    mRenderer.setMarginsColor(Color.WHITE);
    mRenderer.setInScroll(true);

    mRenderer.setPanEnabled(true, false);
    mRenderer.setScale(1);
    mRenderer.setXLabelsAlign(Align.RIGHT);         // alignment of label x
    mRenderer.setXAxisMax(offer.length());
    mRenderer.setYLabelsAlign(Align.CENTER);        // alignment of label y
    mRenderer.setXLabelsColor(Color.BLACK);         // color of label x
    mRenderer.setYLabelsColor(0, Color.BLACK);      // color of label y

    mRenderer.setLegendHeight(60);
    mRenderer.setDisplayChartValues(true);

    mRenderer.setYAxisMax(offer.length());

    mRenderer.addSeriesRenderer(renderer);

}

放在图上的JSON数据的putDataOnGraph():

代码语言:javascript
复制
private void putDataOnGraph() {
        // TODO Auto-generated method stub
        try {

            for(int forOffer = 0; forOffer < offer.length(); forOffer++)
            {
                no_cust = 0;
                for(int forCust = 0; forCust < customer.length(); forCust++)
                {
                    if(offer.getJSONObject(forOffer).getInt("id") == customer.getJSONObject(forCust).getInt("offerId") && customer.getJSONObject(forCust).getInt("status") == 1)
                        no_cust = no_cust+1;
                }

                /** Check for x-axis maximum than customer **/
                maxX = no_cust > maxX ? no_cust : maxX;

                mRenderer.setXLabels(0);
                mRenderer.addXTextLabel(forOffer+1,offer.getJSONObject(forOffer).getString("offerTitle"));


                //Log.d("msg", ""+offer.getJSONObject(forOffer).getString("offerTitle") +" : "+no_cust);
                //Log.d("msg", ""+maxX);
                series.add(no_cust);
            }
            mRenderer.setYAxisMax(maxX);
            dataset.addSeries(series.toXYSeries());


        } catch (JSONException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

图形图像(肖像):

图形图像(景观):

你的帮助将不胜感激。

预先谢谢.

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-26 08:05:31

对于Q1,您将不得不计算标签宽度(以像素为单位),并将其添加到所需宽度的大小。AChartEngine不是为你这么做的。

票数 1
EN

Stack Overflow用户

发布于 2013-03-26 10:08:28

代码语言:javascript
复制
/** For creating lable, display 10 char if length is > 10 **/

// getting String from JSON
lable = offer.getJSONObject(forOffer).getString("offerTitle");

//if string length is grater than 10 then display only first 10 char
if(lable.length() > 10)
{
    lable = lable.substring(0, 9);
}

mRenderer.addXTextLabel(forOffer+1,lable);

当用户单击时,我已经在Toast中显示了全文。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15492702

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档