Conrod: القطعة الرسم البياني / الرسم البياني

تم إنشاؤها على ١٦ أغسطس ٢٠١٤  ·  5تعليقات  ·  مصدر: PistonDevelopers/conrod

كنت أقرأ للتو مقالًا رائعًا يحتوي على رسوم بيانية سيئة للغاية ، مما جعلني أفكر في عنصر واجهة مستخدم Graph! أعتقد أن هذا سيكون مفيدًا جدًا لتصور بيانات التطبيق وسهل التنفيذ إلى حد ما (أنا الآن أنهي XYPad الذي لم تتم إزالته كثيرًا).

سيكون من الجيد أيضًا أن تكون قادرًا على تمرير شيء مثل:

// in graph.rs
pub enum Type {
    Line,
    Bar,
    Dot,
}

لتحديد الطريقة التي ينبغي تصورها.

discussion draft easy widget

التعليق الأكثر فائدة

ما هو الوضع على الرسوم البيانية في كونرود؟

يعرض الدليل المخططات كما هو مخطط لها ولكن لم يتم تنفيذها واختفى إعادة الشراء على الرسم البياني المكبس.

ال 5 كومينتر

سيكون هذا لطيفا!

قد تستغرق الأنواع الثلاثة المختلفة من الرسوم البيانية مجموعات بيانات ذات بنية مختلفة. يجب أن يحتوي الرسم البياني الشريطي على تسمية لكل نقطة بيانات ، بينما يحتوي الرسم البياني الخطي على تسمية لكل خط. الرسم البياني النقطي قد يحتوي على كل نقطة مسماة أم لا.

ربما:

// Bar graphs are one-dimensional
type BarData<'a, D: Num> = &'a [(D, & 'a str)];
type LineData<'a, D: Num> = &'a [(Vec<(D, D), &'a str>)];
type Dot<D: Num> = (D, D);

pub enum Graph<'a, D> {
    Bar(BarData<'a, D>),
    Line(LineData<'a, D>),
    Dot(Vec<Dot<D>>),
    LabeledDot(Vec<(Dot<D>, &'a str)>,
}

هذا لا يشمل الألوان لكل شريط / خط / نقطة.

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

مسودة أولية:

pub struct Graph<D: Num> {
    min_x: D,
    min_y: D,
    max_x: D,
    max_y: D,
}

impl Graph<D: Num> {
    fn draw_point(x: D, y: D, col: Color) {...}
    fn draw_label(x: D, y: D, val: &'a str, col: Color) {...}
    fn draw_line(x1: D, y1: D, x2: D, y2: D, col: Color) {...}
    fn draw_bar(pos: D, height: D, width: D, col: Color) {...} 
}

pub trait Graphable {
    fn draw(&self, graph: &Graph);
}

pub struct BarGraph<'a, D: Num> {
    data: &'a [(D, &'a str, Color)],
}

impl<'a> Graphable for BarGraph<'a> {...}

pub struct LineGraph<'a, D: Num> {
    data: &'a [(Vec<(D, D)>, &'a str, Color)],
}

impl<'a> Graphable for LineGraph<'a> {...}

pub enum DotGraph<'a, D: Num> {
    Labeled(&'a [(D, D, &'a str, Color)].
    Unlabled(&'a [(D, D, Color)],
}

impl<'a> Graphable for DotGraph<'a> {...}

مكافأة نمط المحول هي أن مستخدم واجهة برمجة التطبيقات يمكنه كتابة تطبيقه الخاص Graphable .

ألعب مع بعض التعليمات البرمجية حول عرض الرسوم البيانية في أحد التطبيقات. إذا سمح الوقت ، سأحب استخراجه والمساهمة فيه.

تستخدم الأمثلة أعلاه كلمة رسم بياني ، ولكني أفضل استخدام الرسم البياني. يحتوي العنوان نفسه على هذا كخيار وقد يتلاعب الكود الخاص بي بالرسوم البيانية بمعنى CS.

لقد قمت للتو بتحويل مخطط المكبس الخاص بي https://github.com/winding-lines/piston-chart إلى أحدث إصدار. هو موضع تقدير أي ردود فعل :)

ما هو الوضع على الرسوم البيانية في كونرود؟

يعرض الدليل المخططات كما هو مخطط لها ولكن لم يتم تنفيذها واختفى إعادة الشراء على الرسم البياني المكبس.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات