اذهب إلى المحتوى

السؤال

نشر

السلام عليكم

اريد انشاء داشبورد ويتوجب علي انشاء مخططات هل يوجد طريقة لعرض وانشاء هذه المخططات فيها اي هل من الصحيح انشائها باحدى ماكتب الاظهار التي في بايثون ام يتوجب بناء شكلها في الفرونت اند

وسؤال اخر ماهي المخططات وانواعها التي يمكن انشائها وهل يوجد مكاتب او طرق تساعد على تامين هذه المخططات في الداش بورد

Recommended Posts

  • 0
نشر

وعليكم السلام،

حسب ما فهمته أنت تقصد charts، أي الرسوم البيانية.  توجد مكتبات في Python لإنشاءها، وأشهرها هي Matplotlib. لكن بما أنه يجب إظهارها في الواجهة الأمامية، فالآن لم يعد هذا عمل Python بل صار عمل JavaScript. لذلك، يجب الآن استخدام مكتبات JavaScript تساعد في إنشاء هذه المخططات. من بين هذه المكتبات: Chart.js.

ما يجب أن تقوم به من الواجهة الخلفية هي أن تنشئ واجهة برمجة تطبيقات (API) بسيطة، ثم من الواجهة الأمامية تحضر البيانات وترسم المخططات باستخدام المكتبة التي ذكرتها.

بالمناسبة، إذا كان الهدف من مشروعك هو فقط عرض بيانات في داشبورد، فقد لا تحتاج إلى مشروع Django، بل قد يكون الأنسب لك هو استخدام مكتبة Streamlit، فهي مكتبة Python تساعدك على إنشاء مخططات وعرض بيانات تفاعلية بسرعة حتى لو لم تكن تعرف شيئا في تقنيات الويب!

 

  • 1
نشر (معدل)

في حال كنت تسطتيع التعامل مع جافا سكربت يوجد الكثير من المكاتب والحلول المساعدة مثل canvasjs او Chart.js

حيث تقدم هذه المواقع خدمات ومساعدات لانواع مخططات كثيرة ففي canvasjs :

تستطيع التجول واختيار المخطط المناسب لك كالتالي :

image.thumb.png.66d26665bc5779d71bbcb2cf085d0992.png

 

وبعد اختيارك للمخطط المطلوب يمكن تنزيله بالصيغة التي  تناسبك ان كان javaScript او react  او غيرها كالتالي

image.thumb.png.8f58f84d342bb00d43cf11c628334a4c.png

 

ولديك خيار اخر اذا كنت تعرف مكتبة plotly في بايثون تقدم الكثير والكثير من انواع المخططات وتستخدم بشكل شائع في تحليل البيانات 

حيث ساعطيك مثال لطريقة مكاملتها مع جانغو لانها تعمل معك بشكل منفصل ايضا عن طريق النوت بوك حتى :

ففي التوت بوك يمكن اظهار مخطط ال Line Chart:

import plotly.express as px

df = px.data.gapminder().query("country=='Canada'")
fig = px.line(df, x="year", y="lifeExp", title='Life expectancy in Canada')
fig.show()

عن طريق التابع show يتم عرضها بشكل مباشر  في نوت بوك 

image.thumb.png.93276b77987af1fd548d3039492016dd.png

اما  لرسم مخطط Line Chart مع جانغو

نحتاج اولا لانشاء مشروع جانغو ومن ثم داخل ملف الviews :

نعرف نفس التابع line الموجود في المكتبة ونمرر له القيم المراد عرضها ولكن على محور الX تكون الزمن وعلى محور y تكون متوسط الاسعار لكل زمن :

كالشكل التالي:

from django.shortcuts import render
import plotly.express as px

from core.forms import DateForm
from core.models import CO2

# Create your views here.
def chart(request):
    start = request.GET.get('start')
    end = request.GET.get('end')

    co2 = CO2.objects.all()
    if start:
        co2 = co2.filter(date__gte=start)
    if end:
        co2 = co2.filter(date__lte=end)

    fig = px.line(
        x=[c.date for c in co2],
        y=[c.average for c in co2],
        title="Line Chart",
        labels={'x': 'Date', 'y': 'Average price'}
    )

    fig.update_layout(
        title={
            'font_size': 24,
            'xanchor': 'center',
            'x': 0.5
    })
    chart = fig.to_html()
    context = {'chart': chart, 'form': DateForm()}
    return render(request, 'core/chart.html', context)

 نلاحط اننا استخدمن التابع to_html وليس show وهنا سوف يتعامل معه على انه HTML ويمكن ارساله بشكل عادي الى صفحة الhtml وهمنا ارسلناهها الى الصفحة chart.html 

استقبال المخطط في صفحة  chart.html كالتالي 

{{ chart|safe }}

داخل الصفحة:
 

{% extends 'core/base.html' %}

{% block content %}
    <form method="GET" action="{% url 'chart' %}">
        {{ form.as_p }}

        <button>Submit</button>
    </form>
    
    {{ chart|safe }}
{% endblock content %}

ونحرص على وضع كلمة safe معها كي يعتبرها المتصفح امنة للظهور  ويمكن التعديل عن طريق ال CSS على شكل ومكان العرض.

 

ويتم استدعاء التابع chart بالطريقة التالية داخل ملف ال URL:

from django.urls import path
from . import views

urlpatterns = [
    path('', views.chart, name='chart')
]

 

لتظهر النتيجة كالشكل التالي :

image.thumb.png.e367c3221a91f5433ac9f6026cfdacbf.png

ويوجد انواع عديدة من المخططات وتوفرها مكتبة  plotly :

1. المخططات المبعثرة (Scatter Plots): هذه المخططات رائعة لإظهار العلاقة بين متغيرين.

image.png.4bbf2d9933e504e0ab65a7787ee2d4bf.png

2. المخططات الدائرية (Pie Charts): تستخدم لإظهار نسبة أجزاء من أصل الكل.

 

image.png.80987f8726030be6d6d0f4a69bea1354.png

3. مخططات الصندوق (Box Plots): تقديم ملخص مرئي لمجموعة واحدة أو أكثر من البيانات وفي عملية تحليل البيانات يمكن من خلالها اكتشاف القيم المتطرفة.

image.png.743974ed2064a691ac1b23aa41657173.png

4. مخططات الكمان (Violin Plots): تشبه المخططات الصندوقية، ولكنها تظهر أيضاً الكثافة الاحتمالية.

image.png.ff7471783d84cf81c8c7e4568920ceea.png

5. مخطط الخرائط الحرارية (Heatmaps): تظهر حجم الظاهرة كاللون في بعدين (x و y). مثال: الميداليات الأولمبية التي فازت بها الدول (كوريا الجنوبية، الصين، كندا)

image.png.97a3c30c84cf6e9606a08e37fda524f9.png

6. المخططات الفقاعية (Bubble Charts): مجموعة متنوعة من المخططات المبعثرة (Scatter Plots) بحجم الفقاعة الذي يمثل بُعداً إضافياً.

image.png.5ff84acceb138137483f26fee976aa5c.png

 

7. مخطط خطي (Line Chart): تمثيل رسومي يعرض المعلومات كسلسلة من نقاط البيانات، تسمى "العلامات (markers)"، متصلة بواسطة مقاطع خط مستقيم. يُستخدم عادةً لإظهار التغيرات بمرور الوقت.

image.png.3275ee2f7cb75379f3249de0ad38679e.png

8. المخططات المساحية (Area Charts): تشبه المخططات الخطية (Line Charts)، ولكن المنطقة الموجودة أسفل الخط تكون مليئة بالألوان.

image.png.a7be681baf678acc3512c075c52d21a6.png

9. مخطط شريطي (Bar Chart): يستخدم أشرطة ذات ارتفاعات أو أطوال مختلفة لمقارنة الكميات عبر الفئات المختلفة. ويمكن توجيهها رأسياً أو أفقياً. وهذا مثال يوضح كمية المدخنين وغير المدخنين من كلا الجنسين ذكور وإناث.

image.png.9e82a677a97fcaae7a4cd12ff4916d8c.png

10. الخرائط الهيكلية (Treemaps): عرض البيانات الهرمية كمجموعة من المستطيلات المتداخلة.

image.png.d4641246c9a4d9b06f7a2cd2c19b7397.png

11. مخططات جانت (Gantt Charts): غالباً ما تستخدم لإدارة المشاريع لإظهار المهام بمرور الوقت.

image.png.f2f1e243f992b5d93add618a610ed882.png

 

 ويوجد انواع اخرى لكن قمت بذكر اهمها

تم التعديل في بواسطة Ali Ibrahim12
  • 0
نشر (معدل)
بتاريخ 1 ساعة قال Ali Ibrahim12:

في حال كنت تسطتيع التعامل مع جافا سكربت يوجد الكثير من المكاتب والحلول المساعدة مثل canvasjs او Chart.js

حيث تقدم هذه المواقع خدمات ومساعدات لانواع مخططات كثيرة ففي canvasjs :

تستطيع التجول واختيار المخطط المناسب لك كالتالي :

image.thumb.png.66d26665bc5779d71bbcb2cf085d0992.png

 

وبعد اختيارك للمخطط المطلوب يمكن تنزيله بالصيغة التي  تناسبك ان كان javaScript او react  او غيرها كالتالي

image.thumb.png.8f58f84d342bb00d43cf11c628334a4c.png

 

ولديك خيار اخر اذا كنت تعرف مكتبة plotly في بايثون تقدم الكثير والكثير من انواع المخططات وتستخدم بشكل شائع في تحليل البيانات 

حيث ساعطيك مثال لطريقة مكاملتها مع جانغو لانها تعمل معك بشكل منفصل ايضا عن طريق النوت بوك حتى :

ففي التوت بوك يمكن اظهار مخطط ال Line Chart:

import plotly.express as px

df = px.data.gapminder().query("country=='Canada'")
fig = px.line(df, x="year", y="lifeExp", title='Life expectancy in Canada')
fig.show()

عن طريق التابع show يتم عرضها بشكل مباشر  في نوت بوك 

image.thumb.png.93276b77987af1fd548d3039492016dd.png

اما  لرسم مخطط Line Chart مع جانغو

نحتاج اولا لانشاء مشروع جانغو ومن ثم داخل ملف الviews :

نعرف نفس التابع line الموجود في المكتبة ونمرر له القيم المراد عرضها ولكن على محور الX تكون الزمن وعلى محور y تكون متوسط الاسعار لكل زمن :

كالشكل التالي:

from django.shortcuts import render
import plotly.express as px

from core.forms import DateForm
from core.models import CO2

# Create your views here.
def chart(request):
    start = request.GET.get('start')
    end = request.GET.get('end')

    co2 = CO2.objects.all()
    if start:
        co2 = co2.filter(date__gte=start)
    if end:
        co2 = co2.filter(date__lte=end)

    fig = px.line(
        x=[c.date for c in co2],
        y=[c.average for c in co2],
        title="Line Chart",
        labels={'x': 'Date', 'y': 'Average price'}
    )

    fig.update_layout(
        title={
            'font_size': 24,
            'xanchor': 'center',
            'x': 0.5
    })
    chart = fig.to_html()
    context = {'chart': chart, 'form': DateForm()}
    return render(request, 'core/chart.html', context)

 نلاحط اننا استخدمن التابع to_html وليس show وهنا سوف يتعامل معه على انه HTML ويمكن ارساله بشكل عادي الى صفحة الhtml وهمنا ارسلناهها الى الصفحة chart.html 

استقبال المخطط في صفحة  chart.html كالتالي 

{{ chart|safe }}

داخل الصفحة:
 

{% extends 'core/base.html' %}

{% block content %}
    <form method="GET" action="{% url 'chart' %}">
        {{ form.as_p }}

        <button>Submit</button>
    </form>
    
    {{ chart|safe }}
{% endblock content %}

ونحرص على وضع كلمة safe معها كي يعتبرها المتصفح امنة للظهور  ويمكن التعديل عن طريق ال CSS على شكل ومكان العرض.

 

ويتم استدعاء التابع chart بالطريقة التالية داخل ملف ال URL:

from django.urls import path
from . import views

urlpatterns = [
    path('', views.chart, name='chart')
]

 

لتظهر النتيجة كالشكل التالي :

image.thumb.png.e367c3221a91f5433ac9f6026cfdacbf.png

ويوجد انواع عديدة من المخططات وتوفرها مكتبة  plotly :

1. المخططات المبعثرة (Scatter Plots): هذه المخططات رائعة لإظهار العلاقة بين متغيرين.

image.png.4bbf2d9933e504e0ab65a7787ee2d4bf.png

2. المخططات الدائرية (Pie Charts): تستخدم لإظهار نسبة أجزاء من أصل الكل.

 

image.png.80987f8726030be6d6d0f4a69bea1354.png

3. مخططات الصندوق (Box Plots): تقديم ملخص مرئي لمجموعة واحدة أو أكثر من البيانات وفي عملية تحليل البيانات يمكن من خلالها اكتشاف القيم المتطرفة.

image.png.743974ed2064a691ac1b23aa41657173.png

4. مخططات الكمان (Violin Plots): تشبه المخططات الصندوقية، ولكنها تظهر أيضاً الكثافة الاحتمالية.

image.png.ff7471783d84cf81c8c7e4568920ceea.png

5. مخطط الخرائط الحرارية (Heatmaps): تظهر حجم الظاهرة كاللون في بعدين (x و y). مثال: الميداليات الأولمبية التي فازت بها الدول (كوريا الجنوبية، الصين، كندا)

image.png.97a3c30c84cf6e9606a08e37fda524f9.png

6. المخططات الفقاعية (Bubble Charts): مجموعة متنوعة من المخططات المبعثرة (Scatter Plots) بحجم الفقاعة الذي يمثل بُعداً إضافياً.

image.png.5ff84acceb138137483f26fee976aa5c.png

 

7. مخطط خطي (Line Chart): تمثيل رسومي يعرض المعلومات كسلسلة من نقاط البيانات، تسمى "العلامات (markers)"، متصلة بواسطة مقاطع خط مستقيم. يُستخدم عادةً لإظهار التغيرات بمرور الوقت.

image.png.3275ee2f7cb75379f3249de0ad38679e.png

8. المخططات المساحية (Area Charts): تشبه المخططات الخطية (Line Charts)، ولكن المنطقة الموجودة أسفل الخط تكون مليئة بالألوان.

image.png.a7be681baf678acc3512c075c52d21a6.png

9. مخطط شريطي (Bar Chart): يستخدم أشرطة ذات ارتفاعات أو أطوال مختلفة لمقارنة الكميات عبر الفئات المختلفة. ويمكن توجيهها رأسياً أو أفقياً. وهذا مثال يوضح كمية المدخنين وغير المدخنين من كلا الجنسين ذكور وإناث.

image.png.9e82a677a97fcaae7a4cd12ff4916d8c.png

10. الخرائط الهيكلية (Treemaps): عرض البيانات الهرمية كمجموعة من المستطيلات المتداخلة.

image.png.d4641246c9a4d9b06f7a2cd2c19b7397.png

11. مخططات جانت (Gantt Charts): غالباً ما تستخدم لإدارة المشاريع لإظهار المهام بمرور الوقت.

image.png.f2f1e243f992b5d93add618a610ed882.png

 

 ويوجد انواع اخرى لكن قمت بذكر اهمها

شكرا لك استاذ علي وشكرا كل مرة تكون اجابتك مميزة هل يمكنني مراسلتك على الرسائل ؟؟

في حال واجهت مشكلة في انشاء الداش بورد وشكرا لك 

تم التعديل في بواسطة محمد العامر3

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...