Charts: تحديث متحرك

تم إنشاؤها على ٧ يوليو ٢٠١٥  ·  21تعليقات  ·  مصدر: danielgindi/Charts

أهلا!
هل هناك طريقة لتحديث بيانات LineChartView (ChartData) وإعادة رسم LineChartView المتحرك من الوضع الحالي.
كما هو الحال في تطبيق appFigures.
شكرا.

idea

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

لقد مر أكثر من عامين ، هل يعرف أحد كيفية تنفيذ ذلك؟

ال 21 كومينتر

هذه في الواقع ميزة فكرت فيها بالفعل ، وأخطط لتنفيذها.
لدينا الكثير في صفحتنا الآن - لذا في هذه الأثناء ، إذا كان هذا مهمًا حقًا بالنسبة لك - يمكنك القيام بذلك:

قم بإنشاء دالة تأخذ مجموعة البيانات _A_ ومجموعة البيانات _B_ وقيمة _phase_ بين 0 و 1 .
هذه الوظيفة سوف:

  1. تحديد مجموعة بيانات جديدة _C_
  2. كرر كل قيمة في _A_ ، وقم بتعيين C[i] = (B[i] - A[i]) * phase + A[i]
  3. إرجاع _C_ كمجموعة بيانات جديدة

الآن يجب عليك تحريك رقم بسيط من 0 إلى 1 ، وتمريره إلى الوظيفة جنبًا إلى جنب مع مجموعة البيانات "from" و "إلى". يجب تمرير النتيجة إلى عرض الرسم البياني :-)

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

إنها كعكة خوخ إلى حد كبير ، وبمجرد أن أستطيع أن أخطط لإضافة هذا إلى المكتبة. لكن على الأقل لديك حل في هذه الأثناء ؛-)

أهلا! هل هذه الميزة منفذة بالفعل؟

أحتاج إلى تحريك إضافة قيمة جديدة إلى مجموعة البيانات وتغيير موضع خط الحد.

مرحبًا ، أحاول تطبيق الرسوم المتحركة لتغيير البيانات في مخطط دائري. لدي بالفعل الوظيفة التي ذكرتها ولكني أجد صعوبة في العثور على طريقة "لتحريك رقم بسيط من 0 إلى 1". اي افكار في هذا؟ شكرا!

أهلا! الميزة منفذة بالفعل؟

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

قد ترغب في إلقاء نظرة على المنشور أدناه حيث قمت بمشاركة الحل الخاص بي. أنا أدرك أنه بعيد عن الكمال ولكن يبدو أنه يعمل ، وهو أمر لطيف. http://stackoverflow.com/questions/34730917/animating-a-double-from-0-to-1-in-swift-over-a-specified-interval/34774113#34774113

شكرًا على الرد السريع apiejh ، أقدر ذلك حقًا. تمكنت من الحصول على هذا العمل مع وظيفة مؤقت. رائع ، لكنه يعمل! على الأقل حتى يتوفر نهج أفضل.

أي تحديثات أو حلول ممكنة لهذا؟

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

kevinjtchen فقط ضع العلاقات العامة لهذا https://github.com/danielgindi/Charts/pull/2889

"يمكنك أيضًا استخدام الرسوم المتحركة المستخدمة في الرسوم البيانية ، والتي يمكنها تحريك رقم بالفعل ، بما في ذلك التخفيف والأشياء."

لا أرى أي خيار لتحريك مجموعة بيانات واحدة فقط في المخطط بأكمله. هل فاتني شيء؟

لقد مر أكثر من عامين ، هل يعرف أحد كيفية تنفيذ ذلك؟

هل سيتم تنفيذ هذا في أي وقت؟ أحب أن أكون قادرًا على القيام بشيء بسيط مثل

lineChart.animate(to: newDataSet, duration: 1.0);

فقط امسح مجموعة القيم القديمة واملأها بالقيم الجديدة قبل استدعاء مخطط الإعداد ()

إنه عام 2019 بالفعل وهل هناك حل لتغييرات البيانات المتحركة دون إعادة رسم المخطط بالكامل من البداية؟ 🙂

لقد مر أكثر من عامين ، هل يعرف أحد كيفية تنفيذ ذلك؟

لقد مرت أكثر من أربع سنوات حتى الآن ، هناك شيء يخبرني أننا لن نحصل على هذا:

لست متأكدًا من سبب إغلاق PR # 2889 ، ولكن بالنسبة لأولئك الذين لا يزالون يريدون بعض مقتطفات التعليمات البرمجية السريعة لتنفيذ danielgindis: https://github.com/mrjko/testCharts/blob/master/chartsTest/BarChartViewController/BarChartViewController.swift

هل يعرف أي شخص طريقة للقيام بذلك لـ lineChart ، لا بد لي من تغيير موضع النقطة بسلاسة دون إعادة رسم المخطط بأكمله.

vittorionapoli يمكنك استخدام نفس mrjko المنشور أعلاه ، لكن استبدله بـ LineChartDataSet

func partialResults(setA: LineChartDataSet, setB: LineChartDataSet, phase: Double) -> LineChartDataSet {
    let newSet = LineChartDataSet()

    for index in 0..<setA.entries.count {
        let currA = setA.entries[index].y
        let currB = setB.entries[index].y

        let newValue = (currB - currA) * phase + currA
        newSet.append(BarChartDataEntry(x: Double(index), y: newValue))
    }

    return newSet
}

mrjko كيف سيكون الأسلوب أعلاه يعمل لمجموعة من yValues لمرصوف شريط الرسم البياني؟
BarChartDataEntry(x: Double(index), yValues: [anArrayOfyValues])

تحديث الحل المقدم بـ LineChartDataSet وأيضًا إضافة / إزالة قيم جديدة من مجموعة البيانات إذا كان حجم setA و setB مختلفًا.

    func partialResults(setA: LineChartDataSet, setB: LineChartDataSet, phase: Double) -> LineChartDataSet {
        let newSet = LineChartDataSet()
        let setACount = setA.entries.count
        let setBCount = setB.entries.count

        for index in 0..<min(setACount, setBCount) {
            let currA = setA.entries[index].y
            let currB = setB.entries[index].y

            let newValue = (currB - currA) * phase + currA
            newSet.append(ChartDataEntry(x: Double(index), y: newValue))
        }

        let diff = abs(setACount - setBCount)
        if setACount < setBCount {
            for index in setBCount - diff..<setBCount {
                let currB = setB.entries[index].y
                let newValue = currB
                newSet.append(ChartDataEntry(x: Double(index), y: newValue))
            }
        } else if setACount > setBCount {
            for index in setACount - diff..<setACount {
                let currA = setA.entries[index].y
                let newValue = currA
                newSet.append(ChartDataEntry(x: Double(index), y: newValue))
            }
        }

        return newSet
    }

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