C3: عدد صحيح فقط من المحور x و y

تم إنشاؤها على ١٥ أكتوبر ٢٠١٤  ·  9تعليقات  ·  مصدر: c3js/c3

كيف تجعل المحور علامة ليكون عدد صحيح فقط؟
qq 20141015141217

ما حاولت استخدامه هو استخدام خيار التجزئة:

tick: {
    format: function(x) {
        return (x == Math.floor(x)) ? x : "";
    }
}

هذا يمكن أن يجعل التسمية تظهر فقط عددًا صحيحًا ، لكن الخط الفاصل على المحور لا يزال موجودًا.
qq 20141015141829

هل هناك طريقة للتحكم في علامة المحور؟

question resolved maybe

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

نسخة أفضل:

    axis: {
        y: {
            tick: {
                format: function(x) { return x % 1 === 0 ? x : ''; }
            }
        }
    }

ال 9 كومينتر

في إصدار التطوير الحالي (الرئيسي) ، يمكنك استخدام قيم المحور ص لتعيين قائمة

{
  axis: {
    y: {
      ticks: [1,2,3]
    }
  }
}

لكن هذا لا يمكن أن يكون ديناميكيًا بناءً على مصدر البيانات ، هل أنا على حق؟

يمكنك حساب هذه القيم بعد تحميل البيانات ، وتعيينها على chart.internal.config.axis_y_tick_values ثم استدعاء chart.flush() لتطبيق قيم المحور الجديدة.

ماذا عن هذا الرمز؟

    axis: {
        y: {
            tick: {
                format: function (x) {
                    if (x != Math.floor(x)) {
                      var tick = d3.selectAll('.c3-axis-y g.tick').filter(function () {
                        var text = d3.select(this).select('text').text();
                        return +text === x;
                      }).style('opacity', 0);
                      return '';
                    }
                    return x;
                }
            }
        }
    }

يبدو أنه تم حلها بالفعل ، لذا من فضلك دعني أختم.

FWIW ، تتطلب معرفة الأجزاء الداخلية لـ D3 وتشغيل JS يبدو غريبًا حقًا. أرى هذا النمط كثيرًا في مشكلات C3 هذه: شخص ما لديه مشكلة ، وبدلاً من تقديم خيار C3 ، فإن 5-30 سطراً من جافا سكريبت التي يتم التعامل مع SVG الأساسي بها مع d3 هو الحل المقبول. أعتقد على المدى الطويل أن هذا سيكون ضارًا كبيرًا لاعتماد C3.

بالنسبة لهذه المشكلة على وجه الخصوص ، سيكون خيار "axis.y.tick.integer_only" ذا قيمة مذهلة. أرغب في تقديم امتداد لـ C3 لهذا الغرض. أرى امتداد المثال هنا . هل يوجد دليل إرشادي في مكان ما يمكن أن يرشدني؟

شكر!

تحرير: القواعد.

يمكنك حساب هذه القيم بعد تحميل البيانات ، وتعيينها على chart.internal.config.axis_y_tick_values ​​ثم استدعاء chart.flush () لتطبيق قيم المحور الجديدة.

بالإشارة إلى هذا ، لأنني واجهت هذه المشكلة أيضًا اليوم - سيؤدي إجراء flush() إلى إفساد حركة تغيير البيانات ، كما أن إضافة التأخير به بعض الثغرات الرسومية. ومع ذلك ، فإن تعيين chart.internal.config.axis_y_tick_values إلى القيمة المناسبة قبل استدعاء load() يعمل بشكل مثالي. ربما يكون هذا مفيدًا لشخص ما :).

نسخة أفضل:

    axis: {
        y: {
            tick: {
                format: function(x) { return x % 1 === 0 ? x : ''; }
            }
        }
    }

شكرا لك نابينه - عملت علاج.

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

القضايا ذات الصلة

laurentdebricon picture laurentdebricon  ·  3تعليقات

unlight picture unlight  ·  3تعليقات

wojciechowskid picture wojciechowskid  ·  3تعليقات

jstone-ponderosa picture jstone-ponderosa  ·  3تعليقات

Shugardude picture Shugardude  ·  4تعليقات