Android 直條圖

來源:互聯網
上載者:User

標籤:

直條圖 用的是AChartEngine

需要引用achartengine-1.0.0.jar包。:http://download.csdn.net/detail/yaohucaizi/5128672。具體代碼如下:

public class XYMultipleActivity extends Activity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_xymultiple);                //初始資料           String[] titles = new String[] { "2008", "2007" };            List<double[]> values = new ArrayList<double[]>();            values.add(new double[] { 14230, 12300, 14240, 15244, 15900, 19200, 22030, 21200, 19500, 15500, 12600, 14000 });            values.add(new double[] { 5230, 7300, 9240, 10540, 7900, 9200, 12030, 11200, 9500, 10500, 11600, 13500 });            int[] colors = new int[] { Color.BLUE, Color.CYAN };                    //圖形風格                XYMultipleSeriesRenderer renderer = buildBarRenderer(colors);            setChartSettings(renderer, "Monthly sales in the last 2 years", "Month", "Units sold",                    0.5, 12.5, 0, 24000, Color.GRAY, Color.LTGRAY);            renderer.getSeriesRendererAt(0).setDisplayChartValues(true);//設定是否在柱體上方顯示值            renderer.getSeriesRendererAt(1).setDisplayChartValues(true);            renderer.setXLabels(12);//設定X軸顯示的刻度標籤的個數            renderer.setYLabels(10);//設定Y軸顯示的刻度標籤的個數            renderer.setXLabelsAlign(Align.LEFT);//設定刻度標記與X軸之間的相對位置關係            renderer.setYLabelsAlign(Align.LEFT);//設定刻度標記與Y軸之間的相對位置關係            renderer.setPanEnabled(true, false);            renderer.setZoomEnabled(false);            renderer.setZoomRate(1.1f);//放大倍數            renderer.setBarSpacing(0.5f);//兩柱形間的距離                                    View view = ChartFactory.getBarChartView(this, buildBarDataset(titles, values), renderer, Type.DEFAULT); //Type.STACKED            view.setBackgroundColor(Color.BLACK);            setContentView(view);    }     protected XYMultipleSeriesDataset buildBarDataset(String[] titles, List<double[]> values) {            XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();            int length = titles.length;            for (int i = 0; i < length; i++) {                CategorySeries series = new CategorySeries(titles[i]);                double[] v = values.get(i);                int seriesLength = v.length;                for (int k = 0; k < seriesLength; k++) {                    series.add(v[k]);                }                dataset.addSeries(series.toXYSeries());            }            return dataset;        }        protected XYMultipleSeriesRenderer buildBarRenderer(int[] colors) {            XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer();            renderer.setAxisTitleTextSize(16);// 設定座標軸標題文字大小            renderer.setChartTitleTextSize(20);// 設定圖表標題文字大小            renderer.setLabelsTextSize(15);// 設定軸標籤文字大小            renderer.setLegendTextSize(15); // 設定圖例文字大小            int length = colors.length;            for (int i = 0; i < length; i++) {                SimpleSeriesRenderer r = new SimpleSeriesRenderer();                r.setColor(colors[i]);                renderer.addSeriesRenderer(r);            }            return renderer;        }               protected void setChartSettings(XYMultipleSeriesRenderer renderer, String title,                 String xTitle, String yTitle, double xMin, double xMax, double yMin,                 double yMax, int axesColor, int labelsColor) {            renderer.setChartTitle(title);//設定表徵圖名稱            renderer.setXTitle(xTitle);//設定X軸名稱            renderer.setYTitle(yTitle);//設定Y軸名稱            renderer.setXAxisMin(xMin);//設定X軸的最小值            renderer.setXAxisMax(xMax);//設定X軸的最大值            renderer.setYAxisMin(yMin);//設定Y軸的最小值            renderer.setYAxisMax(yMax);//設定Y軸的最大值            renderer.setAxesColor(axesColor);//設定座標軸顏色            renderer.setLabelsColor(labelsColor);        }    }

直條圖的主要風格設定:

1.    修改背景色或設定背景圖片背景色設定需要設定兩項:setMarginsColor(設定四邊顏色)以及setBackgroundColor(設定中間背景色)設定背景圖片:        http://blog.csdn.net/kmyhy/article/details/65902942.    setAxisTitleTextSize(16);// 設定座標軸標題文字大小3.    setChartTitleTextSize(20); // 設定圖表標題文字大小4.    setLabelsTextSize(15); // 設定軸標籤文字大小5.    setLegendTextSize(15); // 設定圖例文字大小6.    renderer.setChartTitle( "個人收支表");//設定柱圖名稱7.    renderer.setXTitle( "名單" );//設定X軸名稱8.    renderer.setYTitle( "金額" );//設定Y軸名稱9.    renderer.setXAxisMin(0.5);//設定X軸的最小值為0.510.  renderer.setXAxisMax(5.5);//設定X軸的最大值為511.  renderer.setYAxisMin(0);//設定Y軸的最小值為012.  renderer.setYAxisMax(500);//設定Y軸最大值為50013.  renderer.setDisplayChartValues(true);//設定是否在柱體上方顯示值14.  renderer.setShowGrid(true);//設定是否在圖表中顯示網格15.  renderer.setXLabels(0);//設定X軸顯示的刻度標籤的個數16.  如果想要在X軸顯示自訂的標籤,那麼首先要設定renderer.setXLabels(0);其次我們要renderer.addTextLabel()迴圈添加17.  renderer.setXLabelsAlign(Align.RIGHT);//設定刻度標記與X軸之間的相對位置關係18.  renderer.setYLabelsAlign(Align.RIGHT);//設定刻度標記與Y軸之間的相對位置關係19.  renderer.setZoomButtonsVisible(true);//設定可以縮放20.  renderer.setPanLimits(newdouble[] { 0, 20, 0, 140 });//設定拉動的範圍21.  renderer.setZoomLimits(newdouble[] { 0.5, 20, 1, 150 });//設定縮放的範圍22.  renderer.setRange(newdouble[]{0d, 5d, 0d, 100d}); //設定chart的視圖範圍23.  renderer.setFitLegend(true);// 調整合適的位置24.  renderer.setClickEnabled(true)//設定是否可以滑動及放大縮小;25.  Dataset和Render參數介紹:       http://blog.csdn.net/lk_blog/article/details/764566126.ChartView.repaint();是重新繪圖的命令27.關於AChartEngine的點擊事件,雙擊事件,滑動事件均可以用自訂事件解決,但是需要注意的是先設定renderer.setClickEnabled(false);28.若是添加圖形後變形,可以設定 renderer.setInScroll(true);29.renderer.setGridColor();//設定網格顏色30.renderer.setAxesColor();//設定座標軸顏色

 

Android 直條圖

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.