AChartEngine畫折線圖 的屬性設定(個人精華版)
個人觀點:如果用第三方的結構,只能做出來一般的圖,別指望能夠多麼炫酷和隨心所欲。除非你看原始碼。看原始碼很重要。
AChartEngine是為Android應用開發而設計的繪圖工具庫,可用於繪製各種圖表,下載地址:
http://code.google.com/p/achartengine/
你可以下載到最新的jar包,demo,以及api說明文件。
同樣,在source欄,你可以用svn下載最新的原始碼, svn命令是
svn checkouthttp://achartengine.googlecode.com/svn/trunk/ achartengine-read-only
最基本的屬性:
1. 修改背景色或設定背景圖片 背景色設定需要設定兩項:setMarginsColor(設定四邊顏色)以及setBackgroundColor(設定中間背景色) 設定背景圖片: http://blog.csdn.net/kmyhy/article/details/6590294 2. 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.5 10. renderer.setXAxisMax(5.5);//設定X軸的最大值為5 11. renderer.setYAxisMin(0);//設定Y軸的最小值為0 12. renderer.setYAxisMax(500);//設定Y軸最大值為500 13. 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);解決,來自於@gupengno1
29.renderer.setGridColor();//設定網格顏色
30.renderer.setAxesColor();//設定座標軸顏色
二、這一篇更加誠懇
achartengine.achartengine使用起來還算好,就是修改樣式很煩.下面就分享下開發經驗吧.
所有的chart都分兩塊,一塊是Renderer(如XYMultipleSeriesRenderer,我的理解是,這個renderer為檢視render的模板,就是你想用什麼圖示,一個圖圖表基本分2層,這個是最下面一層),一塊是Dataset(如XYMultipleSeriesDataset,用於對檢視數值的處理).
這邊我就拿折線圖舉例吧.
首先需要
XYMultipleSeriesRenderer mRenderer = new XYMultipleSeriesRenderer();//建立你需要的圖表最下面的圖層
XYSeriesRenderer seriesRenderer = new XYSeriesRenderer();//建立你需要在圖層上顯示的具體內容的圖層
mRenderer.addSeriesRenderer(seriesRenderer);//新增進去
XYMultipleSeriesDataset mDataset = new XYMultipleSeriesDataset()//建立資料層
XYSeries series = new XYSeries("標題");//建立具體的資料層
series .add(x, y);//新增資料,一般都是for迴圈資料不斷操作這一步新增的
mDataset.addSeries(series);
然後呼叫ChartFactory.getLineChartIntent(context, mDataset, mRenderer),得到一個Intent型別的intent,startActivity(intent)就能得到圖表了.這邊需要在AndroidManifest.xml加上<activity
android:name="org.achartengine.GraphicalActivity" />.這邊是跳介面檢視圖表,是全屏的.ChartFactory可以得到很多檢視,ChartFactory.getBarChartIntent(context, dataset, renderer, type, activityTitle)就可以得到一個柱狀圖.以此類推啊.
有時候專案中開發,需要在介面的某一塊展示檢視,這時候我們可以通過 ChartFactory.getLineChartView(context, mDataset, mRenderer)得到一個GraphicalView型別的檢視.(這邊就不要需要在AndroidManifest.xml加上<activity
android:name="org.achartengine.GraphicalActivity" />.)
其實圖表的使用流程就是這樣.但要做一個自己想要的檢視,就需要設定mRenderer 的樣式,seriesRenderer 的樣式.
mRenderer樣式設定:
mRenderer.setShowAxes(false);//設定是否需要顯示座標軸
mRenderer.setXAxisMin(1.3d);//設定X軸最小值
mRenderer.setXAxisMax(10d);//設定X軸最大值
mRenderer.setYAxisMin(0d); //設定Y軸最小值
mRenderer.setYAxisMax(maxY + maxY / 6); // 設定Y軸最大值
mRenderer.setChartTitleTextSize(0);//設定圖表標題字型大小,我這邊設定0是把標題隱藏掉
mRenderer.setYLabels(7);//設定Y軸標籤數
mRenderer.setExternalZoomEnabled(true);//設定是否可以縮放
mRenderer.setZoomInLimitY(maxY + maxY / 6);//設定Y軸最大縮放限
mRenderer.setZoomInLimitX(5);//設定X軸最大縮放限
mRenderer.setPanEnabled(true, false);//設定滑動,這邊是橫向可以滑動,豎向不可滑動
mRenderer.setXLabels(XLabel.size() - 1);//設定X標籤數量
mRenderer.setXLabelsPadding(200);//設定標籤的間距
mRenderer.setXLabelsAngle(-45f);//設定標籤傾斜度
for (int i = 0; i < XLabel.size(); i++)
{
mRenderer.addXTextLabel(i, XLabel.get(i));//這邊是自定義自己的標籤,顯示自己想要的X軸的標籤,需要注意的是需要setXLabels(0)放在標籤重疊(就是自定義的標籤與圖表預設的標籤)
}
mRenderer.setPanLimits(new double[] {0, (XLabel.size()) * 2, 0, maxY});//設定滑動範圍,這邊我很好奇他的單位,一直有點小問題
mRenderer.setAxesColor(context.getResources().getColor(R.color.text_hui));//設定數軸的顏色
mRenderer.setGridColor(context.getResources().getColor(R.color.text_hui999999)); //設定網格的顏色
mRenderer.setShowGrid(true); /設定是否需要顯示網格
mRenderer.setYTitle(label);//設定Y軸標題
mRenderer.setLabelsColor(Color.BLACK);//設定標籤顏色
mRenderer.setYLabelsAlign(Align.LEFT, 0);//設定標籤居Y軸的方向
mRenderer.setAxisTitleTextSize(20);
mRenderer.setYLabelsColor(0, context.getResources().getColor(R.color.text_hui)); mRenderer.setLabelsTextSize(14);
mRenderer.setZoomLimits(new double[] {0, maxX * 5, 0, maxY + maxY / 6});//設定縮放限制,setZoomInLimitY等一樣
mRenderer.setXLabelsColor(context.getResources().getColor(R.color.text_hui));
mRenderer.setMarginsColor(context.getResources().getColor(R.color.chart_bg));//設定畫布距數軸之間的顏色
mRenderer.setZoomRate(1.4f);//放大幾倍
seriesRenderer設定部分:
seriesRenderer.setFillBelowLine(false); // 設定折線下方是否填充
seriesRenderer.setFillBelowLineColor(context.getResources().getColor(R.color.chart_content_color));//填充色
seriesRenderer.setPointStyle(PointStyle.CIRCLE); /折線點的樣式
seriesRenderer.setPointStrokeWidth(5f);//折線點的大小
seriesRenderer.setDisplayChartValues(true);//設定顯示折線的點對應的值
seriesRenderer.setChartValuesTextSize(16);
seriesRenderer.setColor(Color.BLUE);
seriesRenderer.setChartValuesSpacing(7);
seriesRenderer.setLineWidth(3.0f)//折線寬度
seriesRenderer.setDisplayChartValuesDistance(5);///折線點的值距離折線點的距離
seriesRenderer.setChartValuesTextAlign(Align.RIGHT);
DecimalFormat df1 = new DecimalFormat(".00");
seriesRenderer.setChartValuesFormat(df1);//設定折線點的值的格式,顯示小數點後2位
1.顯示折線上點的數值
render.setDisplayChartValues(true) ;2.設定 線的粗細?
XYSeriesRenderer.setLineWidth(float lineWidth)方法
3、設定圖表中曲線本身的樣式,包括顏色、點的大小以及線的粗細等
XYSeriesRenderer r = new XYSeriesRenderer();
r.setColor(color);
r.setPointStyle(style);
r.setFillPoints(fill);//點是充滿的
r.setLineWidth(3);
renderer.addSeriesRenderer(r);
4、
雖然這個帖子很久了 但是作為一個程式設計師 也許其他人也會找到這裡 我把找了2天才找到的解決方法貼上來 //renderer.setLabelsColor(Color.RED);//座標標題顏色 不是刻度 renderer.setXLabelsColor(Color.BLACK);//設定X軸刻度顏色 renderer.setYLabelsColor(0, Color.BLACK);//設定Y軸刻度顏色 |
5、
你好,有下面兩種方法可以修改,請參考。 1、需要修改org.achartengine.chart.ScatterChart類中的drawSeries方法,在畫點之前對畫筆的顏色進行設定,新增如下程式碼: paint.setColor(Color.WHITE);//可以換成你想要的顏色 2、為了可擴充套件性考慮,可以新增設定點顏色的介面。修改org.achartengine.renderer.XYSeriesRenderer類,在其中新增一個屬性pointColor,設定一個預設值,並新增set、get方法。這樣可以在畫圖前呼叫setPointColor方法設定點的顏色,在ScatterChart類中繪製點之前呼叫getPointColor方法獲取點的顏色。