【问题标题】:how to ellipsize label of y-axis with bar chart using achartengine如何使用 achartengine 用条形图椭圆化 y 轴的标签
【发布时间】:2013-03-19 06:17:19
【问题描述】:

我对 Android Developer 特别是 Graph 非常陌生。现在我正在使用 AchartEngine 库创建以下图表,但我有以下问题:

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

Q-2 当我要将方向从纵向更改为横向时,图形显示如下第二张图像。如何设置图表的最佳布局?

Q-3 X轴如何设置0 1 2 3...10?

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

createLayoutMethod():

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

@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);

}

putDataOnGraph(): 用于 JSON DATA 放在图上:

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();
        }
    }

图形图像(纵向):

图表图像(横向):

您的帮助将不胜感激。

提前致谢....

【问题讨论】:

  • 我建议你写一些较短的问题,而不是一个包含大量信息的大问题。
  • 对不起@Dan 但是如果你有请给一些解决方案...
  • 嘿@Dan 我已经为 android 使用过 achartengine,但它可能无法在 Android 4.0.1 中运行。有什么解决办法吗?
  • 我有准时问题的解决方案,而不是大问题。
  • AChartEngine 确实适用于 Android 4.x。

标签: android achartengine android-graphview


【解决方案1】:

对于第一季度,您必须以像素为单位计算标签宽度,并仅添加适合您所需宽度的宽度。 AChartEngine 不会为您执行此操作。

【讨论】:

    【解决方案2】:
    /** 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 时,我已在 Toast 中显示全文

    【讨论】:

    • 不,丹,你的答案是最好的。好的。
    • @Dan pratik butani 是诚实的人,他想结交朋友
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-21
    • 1970-01-01
    相关资源
    最近更新 更多