شنبه, ۶ ارديبهشت ۱۳۹۳، ۰۵:۰۴ ب.ظ
کشیدن گراف در اندروید... می شود .... نمی شود؟؟
معمولا توی برنامه هایی که کار تحلیل صورت می گیره همیشه نیاز به یک نمودار و یا گراف که بتونه به صورت گرافیک مطالب رو نشون بده حس می شه. چون فهم مطلب در این شرایط خیلی راحت تره!
ولی هر چند فهمش راحت تره برای مخاطب اما بیچاره برنامه نویس! :( نه این که کار سختی باشه نه... یه مقداری دوشواری داره.
مثلا اگه بخواین به صورت Real Time نمودار کشیده بشه یه ذره کار سخت تر میش ه.
یکی از کتابخانه هایی که میشه باهاش توی اندروید نمودار و چارت کشید AChartEngin.
می تونید از اینجا دانلود کنید . و با کلیک راست بر روی پروژه و انتخاب Properties وارد پروژه کنید.
برای کشیدن چارت نیاز به یک View هست که چارت توش نمایش داده می شه از جنس GraphicalView
و چند تا Series برای رسم ستون های x , y و خود نمودار و انتخاب داده و ....
به کد زیر دقت کنید:
import org.achartengine.ChartFactory;
import org.achartengine.GraphicalView;
import org.achartengine.chart.PointStyle;
import org.achartengine.model.XYMultipleSeriesDataset;
import org.achartengine.model.XYSeries;
import org.achartengine.renderer.XYMultipleSeriesRenderer;
import org.achartengine.renderer.XYSeriesRenderer;
import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.view.Menu;
import android.widget.LinearLayout;
public class DrawChart extends Activity {
private GraphicalView mChart;
private XYMultipleSeriesDataset mDataset = new XYMultipleSeriesDataset();
private XYMultipleSeriesRenderer mRenderer = new XYMultipleSeriesRenderer();
private XYSeries mCurrentSeries;
private XYSeriesRenderer mCurrentRenderer;
private void initChart() {
mCurrentSeries = new XYSeries("Sample Data");
mDataset.addSeries(mCurrentSeries);
mCurrentRenderer = new XYSeriesRenderer();
mRenderer.addSeriesRenderer(mCurrentRenderer);
}
private void addSampleData() {
mCurrentSeries.add(1, 2);
mCurrentSeries.add(2, 3);
mCurrentSeries.add(3, 2);
mCurrentSeries.add(4, 5);
mCurrentSeries.add(5, 4);
mCurrentSeries.add(6, 3);
mCurrentSeries.add(7, 5);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test);
mCurrentRenderer.setColor(Color.GREEN);
mCurrentRenderer.setPointStyle(PointStyle.DIAMOND);
mCurrentRenderer.setDisplayChartValues(true);
mCurrentRenderer.setLineWidth(2);
mCurrentRenderer.setFillPoints(true);
}
protected void onResume() {
super.onResume();
LinearLayout layout = (LinearLayout) findViewById(R.id.chart);
if (mChart == null) {
initChart();
addSampleData();
mChart = ChartFactory.getCubeLineChartView(this, mDataset, mRenderer, 0.3f);
layout.addView(mChart);
} else {
mChart.repaint();
}
در کد بالا می بینید که برای ستون ها و ست کردن داده ها و همچنین خطوط نمودار که با گرفتن داده ها به وجود می آید Series جدا و مرتبط تعریف کردیم.
mRender می تواند تمام اطلاعات مربوط به ستون ها از جمله شماره گذاری آنها و مقدار دهی کردن، نوشتن نام هر ستون ، و... بپذیرد.
mCurrentRender هم تمام خصوصیات مربوط به نمودار را می پذیرد.
البته با استفاده از این کتابخانه می توان انواع نمودار را رسم کرد.
برای اطلاعات بیشتر به لینک زیر سر بزنید: