ارسم رسومًا بيانية للبيانات من أجهزة الاستشعار المتصلة بإنترنت الأشياء (IoT) باستخدام SVG

ارسم رسومًا بيانية للبيانات من أجهزة الاستشعار المتصلة بإنترنت الأشياء (IoT) باستخدام SVG

ارسم رسومًا بيانية للبيانات من أجهزة الاستشعار المتصلة بإنترنت الأشياء (IoT) باستخدام SVG

في هذه المقالة في السلسلة على تمثيل الرسوم البيانية للبيانات في إنترنت الأشياء أشرح كيفية رسم الرسوم البيانية باستخدام لغة SVG. كما هو الحال في مناسبات أخرى، تعتبر المقالة أيضًا بمثابة مقدمة قصيرة للغة.

جدول المحتويات

    الرسوم البيانية للبيانات من أجهزة الاستشعار المتصلة بحاوية إنترنت الأشياء (IoT) بتنسيق HTMLالرسوم البيانية للبيانات من أجهزة الاستشعار المتصلة بإنترنت الأشياء (IoT) تعريف المظهر في CSSالرسوم البيانية للبيانات من أجهزة الاستشعار المتصلة بإنترنت الأشياء (IoT) والتي يتم رسمها باستخدام SVGالرسوم البيانية للبيانات من أجهزة الاستشعار المتصلة بإنترنت الأشياء (IoT) والتي يتم إنشاؤها وتعديلها باستخدام JavaScript

    تنسيق SVG

    SVG يتوافق مع اختصار Scalable Vector Graphics (رسومات متجهة قابلة للتحجيم، باللغة الإنجليزية). انه لغة توصيف النص وهو مبني على XML وهذا يسمح، بشكل أساسي، بوصف الرسم بالهندسة التي تحدده؛ على عكس طريقة المصفوفة، المستخدمة على سبيل المثال للصورة الفوتوغرافية، والتي تستخدم شبكة من البكسلات الملونة لتشفيرها.

    داخل الرسم SVG يمكن أيضًا تضمين صورة (مصفوفة من وحدات البكسل)، إما تشير إلى مستند خارجي أو مضمنة داخل الرسم نفسه. SVG.

    إصدار اللغة الحالي وقت كتابة هذه المقالة هو SVG 1.1 تحديث على الرغم من أن تعريف الإصدار قيد التطوير بالفعل SVG 2 تحديث. وسأحاول قدر الإمكان أن أحقق ما تم شرحه في المقدمة، حتى لو كان يشير إليه SVG 1.1 تحديث يخدم أيضا ل SVG 2 تحديث.

    إذا كان الرسم SVG يتم تضمينه في مستند منفصل وليس ضمن التعليمات البرمجية HTML (اقتراحي في هذا الحل لتمثيل بيانات إنترنت الأشياء يدمجها في الكود HTML) يجب أن يرأسها مرجع XML وعلى تعريف نوع الوثيقة (DTD).

    في السطر الأول من الكود السابق يتم إخطار الإصدار XML يستخدم (1.0) ترميز الأحرف (UTF-8) ويشير إلى ما إذا كنت بحاجة إلى تعريفات خارجية (standalone="no") أم أنها مستند مستقل (standalone="yes"). السطر الثاني يعبر عن تعريف نوع الوثيقة (DTD)، والتي لن تكون هناك حاجة إليها في الإصدار التالي من SVG.

    يتم وضع الرمز الذي تم تعريف الرسم به بين التسميات <sgv> y </sgv> والتي تشير أيضًا إلى ما سبق ذكره عند الحديث عنه كود HTML الذي يعمل كحاوية للرسوم البيانية للبيانات في إنترنت الأشياءوالقياسات والجزء من المجموع الممثل والنسبة وأيضا النوع والإصدار.

    يحدد المثال أعلاه رسمًا بعرض 500 بكسل وارتفاع 250 بكسل (منفذ عرض 500 × 250) سيتم اقتصاصه بمستطيل مقاس 460 × 80 (مربع عرض 460 × 80) بدءًا من الإحداثيات 20,10 باستخدام كل المساحة المتوفرة في الحاوية (عنصر على صفحة ويب، في حالتنا) دون احترام النسبة الأصلية للاستخدام preserveAspectRatio="none". بالإضافة إلى ذلك، يمكنك الآن رؤية المحتوى الأول للمستند، والتعليقات المضمنة فيه <!-- y --> كما هو الحال في الأشكال الأخرى بناءً على XML.

    نظام الإحداثيات الذي اختاره SVG وهو موجه أفقياً (المحور X) وعمودياً (المحور Y) والاتجاه الموجب هو اتجاه الكتابة الغربية، أي أن قيم المحور X تنمو إلى اليمين وتنمو القيم الموجبة للمحور Y إلى الأسفل.

    حدد الرسم البياني باستخدام SVG

    لتحديد رسومات المعلومات المخزنة بواسطة أجهزة الاستشعار المتصلة بإنترنت الأشياء، سنحتاج إلى تحديد نوع الكائن الذي يتم رسمه، وهندسته (الإحداثيات، الأبعاد...) ومظهره (السُمك، اللون...) في مثال على هذه المقالة، رسم بياني خطي يمكن إنشاؤه من خلال ربط المقاطع الخطية بالكائن line، الأكثر فائدة لرسم العناصر المستقلة، أو كائن باستخدام خط متعدد المقاطع path، أكثر عملية لسلسلة من الخطوط المتصلة.

    مع العنصر path الهدف هو عمل رسم مثل الذي في الصورة أدناه، والذي يتكون من مسار مغلق مملوء بلون أفتح يعلوه في الأعلى مسار مفتوح، بدون تعبئة ومرسوم بخط سميك.

    لوصف خط يتم استخدام تعبير من النوع:

    حيث X1,Y1 هي إحداثيات النقطة الأولى على الخط وX2,Y2 هي إحداثيات النقطة الثانية. تم استخدام سمة stroke-width لتحديد سمك. هناك عدة طرق لتحديد مظهر الكائنات SVG، بخصائصه الفردية كالسابقة، أو بالخاصية style الذي يجمعهم جميعًا معًا وهو الأسلوب الذي سيتم استخدامه في مقترح المقالة.

    الكود أعلاه ينضم إلى الخاصية style قيم stroke (لون السكتة الدماغية) ، stroke-width (سمك الخط) و stroke-opacity (عتامة الكائن)

    وصف الكائن path لديه الشكل

    يستخدم الكود أعلاه العمليات SVG M, L y Z داخل العقار d، والتي تعني، على التوالي، "moveto" (الانتقال إلى)، و"lineto" (خط إلى)، و"Closepath" (مسار قريب). ويمكن التعبير عنها بأحرف كبيرة أو صغيرة للإشارة إلى قيمة مطلقة أو نسبية عند الاقتضاء (في حالة Z، على سبيل المثال، لا علاقة له بالموضوع). هناك العديد من العمليات الأخرى التي يمكننا مثلا من خلالها رسم منحنيات دائرية، منحنيات إهليلجية، منحنيات بيزييه... والتي لن نحتاجها في هذا المثال.

    على الرغم من أن هذا الاقتراح يرسم رسومًا بيانية خطية يمكنها إحاطة منطقة ما، إلا أنه قد يكون من المفيد رسم عناصر بسيطة أخرى لتحديد النقاط أو إبراز المناطق. من تلك المتوفرة في SVG يمكن أن تكون المضلعات (التي يمكنك من خلالها أيضًا رسم الحشوة)، والمستطيلات (أكثر ملاءمة لحالة معينة)، والأشكال الناقصية والدوائر (كحالة معينة من علامات الحذف) مثيرة للاهتمام. يمكن رؤية بناء جملة هذه العناصر في كود المثال التالي.

    سيكون مظهر الكود السابق مثل الصورة التالية (مع بعض الحيل لتتمكن من إعادة استخدام النقاط من المثال أعلاه)

    نقاط المضلع (polygon) موضحة في العقار points كأزواج من إحداثيات x وy مفصولة بمسافات بينها. لتحديد علامات الحذف (ellipse) يتم استخدام الخصائص cx (x إحداثيات المركز)، cy (ص إحداثيات المركز)، rx (العرض) و ry (عالي). بدلاً من قيمتين لنصف القطر (نصف القطر الأفقي والرأسي، rx y ry) الدائرة (circle) يتم تعريفه بواسطة نصف قطر مع الخاصية r وإحداثيات المركز مع cx y cy. لتحديد المستطيل (rectangle) تتم الإشارة إلى إحداثيات الزاوية اليسرى العليا (x e y) العرض (width) والطويل (height)

    وأخيرًا، لتضمين النص، يتم استخدام الكائن text على النحو التالي:

    تتم الإشارة إلى موضع النص بإحداثيات x وy، والخط يتوافق مع الخاصية font-familyالحجم مع font-size واللون مع الخاصية fill.

    HTML يسمح لك بدمج الرسومات SVG كعنصر آخر من الصفحة. مثل الكائنات الأخرى، يمكنك استخدام الخاصية ID لتعيين معرف فريد لهم يمكن من خلاله الرجوع إليهم منه جافا سكريبت للتلاعب بهم. من وجهة نظر HTML، شيء SVG سيكون لها النموذج التالي:

    مع ما رأيناه حتى الآن، سيكون من الممكن رسم نوع الرسم البياني الأساسي المطلوب في هذا الاقتراح، ولكن لإضفاء المرونة على مظهر الحاوية (صفحة الويب)، ستتأثر نسبة الرسم البياني (على سبيل المثال preserveAspectRatio="none") عن طريق تعديل حجمه ليتناسب مع التخطيط الموجود في نافذة المتصفح للعناصر HTML.

    بشكل عام، هناك بديلان للسلوك عند تعديل حجم نافذة المتصفح التي تعرض صفحة الويب التي تحتوي على المخطط: (1) الحفاظ على حجم المخطط SVG ترك مساحة فارغة إذا كان هناك فائض أو إضافة أشرطة تمرير إذا كانت مفقودة أو (2) تعديل حجم الرسم البياني SVG بطريقة إيقاعية لتغيير حجم نافذة المتصفح التي تعرض الويب. إذا اخترت الصيغة الأولى، يمكنك التنبؤ بالمقادير والرسم بالقياسات المطلقة، على الرغم من تصحيحها بناءً على الحجم المختار وقيم الرسم البياني. إذا اخترت الطريقة الثانية، وهي الطريقة التي أقترحها، فإن المقادير تكون دائمًا نسبًا مئوية من القيم الممثلة. ميزة الطريقة الثانية هي قدرتها على التكيف مع الويب والعيب هو رسم العناصر المصاحبة للرسم البياني، مثل النقاط أو النصوص.

    لتصحيح التشوه الذي قد يحدث في سمك الخطوط، يتم استخدام التأثير. vector-effect="non-scaling-stroke" على الطرق الضرورية (تلك التي لها قيمة stroke غير ذلك none). للكائنات text لا يوجد تأثير مماثل، لذلك من الضروري تشويهها (مع تلك المرتبطة بها) في الاتجاه المعاكس لذلك الناتج عن التغير في حجم الحاوية.

    التحولات في SVG يمكن تطبيقها على مجموعات من الكائنات بحيث يمكن دمج العديد من النصوص والكائنات الأخرى في الرسم في مجموعة واحدة، وبشكل أكثر ملاءمة، إجراء تحويل لها جميعًا.

    يتم تضمين العناصر التي تشكل جزءًا من المجموعة بين العلامات <g> y </g>، لتعيين تحويل يتم استخدام الخاصية transform وسلسلة من العمليات ذات الصلة بحالتنا scale، والذي يشار إليه بعامل التكبير الأفقي والرأسي. إذا كانت قيمة scale أكبر من واحد يؤدي إلى توسيع المحور المقابل، وإذا كان أقل من واحد، يحدث انخفاض في حجم الكائنات على طول هذا المحور.

    في المثال السابق تم تعديل النص الأول والثاني عن طريق خفض قياسهما الأفقي إلى النصف ومضاعفة القياس الرأسي بالقيمتين 0.5 و 2.0 المستخدمتين في scale(0.5,2.0)

    المقالة القادمة في السلسلة على تمثيل الرسوم البيانية للبيانات من أجهزة الاستشعار المتصلة بإنترنت الأشياء يشرح كيفية إنشاء أو تعديل الرسوم البيانية في الوقت الحقيقي باستخدام جافا سكريبت والذي سيسمح لك برؤية رسم بياني متحرك عند تمثيل القيم الأخيرة التي تم تحميلها من الخادم.

    فيما يلي مثال لكيفية ظهور الرسوم البيانية التي تم إنشاؤها باستخدام هذا الاقتراح.

    أكتب تعليق

    ربما تكون قد فاتتك