رسم المخططات البيانية
بارك الله يك اخي
فعلا دروس رائعة و كنت في حاجة اليها
فعلا سيبقى هدا الموضوع مرجعا عربيا لكل مسلم
جازاك الله خيرا عنا كل الجزاء
البرمجة ...البداية و النهاية
شكرا لكل الأخوة على ردودهم المشجعة على كل حال انا حاليا مشغول قليلا ولكن وعد مني انني ساتابع شرح دروس جديدة قريبا ان شاء الله
إذا نظــرتَ نيـوب اللـّيـثِ بـارزةً فـلا تظــنَنَ أَنَّ اللـّيـــثَ يبْتسـِـــمُ
رسم المخططات البيانية بواسطة الجافا
كتاب تحليل وتصميم نظم المعلومات
السلام عليكم
سنعود بعد فترة غياب الى اكمال هذه السلسلة من الدروس لكنني سأقوم بشرح الـ Polar Chart قبل غيرها من الدروس واليوم سنبدأ بدرس بسيط عن هذا الرسم المهم جدا جدا
فلنبدأ على بركة الله
كالعادة في الدروس السابقة نبدأ بالخطوات المعتادة
1- create a dataset
// create a dataset...
XYSeries series = new XYSeries("Average Size");
series.add(45, 40.0);
series.add(135.0, 45.0);
series.add(270.0, 30.0);
XYSeriesCollection xyDataset = new XYSeriesCollection(series);هنا وضعنا احداثيات النقاط التي سيتم رسمها بشكل قطبي (حيث تكون أقطاب هذه النقاط محددة حسب الاحداثيات الواردة ضمن مدار دائري)
في البداية سيتم تقسيم الدائرة هنا الى قطاعات كل قطاع درجة الزاوية فيه مقدارها 45 درجة والقيمة الكلية للدائرة كما هو معروف 360 درجة
الآن سيتم حساب نصف القطر الممثل للدائرة حسب القيم الواردة الينا حيث لدينا القيم المعطاة حسب الأمر (series.add(A, B كل نقطة من هذه النقاط سواء كانت A أو B هي المسؤولة عن تحدد مكان النقطة المراد رسمها
حيث أن القيمة A هي المسؤولة عن تحديد مكان النقطة المراد رسمها على أي مقدار الزاوية المراد رسم النقطة بها هل على القطاع ذو الزاوية 40 او على الزاوية 50 او الزاوية 270 وهلكذا طبعا كما قلنا الرسم سيتم على دائرة لانه رسم قطبي
وبما ان أي نقطة ليتم رسمها لابد من تحديد احداثيات ثنائية لها (x,y) فنجن هنا بحاجة للجزء الثاني من الاحداثيات والذي تمثله النقطة B حيث ان القيمة العظمى للنقطة B من النقاط المعطاة تمثل القيمة المعطاة لنصف قطر الدائرة بمعنى نحن لدينا في مثالثا ثلاث نقاط والقيم الخاصة بـ B هي 40 و 45 و 30 وبما ان أكبر هذه القيم هي القيمة 45 فلذلك تكون قيمة نصف القطر الخاص بالدائرة هي 45
نعود الآن للنقطة B حيث هنا كل نقطة سيتم رسمها حسب مقدارها على نصف قطر الدائرة
وبمعنى أخر النقطة الأولى سيتم تحديد مكانها على القطاع ذو الزاوية 45 وعلى مسافة تساوي 40 على نصف قطر الدائرة والنقطة الثانية على القطاع 135 درجة وعلى مسافة 45 على نصف قطر الدائرة(لاحظ انه هذه النقطة مقدارها يساوي مقدار نصف الدائرة لذلك سيتم رسمها على اخر حد من حدود الدائرة) النقطة الثالثة احداثياتها على القطاع ذو الدرجة 270 وعلى القيمة 30 من على طول نصف القطر
أرجو ان تكون هذه النقطة واضحة لانه من دون فهم هذه النقطة لن نستطيع فهم هذا النوع من الرسوم
2- create a chart
//create a chart...
JFreeChart chart = ChartFactory.createPolarChart(
"Polar Chart Demo", // chart title
xyDataset, // data
true, // include legend
true, // tooltips?
false // URLs? );
);أيضا لا جديد في باقي الخطوات فلنعرض الكود كاملا ونرى الرسم الناتج
import java.awt.Dimension;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;
public class PolarChart extends ApplicationFrame {
public PolarChart(String title) {
super(title);
// create a dataset...
XYSeries series = new XYSeries("Average Size");
series.add(45, 40.0);
series.add(135.0, 45.0);
series.add(270.0, 30.0);
XYSeriesCollection xyDataset = new XYSeriesCollection(series);
//create a chart...
JFreeChart chart = ChartFactory.createPolarChart(
"Polar Chart Demo", // chart title
xyDataset, // data
true, // include legend
true, // tooltips?
false // URLs? );
);
// add the chart to a panel...
ChartPanel chartPanel = new ChartPanel(chart, false);
chartPanel.setPreferredSize(new Dimension(800, 570));
setContentPane(chartPanel);
}
/**
* Starting point for the demonstration application.
*
* @param args ignored.
*/
public static void main(final String[] args) {
PolarChart chart = new PolarChart("Polar Chart");
chart.pack();
RefineryUtilities.centerFrameOnScreen(chart);
chart.setVisible(true);
}
}إذا نظــرتَ نيـوب اللـّيـثِ بـارزةً فـلا تظــنَنَ أَنَّ اللـّيـــثَ يبْتسـِـــمُ
رسم المخططات البيانية بواسطة الجافا
كتاب تحليل وتصميم نظم المعلومات
السلام عليكم
اليوم نعود ونكمل مشوارنا مع هذه الدروس وساتكلم اليوم عن نفس موضوع الدرس السابق لكنني سأتوسع فيه وسيكون ليس عن رسم Polar Chart واحد انما عن عدة بيانات داخل المخطط الواحد اي Multi Polar Chart
وللأمانة الموضوع اخذ مني وقت وجهد كبير لانه هذا الموضع لم اجده في أي مرجع أجنبي ولا حتى في أي مثال او كود مشروح وخصوصا الخطوة الاخيرة التي اعتدنا أن نسميها Extras and the modifications
فلنبدأ على بركة الله
1- create a dataset
// create a dataset...
XYSeries series1 = new XYSeries("First");
series1.add(20.0, 45.0);
series1.add(240.0, 25.0);
series1.add(75.0, 50.0);
series1.add(150.0, 35.0);
XYSeries series2 = new XYSeries("Second");
series2.add(100.0, 20.0);
series2.add(300.0, 35.0);
series2.add(140.0, 50.0);
series2.add(66.0, 45.0);
XYSeries series3 = new XYSeries("Third");
series3.add(340.0, 25.0);
series3.add(180.0, 40.0);
series3.add(90.0, 30.0);
series3.add(60.0, 40.0);
XYSeriesCollection xyDataset = new XYSeriesCollection();
xyDataset.addSeries(series1);
xyDataset.addSeries(series2);
xyDataset.addSeries(series3);قمنا بتمثيل ثلاثة سلاسل XYSeries كل واحدة فيها نقاط الاحداثيات المختلفة ليتم رسمها وهي على التوالي First, Second and Third
عن طريق الصنف XYSeriesCollection نقوم بعمل كائن نسميه xyDataset هذا الكائن سيتضمن بيانات النقاط الاحداثية للرسوم الخطية الثلاثة
2- create a chart
// create a chart... JFreeChart chart = ChartFactory.createPolarChart( "MultiPolar Chart Demo", // chart title xyDataset, // data true, // include legend true, // tooltips? false // URLs? ); );
3- add the chart to a panel
// add the chart to a panel... ChartPanel chartPanel = new ChartPanel(chart, false); chartPanel.setPreferredSize(new Dimension(800, 570)); setContentPane(chartPanel);
4- Extras and the modifications وهنا سنقوم بعض الشروحات
وهي الخطوة الأخيرة وكما قلنا مسبقا مرارا وتكرارا انها خطوة اختيارية وتكملية وليست اجبارية انما تتضمن عدة خيارات تمكننا من تغيير بعض الامور في الشكل النهائي من ناحية الشكل وليس من ناحية النتيجة
وقد بذلت محهودا كبيرة في هذه الخطوة لتخرج بالشكل المرضي تماما
أولاً: تحديد لون الخلفية الخارجية
//1- set colors for External background chart.setBackgroundPaint(Color.lightGray);
ثانياً: تحديد لون الخلفية الداخلية
//2- set colors for Internal background PolarPlot plot = (PolarPlot) chart.getPlot(); plot.setBackgroundPaint(Color.white);
ثالثاً. تثبيت وتحديد لون الخطوط داخل الخلفية الداخلية حيث يتم الرسم
//3- set colors for grid lines plot.setRadiusGridlinePaint(Color.gray); // Polar grid lines plot.setAngleGridlinePaint(Color.black); // Sector lines (every sector is 45 degree)
رابعاً: تغيير ألوان الخطوط التي سيتم رسمها
//4 - set colors for renderer DefaultPolarItemRenderer renderer = new DefaultPolarItemRenderer(); renderer.setSeriesPaint(0, Color.cyan);// color of first set of points renderer.setSeriesPaint(1, Color.red);// color of second set of points renderer.setSeriesPaint(2, Color.blue); // color of third set of points plot.setRenderer(renderer);
أما أخيرا اذا أردنا أن نجعل احد او بعض اوكل الـ Polar Chart مملوء أي ان تكون المساحة المرسومة داخلة مصمتة ومملوءة فالسطر التالي يقوم بذلك
renderer.setSeriesFilled(2, true);// to fill the third set of points
حيث قمنا باختيار الـ Polar Chart الثالث ووضعنا الخيار true لدلالة اننا نريد ملئ المساحة التي يمثلها هذا الرسم البياني
الشرح بالرسم للشكل الناتج
و اخيرا الكود كاملا
package XYPlot;
import java.awt.Color;
import java.awt.Dimension;
import org.jfree.chart.*;
import org.jfree.chart.plot.PolarPlot;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.renderer.DefaultPolarItemRenderer;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
public class MultiPolarChart extends ApplicationFrame {
public MultiPolarChart(String title) {
super(title);
// create a dataset...
XYSeries series1 = new XYSeries("First");
series1.add(20.0, 45.0);
series1.add(240.0, 25.0);
series1.add(75.0, 50.0);
series1.add(150.0, 35.0);
XYSeries series2 = new XYSeries("Second");
series2.add(100.0, 20.0);
series2.add(300.0, 35.0);
series2.add(140.0, 50.0);
series2.add(66.0, 45.0);
XYSeries series3 = new XYSeries("Third");
series3.add(340.0, 25.0);
series3.add(180.0, 40.0);
series3.add(90.0, 30.0);
series3.add(60.0, 40.0);
XYSeriesCollection xyDataset = new XYSeriesCollection();
xyDataset.addSeries(series1);
xyDataset.addSeries(series2);
xyDataset.addSeries(series3);
// create a chart...
JFreeChart chart = ChartFactory.createPolarChart(
"MultiPolar Chart Demo", // chart title
xyDataset, // data
true, // include legend
true, // tooltips?
false // URLs? );
);
// add the chart to a panel...
ChartPanel chartPanel = new ChartPanel(chart, false);
chartPanel.setPreferredSize(new Dimension(800, 570));
setContentPane(chartPanel);
// Extras and the modifications...
//1- set colors for External background
chart.setBackgroundPaint(Color.lightGray);
//2- set colors for Internal background
PolarPlot plot = (PolarPlot) chart.getPlot();
plot.setBackgroundPaint(Color.white);
//3- set colors for grid lines
plot.setRadiusGridlinePaint(Color.gray); // Polar grid lines
plot.setAngleGridlinePaint(Color.black); // Sector lines (every sector is 45 degree)
//4 - set colors for renderer
DefaultPolarItemRenderer renderer = new DefaultPolarItemRenderer();
renderer.setSeriesPaint(0, Color.cyan);// color of first set of points
renderer.setSeriesPaint(1, Color.red);// color of second set of points
renderer.setSeriesPaint(2, Color.blue); // color of third set of points
plot.setRenderer(renderer);
renderer.setSeriesFilled(2, true);// to fill the third set of points
}
/**
* Starting point for the demonstration application.
*
* @param args ignored.
*/
public static void main(String[] args) {
MultiPolarChart demo = new MultiPolarChart("MultiPolar Chart Demo");
demo.pack();
RefineryUtilities.centerFrameOnScreen(demo);
demo.setVisible(true);
}
}إذا نظــرتَ نيـوب اللـّيـثِ بـارزةً فـلا تظــنَنَ أَنَّ اللـّيـــثَ يبْتسـِـــمُ
رسم المخططات البيانية بواسطة الجافا
كتاب تحليل وتصميم نظم المعلومات
merci merci merci beaucoup
enfin j'ai trouvé ce que je cherche
حين تنكسر........لن يرممك سوى نفسك
و حين تنهزم ......لن تنصرك سوى نفسك
فقدرتك على الوقوف مرة اخرى ...لايملكها سواك ....فكن اقوى من الدنيا و ظروفها.
و مهما حدث لك ....لا تبكي و لكن ابتسم و دع الحياة تبكي من جبروت ابتسامتك
inasse rahaf كتب:merci merci merci beaucoup
enfin j'ai trouvé ce que je cherche
شكرا على ردك الكريم
لكن يا ريت نتلزم بالردود بلغتنا العربية الجميلة والابتعاد قدر الامكان عن اللغات الأجنبية
إذا نظــرتَ نيـوب اللـّيـثِ بـارزةً فـلا تظــنَنَ أَنَّ اللـّيـــثَ يبْتسـِـــمُ
رسم المخططات البيانية بواسطة الجافا
كتاب تحليل وتصميم نظم المعلومات
السلام عليكم
ممكن استعمال هذه المكتبة لانشاء خرائط
والف تحية وشكرا اخي
khalfallah كتب:السلام عليكم
ممكن استعمال هذه المكتبة لانشاء خرائط
والف تحية وشكرا اخي
ارجو ان توضح مقصدك بمعنى خرائط
إذا نظــرتَ نيـوب اللـّيـثِ بـارزةً فـلا تظــنَنَ أَنَّ اللـّيـــثَ يبْتسـِـــمُ
رسم المخططات البيانية بواسطة الجافا
كتاب تحليل وتصميم نظم المعلومات
اقصد بالخرائط مثلا اقوم بعمل احصاء للسكان مثلا الكثافة وارى توزيعها على الخريطة لبلد ما
والف تحية
khalfallah كتب:اقصد بالخرائط مثلا اقوم بعمل احصاء للسكان مثلا الكثافة وارى توزيعها على الخريطة لبلد ما
والف تحية
طيب اخي الكريم هل من الممكن ان تعطيني مثال متكامل بكل عناصره وبيناته ومعطياته وطلباته وايضا نوع الرسم المطلوب
إذا نظــرتَ نيـوب اللـّيـثِ بـارزةً فـلا تظــنَنَ أَنَّ اللـّيـــثَ يبْتسـِـــمُ
رسم المخططات البيانية بواسطة الجافا
كتاب تحليل وتصميم نظم المعلومات
ماشاء الله يا اخى vector_ever
درس اكثر من رائع جزاك لله خيرا
شوف أستخدمه في مشروع وأطلعك عليه إن شاء الله :)
هل من الممكن اضافة مخطط الـ XY Scatter او XY Charts من فضلك
تماما مثل ما يوجد في الصور :






:lol:
كما أرجو منك ان تشرح لنا كيفية رسم المخططات البيانية 'أي مخطط كان' في الـ Excel مباشرة ، مع امكانية اضافة المعلومات :blush: من خلال الجافا طبعا


مشكور ... وبانتظار الرد :happy:
تم تعديل هذه المشاركة بواسطة المشاكـس5550 في 18 نوفمبر 2012 في 22:33

I am learning from you
it is the programmer eye
المشاكـس5550 كتب:هل من الممكن اضافة مخطط الـ XY Scatter او XY Charts من فضلك
تماما مثل ما يوجد في الصور :
:lol:
كما أرجو منك ان تشرح لنا كيفية رسم المخططات البيانية 'أي مخطط كان' في الـ Excel مباشرة ، مع امكانية اضافة المعلومات :blush: من خلال الجافا طبعا
مشكور ... وبانتظار الرد :happy:
اهلا بك أخي الكريم
صراحة لم افهم سؤالك
هل المقصود هو شرح مخططات XY Scatter ام قصدك كتابة كود لصناعة واجهة فيها هذه المخططات كما في الصورة الأولى من سؤالك اخي الكريم
اما عن طلبك عن دمج هذه المخططات في الـ Excel فو الله انا شخصيا ضعيف جدا في التعامل مع الاكسل ولا اعرف ان كان هذا ممكن
لكن ان شاء الله ساحاول البحث والدراسة لارى ان كان هذا ممكن
وفقك الله
إذا نظــرتَ نيـوب اللـّيـثِ بـارزةً فـلا تظــنَنَ أَنَّ اللـّيـــثَ يبْتسـِـــمُ
رسم المخططات البيانية بواسطة الجافا
كتاب تحليل وتصميم نظم المعلومات
اقتباسهل المقصود هو شرح مخططات XY Scatter ام قصدك كتابة كود لصناعة واجهة فيها هذه المخططات كما في الصورة الأولى من سؤالك اخي الكريم
أقصد كود انشاء هذه المخططات من خلال الجافا فقط :lol: ، آسف اذا كان طلبي غير مفهوم :happy:
شكرا

I am learning from you
it is the programmer eye
المشاكـس5550 كتب:أقصد كود انشاء هذه المخططات من خلال الجافا فقط :lol: ، آسف اذا كان طلبي غير مفهوم :happy:
شكرا
أهلا اخي حياك الله واعذرني اخي للمرة الثانية لا استطيع ان افهم طلبك
يعني انت تريد كود يرسم الـ XY Scatter؟؟
ام ان هناك مقصد اخر؟؟
إذا نظــرتَ نيـوب اللـّيـثِ بـارزةً فـلا تظــنَنَ أَنَّ اللـّيـــثَ يبْتسـِـــمُ
رسم المخططات البيانية بواسطة الجافا
كتاب تحليل وتصميم نظم المعلومات
vector_ever كتب:أهلا اخي حياك الله واعذرني اخي للمرة الثانية لا استطيع ان افهم طلبك
يعني انت تريد كود يرسم الـ XY Scatter؟؟
ام ان هناك مقصد اخر؟؟
تماما
أنا آسف على الالتباس والغموض في طلبي
الله يبارك فيك :)

I am learning from you
it is the programmer eye
السلام عليكم
اعود معكم مع درس جديد وبناءا على طلب من الأخ المشاكس 550 وهذه المرة سيكون الدرس عن الـ XY Scatter chart او مخططات النقط المبعثرة
في هذا الدرس سأقدم شرح سريع وبسيط لكتابة كود لهذا النوع من المخططات وفي درس لاحق سأقدم شرح اوفى لرسم عدة انواع في مخطط واحد بمزيد من التفصيل
الخطوات الاولى اصبحت الآن تقريبا معروفة ومع ذلك فلنبدأ على بركة الله
1- create a dataset
// create a dataset...
XYSeries series = new XYSeries("Average Weight");
series.add(4.0, 12.0);
series.add(7.0, 13.0);
series.add(8.0, 17.0);
series.add(11.0, 18.0);
series.add(13.0, 19.0);
series.add(14.0, 22.0);
series.add(15.0, 24.0);
series.add(17.0, 26.0);
series.add(18.0, 27.0);
series.add(20.0, 30.0);
series.add(21.0, 28.0);
series.add(22.0, 29.0);
series.add(23.0, 33.0);
series.add(24.0, 35.0);
series.add(28.0, 36.0);
series.add(29.0, 38.0);
series.add(31.0, 39.0);
series.add(34.0, 41.0);
XYSeriesCollection xyDataset = new XYSeriesCollection(series);جرى شرحها في الدروس السابقة لكن ما يهمني هنا الخطوة التالية
2- create a chart
// create a chart... JFreeChart chart = ChartFactory.createScatterPlot( "XYScatter Chart Demo", // chart title "Age", // domain axis label "Weight", // range axis label xyDataset, // data PlotOrientation.VERTICAL, // orientation true, // include legend true, // tooltips? false // URLs? );
لاحظ أنه هنا الأمر برسم مخططات النقط المبعثرة التي تعتمد مبدأ الـ XY وفق الأمر createScatterPlot
لا جديد في باقي الخطوات فهي تكرير لكل ما سبق اترككم مع الكود والنتيجة
import java.awt.Dimension;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;
public class XYScatterChart extends ApplicationFrame {
public XYScatterChart(String title) {
super(title);
// create a dataset...
XYSeries series = new XYSeries("Average Weight");
series.add(4.0, 12.0);
series.add(7.0, 13.0);
series.add(8.0, 17.0);
series.add(11.0, 18.0);
series.add(13.0, 19.0);
series.add(14.0, 22.0);
series.add(15.0, 24.0);
series.add(17.0, 26.0);
series.add(18.0, 27.0);
series.add(20.0, 30.0);
series.add(21.0, 28.0);
series.add(22.0, 29.0);
series.add(23.0, 33.0);
series.add(24.0, 35.0);
series.add(28.0, 36.0);
series.add(29.0, 38.0);
series.add(31.0, 39.0);
series.add(34.0, 41.0);
XYSeriesCollection xyDataset = new XYSeriesCollection(series);
// create a chart...
JFreeChart chart = ChartFactory.createScatterPlot(
"XYScatter Chart Demo", // chart title
"Age", // domain axis label
"Weight", // range axis label
xyDataset, // data
PlotOrientation.VERTICAL, // orientation
true, // include legend
true, // tooltips?
false // URLs?
);
// add the chart to a panel...
ChartPanel chartPanel = new ChartPanel(chart, false);
chartPanel.setPreferredSize(new Dimension(600, 470));
setContentPane(chartPanel);
}
/**
* Starting point for the demonstration application.
*
* @param args ignored.
*/
public static void main(String[] args) {
XYScatterChart demo = new XYScatterChart("XY Scatter Chart Demo");
demo.pack();
RefineryUtilities.centerFrameOnScreen(demo);
demo.setVisible(true);
}
}والنتيجة الشكل التالي
إذا نظــرتَ نيـوب اللـّيـثِ بـارزةً فـلا تظــنَنَ أَنَّ اللـّيـــثَ يبْتسـِـــمُ
رسم المخططات البيانية بواسطة الجافا
كتاب تحليل وتصميم نظم المعلومات
vector_ever كتب:السلام عليكم
اعود معكم مع درس جديد وبناءا على طلب من الأخ المشاكس 550 وهذه المرة سيكون الدرس عن الـ XY Scatter chart او مخططات النقط المبعثرة
أطالب باضافة الرقم 5 الى اسمي :lol: ههههه
شكرا كثيييير أخوي Vector
وآسف اذا أزعجتك معي
+1
:happy:

I am learning from you
it is the programmer eye
الله يعطيك العافية :happy:
تم تعديل هذه المشاركة بواسطة المشاكـس5550 في 1 ديسمبر 2012 في 14:26

I am learning from you
it is the programmer eye
اهلا اخي المشاكس حياك الله وسامحني لاني نسيت رقم 5
واشكرك لاهتمامك بالموضوع وسؤالك ولولا ذلك لما خرجت مخططات النقط المبعثرة للنور
وقريبا ساكمل شروحات اخرى
إذا نظــرتَ نيـوب اللـّيـثِ بـارزةً فـلا تظــنَنَ أَنَّ اللـّيـــثَ يبْتسـِـــمُ
رسم المخططات البيانية بواسطة الجافا
كتاب تحليل وتصميم نظم المعلومات
السلام عليكم نكمل اليوم في درس جديد وهو تطوير واستكمال للدرس الذي سبقه والذي يتحدث عن موضوع النقط المبعثرة او الـ XY Scatter chart وسأتحدث هذه المرة عن المخططات المتعددة للنقط المبعثرة أو الـ Multi XY Scatter Chart
سأعمل مقارنة بين ثلاثة انواع من البيانات ورسم كل نوع رسم نقطي مجتمعة مع بعضها البعض ف مخطط واحد
فلنبدأ على بركة الله
1- create a dataset
//create a dataset...
XYSeries series1 = new XYSeries("First");
series1.add(4.0, 12.0);
series1.add(7.0, 13.0);
series1.add(8.0, 17.0);
series1.add(11.0, 18.0);
series1.add(13.0, 20.0);
series1.add(14.0, 21.0);
series1.add(15.0, 24.0);
series1.add(17.0, 26.0);
series1.add(18.0, 27.0);
series1.add(20.0, 30.0);
series1.add(21.0, 28.0);
series1.add(22.0, 29.0);
series1.add(23.0, 33.0);
XYSeries series2 = new XYSeries("Second");
series2.add(9.0, 15.0);
series2.add(10.0, 16.0);
series2.add(12.0, 17.0);
series2.add(13.0, 18.0);
series2.add(15.0, 19.0);
series2.add(16.0, 20.0);
series2.add(17.0, 21.0);
series2.add(19.0, 22.0);
series2.add(20.0, 23.0);
series2.add(21.0, 24.0);
series2.add(23.0, 25.0);
series2.add(24.0, 26.0);
series2.add(25.0, 27.0);
series2.add(27.0, 29.0);
XYSeries series3 = new XYSeries("Third");
series3.add(6.0, 5.0);
series3.add(7.0, 4.0);
series3.add(9.0, 3.0);
series3.add(10.0, 4.0);
series3.add(11.0, 6.0);
series3.add(12.0, 7.0);
series3.add(13.0, 8.0);
series3.add(14.0, 9.0);
series3.add(15.0, 10.0);
series3.add(16.0, 11.0);
series3.add(17.0, 12.0);
series3.add(18.0, 9.0);
series3.add(19.0, 11.0);قمنا بتمثيل ثلاثة سلاسل XYSeries كل واحدة فيها نقاط الاحداثيات المختلفة ليتم رسمها وهي على التوالي First, Second and Third
عن طريق الصنف XYSeriesCollection نقوم بعمل كائن نسميه xyDataset هذا الكائن سيتضمن بيانات النقاط الاحداثية للرسوم النقطية الثلاثة
2- create a chart
//create a chart... JFreeChart chart = ChartFactory.createScatterPlot( "MultiXYScatter Chart", // title "X", "Y", // axis labels xyDataset, // dataset PlotOrientation.VERTICAL, true, // legend? yes true, // tooltips? yes false // URLs? no );
لرسم مخططات النقط المبعثرة التي تعتمد مبدأ الـ XY وفق الأمر createScatterPlot
ننتقل مباشرة الى الخطوة الاهم وهي التي أخذت مني وقت في التحليل والاستبيان والتجربة لتحديد ألوان واحجام النقاط التي سيتم رسمها
4- Extras and the modifications وهنا سنقوم ببعض الشروحات
أولاً: تحديد لون الخلفية الخارجية
//1- set colors for External background chart.setBackgroundPaint(Color.lightGray);
ثانياً: تحديد لون الخلفية الداخلية
//2- set colors for Internal background XYPlot plot = chart.getXYPlot();
ثالثاً: تثبيت وتحديد لون الخطوط داخل الخلفية الداخلية حيث يتم الرسم
//3- set colors for grid lines
plot.setRangeGridlinePaint(Color.black); // Horizontal grid lines
plot.setDomainGridlinePaint(Color.black); // Vertical grid linesرابعاً: تغيير ألوان الخطوط التي سيتم رسمها
//4 - set colors for renderer
XYDotRenderer renderer = new XYDotRenderer();
renderer.setSeriesPaint(0, Color.green);// color of first set of points
renderer.setSeriesPaint(1, Color.black);// color of second set of points
renderer.setSeriesPaint(2, Color.blue); // color of third set of points
plot.setRenderer(renderer);خامساً: تحديد حجم كل نقطة من حيث العرض والطول
//5- Set the width and Height
renderer.setDotWidth(5); // Determine the Width of the each Point
renderer.setDotHeight(5); // Determine the Height of the each Point
plot.setBackgroundPaint(Color.white);الكود النهائي
import java.awt.Color;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.category.DefaultCategoryItemRenderer;
import org.jfree.chart.renderer.xy.DefaultXYItemRenderer;
import org.jfree.chart.renderer.xy.XYDotRenderer;
import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;
public class MultiXYScatterChart extends ApplicationFrame {
public MultiXYScatterChart(String title) {
super(title);
//create a dataset...
XYSeries series1 = new XYSeries("First");
series1.add(4.0, 12.0);
series1.add(7.0, 13.0);
series1.add(8.0, 17.0);
series1.add(11.0, 18.0);
series1.add(13.0, 20.0);
series1.add(14.0, 21.0);
series1.add(15.0, 24.0);
series1.add(17.0, 26.0);
series1.add(18.0, 27.0);
series1.add(20.0, 30.0);
series1.add(21.0, 28.0);
series1.add(22.0, 29.0);
series1.add(23.0, 33.0);
XYSeries series2 = new XYSeries("Second");
series2.add(9.0, 15.0);
series2.add(10.0, 16.0);
series2.add(12.0, 17.0);
series2.add(13.0, 18.0);
series2.add(15.0, 19.0);
series2.add(16.0, 20.0);
series2.add(17.0, 21.0);
series2.add(19.0, 22.0);
series2.add(20.0, 23.0);
series2.add(21.0, 24.0);
series2.add(23.0, 25.0);
series2.add(24.0, 26.0);
series2.add(25.0, 27.0);
series2.add(27.0, 29.0);
XYSeries series3 = new XYSeries("Third");
series3.add(6.0, 5.0);
series3.add(7.0, 4.0);
series3.add(9.0, 3.0);
series3.add(10.0, 4.0);
series3.add(11.0, 6.0);
series3.add(12.0, 7.0);
series3.add(13.0, 8.0);
series3.add(14.0, 9.0);
series3.add(15.0, 10.0);
series3.add(16.0, 11.0);
series3.add(17.0, 12.0);
series3.add(18.0, 9.0);
series3.add(19.0, 11.0);
XYSeriesCollection xyDataset = new XYSeriesCollection();
xyDataset.addSeries(series1);
xyDataset.addSeries(series2);
xyDataset.addSeries(series3);
//create a chart...
JFreeChart chart = ChartFactory.createScatterPlot(
"MultiXYScatter Chart", // title
"X", "Y", // axis labels
xyDataset, // dataset
PlotOrientation.VERTICAL,
true, // legend? yes
true, // tooltips? yes
false // URLs? no
);
//add the chart to a panel...
ChartPanel chartPanel = new ChartPanel(chart);
chartPanel.setPreferredSize(new java.awt.Dimension(500, 370));
setContentPane(chartPanel);
//Extras and the modifications...
//1- set colors for External background
chart.setBackgroundPaint(Color.lightGray);
//2- set colors for Internal background
XYPlot plot = chart.getXYPlot();
plot.setBackgroundPaint(Color.white);
//3- set colors for grid lines
plot.setRangeGridlinePaint(Color.black); // Horizontal grid lines
plot.setDomainGridlinePaint(Color.black); // Vertical grid lines
//4 - set colors for renderer
XYDotRenderer renderer = new XYDotRenderer();
renderer.setSeriesPaint(0, Color.green);// color of first set of points
renderer.setSeriesPaint(1, Color.black);// color of second set of points
renderer.setSeriesPaint(2, Color.blue); // color of third set of points
plot.setRenderer(renderer);
//5- Set the width and Height
renderer.setDotWidth(5); // Determine the Width of the each Point
renderer.setDotHeight(5); // Determine the Height of the each Point
//6- Change the auto tick unit selection to integer units only...
NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();
rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
}
public static void main(String[] args) {
MultiXYScatterChart demo = new MultiXYScatterChart("Multi XY Scatter Chart");
demo.pack();
RefineryUtilities.centerFrameOnScreen(demo);
demo.setVisible(true);
}
}الشكل الناتج عن عن هذا المثال
تم تعديل هذه المشاركة بواسطة vector_ever في 15 ديسمبر 2012 في 16:37
إذا نظــرتَ نيـوب اللـّيـثِ بـارزةً فـلا تظــنَنَ أَنَّ اللـّيـــثَ يبْتسـِـــمُ
رسم المخططات البيانية بواسطة الجافا
كتاب تحليل وتصميم نظم المعلومات
كنت سألتك في هذا الموضوع السؤال التالي :
عملت JFram لجمع بعض البيانات ثم إرسالها لفئة الرسم البياني وعند ظهور الرسم البياني في نافذة منفصلة وإغلاقه يتم إغلاق الـ JFram الرئيسي وأنا لاأريده يغلق , فماهو الحل ؟
وقد وجدت الحل , وهو : أن نجعل جميع الأمثلة ترث JFrame بدلًا من ApplicationFrame وتنتهي المشكلة .
وعندي إقتراح بالنسبة للموضوع ككل وهو أن تقوم بعد إنهاء جميع الدروس بجمعها في ملف pdf ونشرها ليسهل حملها لمن أرادها .
هدف الشمالي كتب:كنت سألتك في هذا الموضوع السؤال التالي :
عملت JFram لجمع بعض البيانات ثم إرسالها لفئة الرسم البياني وعند ظهور الرسم البياني في نافذة منفصلة وإغلاقه يتم إغلاق الـ JFram الرئيسي وأنا لاأريده يغلق , فماهو الحل ؟
وقد وجدت الحل , وهو : أن نجعل جميع الأمثلة ترث JFrame بدلًا من ApplicationFrame وتنتهي المشكلة .
وعندي إقتراح بالنسبة للموضوع ككل وهو أن تقوم بعد إنهاء جميع الدروس بجمعها في ملف pdf ونشرها ليسهل حملها لمن أرادها .
فعلا أخي هدف الشمالي انا عند كتابتي لكود الـ JFram اجعله يرث من الـ JFrame ولكن سابقا لم انتبه على هذا في مثالك السابق ويمكن بسبب انك كنت قد كتبته بواسطه النت بينز فلذلك تمحور اهتمامي على الكود الرئيسي
فشكرا للتنويه
بالنسبة لتجميع الدروس فوالله النية موجود وقائمة لكن والله ما ينقصني حتى الآن هو الوقت وعدا ذلك ما زالت هناك بعض الشروحات التي اريد اضافتها وما زلت اواجه صعوبات في كتابة الكود الخاص بها
على كل حال الى ان يتم ذلك يبقى هذا المكان هو المرجع لكل الدروس حاليا
وشكرا
إذا نظــرتَ نيـوب اللـّيـثِ بـارزةً فـلا تظــنَنَ أَنَّ اللـّيـــثَ يبْتسـِـــمُ
رسم المخططات البيانية بواسطة الجافا
كتاب تحليل وتصميم نظم المعلومات
