Charts: ************* Переход на Charts 3.0 ********************

Созданный на 19 сент. 2016  ·  61Комментарии  ·  Источник: danielgindi/Charts

Многие спрашивали, как перейти на Charts 3.0. Так что все будет в примечаниях к выпуску, как только выйдет релиз, но сейчас я запишу их здесь:


Это основной выпуск с несколькими критическими изменениями. Пожалуйста, обратите внимание.

Обновления:

  • x-index мертвы. Введение: x-значения. У каждой записи теперь есть x и y .
  • Круговые / радарные диаграммы больше не имеют понятия индекса X
  • Унифицированные функции и возможности XAxis / YAxis.
  • Единый интерфейс форматирования осей.
  • Новое средство форматирования для значений y , больше не наследуемых от NSNumberFormatter, для получения информации о наборе данных и области просмотра для принятия более эффективных решений по форматированию.
  • Существенный рефакторинг механизма Highlight.
  • Переработанный маркерный механизм
  • Отредактированный механизм ввода легенды
  • Каждый набор данных теперь может устанавливать свою собственную форму легенды / размер / и т. Д.
  • Больше демонстраций
  • Некоторые классы были переименованы с сохранением имени в пространстве имен только в ObjC (с использованием функции Swift 2.2 objc(...) и изменения основного обновления версии)
  • FillFormatter теперь имеет представление блока с помощью FillFormatter.withblock(...)
  • То же самое и для всех форматеров по умолчанию.
  • Больше нет saveToCameraRoll() . Поскольку Xcode 8.0 вызывает проблемы с "конфиденциальностью" в Apple Review, для этого вам нужно добавить ключ конфиденциальности фотоальбомов в свой Info.plist .
  • Перешел на Swift 3.0. Убедитесь, что ваш проект соответствует Swift 3.0.
  • Множество мелких исправлений и улучшений

Критические изменения / способ миграции:

  • Изменились все конструкторы наборов данных - они больше не принимают массив x-индексов.
  • Все конструкторы входов изменились - они принимают X и Y.
  • Записи круговой и радарной диаграмм теперь имеют свои собственные классы. Поэтому замените классы Entry на PieChartDataEntry / RadarChartDataEntry
  • Если у вас есть старые вызовы startAtZeroEnabled - они давно устарели. Замените их на axisMinimum .
  • Если вы используете средства форматирования:

    • Замените любые chart.valueFormatter = formatter на chart.valueFormatter = ChartDefaultValueFormatter(formatter: formatter) или chart.valueFormatter = [[ChartDefaultValueFormatter alloc] initWithFormatter:formatter];

    • Замените любые axis.valueFormatter = formatter на axis.valueFormatter = ChartDefaultAxisValueFormatter(formatter: formatter) или axis.valueFormatter = [[ChartDefaultAxisValueFormatter alloc] initWithFormatter:formatter];

  • В общем, все функции, которые раньше принимали x-индексы, теперь принимают x-значение, поэтому вам, возможно, придется немного изменить имена.
  • Если реализовано ChartViewDelegate , обновите интерфейс chartValueSelected
  • Замените drawSliceTextEnabled на drawEntryLabelsEnabled
  • Если у вас есть настраиваемая форма разброса - реализуйте IShapeRenderer и поместите туда свой код рендеринга.
  • Если у вас есть собственный маркер - рассмотрите возможность создания подкласса MarkerView / MarkerImage или реализации IMarker . Вариантов больше, чем раньше ...
  • Если вы раньше использовали barSpace , перейдите к использованию barWidth
  • Если вы использовали saveToCameraRoll() , замените его на UIImageWriteToSavedPhotosAlbum(chart.getChartImage(trasparent: false), nil, nil, nil)
  • Некоторые классы были переименованы для наглядности. Они больше не содержат префикса «Диаграмма». Это только для Swift, где есть пространства имен. В ObjC имена остались прежними из-за использования пространства имен с использованием функции Swift 2.2 @objc(name) . Если ваш компилятор кричит, что класс не существует, попробуйте удалить Chart из его имени. Это должно происходить в редких случаях, поскольку мы выбрали только те классы, которые редко создаются пользователем.

Самый полезный комментарий

@Carielle Чтобы установить Charts 3.0.0 до того, как он станет совместимым с CocoaPods, удалите старые Charts из файла модуля и проекта, а затем загрузите файл Charts.xcodeproj с этой страницы github.

Затем откройте целевой проект в XCode и перетащите файл Charts.xcodeproj из каталога, в который он загружен, в свой проект в интерфейсе XCode.

После этого добавьте Charts.framework в раздел «Встроенный двоичный файл» общих настроек вашего проекта.

Все 61 Комментарий

@danielgindi Поддержите коконады?

@danielgindi, могу ли я скопировать эти классы в свой проект, как раньше?

Еще нет в Cocoapods. Как я уже сказал, он еще не выпущен.

Да, вы можете скопировать его классы, как раньше. Однако удобнее перетащить xcodeproj в проект. Не рекомендуется перетаскивать сами исходники, так как это затруднит обновление Chrats в вашем проекте.

@danielgindi
Спасибо за отличную работу!

Теперь у меня проблема, я замечаю, что x-индексы мертвы:

- x-indexes are dead. Intoducing: x-values. Each entry now has an x and a y.
- In general, all functions that accepted x-indices before, now accept an x-value,   
   so you might have to adjust the names a little bit.

Тогда как я могу показать строку (например, строку даты) на xAxis, а не число с плавающей запятой (например, 1.0, 2.0 ...)?

Ответ Даниэля:

Получите NSTimeInterval даты, NSTimeInterval на самом деле является двойным.

Не могу дождаться релиза! 👍

@danielgindi С

Направьте свой подфайл на главную ветку вместо версии на данный момент

@ petester42 Спасибо за совет, однако я не могу заставить его работать. Изменил мой подфайл на pod 'Charts', :git => 'https://github.com/danielgindi/Charts.git', :branch => 'master' и запустил установку модуля. Результат выглядел так:
snip20160919_3
Но потом я все еще получал ошибку «Использовать устаревшую языковую версию Swift», когда пытался запустить проект:
snip20160919_1

Есть еще полезные подсказки?

@Carielle Чтобы установить Charts 3.0.0 до того, как он станет совместимым с CocoaPods, удалите старые Charts из файла модуля и проекта, а затем загрузите файл Charts.xcodeproj с этой страницы github.

Затем откройте целевой проект в XCode и перетащите файл Charts.xcodeproj из каталога, в который он загружен, в свой проект в интерфейсе XCode.

После этого добавьте Charts.framework в раздел «Встроенный двоичный файл» общих настроек вашего проекта.

@ALL действительно проверяйте # 1291 на предмет быстрых проблем 2.3 и 3.0

Укажите ошибку в описании миграции :
Если вы используете средства форматирования:

  • Замените любой chart.valueFormatter = formatter на chart.valueFormatter = ChartDefaultValueFormatter (formatter: formatter) или chart.valueFormatter = [[ChartDefaultValue Value Formatter alloc] initWith Formatter: formatter ];
  • Замените любой axis.valueFormatter = formatter на axis.valueFormatter = ChartDefaultAxisValueFormatter (formatter: formatter) или axis.valueFormatter = [[ChartDefaultAxisValue Value Formatter alloc] initWith Formatter: formatter ];

Я получаю то же, что и @Carielle , попробую, что сказал @HenryAlkire

captura de tela 2016-09-20 as 09 38 38

Какую ветку вы используете?

@rrecio Этого не может быть .. Я исправил это как несколько дней назад.

Я использовал обычную установку cocoapod: pod 'Charts'

Чтобы исправить это, я удалил запись Podfile и вручную связал Charts.framework, как объяснил @Henry

Enviado do meu iPhone

Em 20 de set de 2016, в 21:59, Xuan [email protected] escreveu:

@rrecio Этого не может быть .. Я исправил это как несколько дней назад.

-
Вы получаете это, потому что вас упомянули.
Ответьте на это письмо напрямую, просмотрите его на GitHub или отключите чат.

Есть идеи, когда это будет доступно на Cocoapods?

Как мне обновить диаграммы для работы с Xcode 8.0 и Swift 3.0 с помощью Carthage?

Когда я запускаю "carthage update", он все еще тянет Charts 2.3.0. My Cartfile настроен на использование последней версии.

Cartfile:

github "danielgindi / Charts"

Командная строка:

обновление $ carthage
** Таблицы клонирования* * Результат клонирования
** Клонирование realm-какао* * Проверка графиков на "v2.3.0"

@danielgindi
Было бы здорово, если бы вы включили эти функции ... Поскольку эти функции должны быть в основной части библиотеки ... особенно в High Charts:

1) линейный график с разной формой маркеров
https://github.com/danielgindi/Charts/issues/1405

2) Возможность добавления пользовательского представления в определенных местах по оси X. Настройка цвета фона отсутствует в большинстве представлений.
https://github.com/danielgindi/Charts/issues/1416

Carthage использует последнюю версию выпуска. Если вы хотите 3.0 (которая еще не выпущена), используйте github "danielgindi/Charts" "master"

Загрузите полный проект, используя главную ветку, а затем перетащите Charts.xcodeproj, затем перейдите на вкладку «Общие» и добавьте Charts.framework в разделе « Встроенные двоичные @ petester42 @ Хуанг-Либо

@HenryAlkire Я сделал то, что вы предложили, и удалил диаграммы из моего подфайла, перетащил их вручную в свой проект и добавил как встроенный двоичный файл. Однако, когда я пытаюсь создать проект, я продолжаю получать эту ошибку:
dyld: Library not loaded: @rpath/libswiftCore.dylib Reason: image not found
Кажется, на него ссылаются Charts.framework / Charts. Есть идеи, как решить эту проблему?

Я решил свою проблему - мой проект является проектом Objective-C с использованием библиотеки Swift Charts, поэтому мне пришлось перейти в «Настройки сборки»> «Параметры сборки»> «Всегда встраивать стандартные библиотеки Swift» и установить для него значение ДА. Это заменяет устаревший флаг «Embedded Content Contains Swift».

@Carielle Также можно увидеть эту проблему https://github.com/danielgindi/Charts/issues/1487

@danielgindi Можно ли оценить выпуск

Спасибо за ваши старания 👍

Вы можете использовать диаграммы 3 с cocoapods прямо сейчас, указав на главную ветку. Мы не можем гарантировать, что это будет стабильно, поскольку оно не окончательное.

@ petester42 Я предоставляю модуль фреймворка, который в спецификации модуля зависит от диаграмм. К сожалению, вы не можете указать другой репозиторий или ветки в спецификациях подов, как в файлах подов. Я мог бы перезаписать свой Podfile для моего примера проекта, но это не распространяется. Так что я пока привязан к Swift 2.2. Но спасибо за подсказку :)

Обновление для других, использующих диаграммы 3 с Cocoapods

Я работаю над переносом проекта с Swift 2.2 и Xcode 7 на Swift 3.0 и Xcode 8.0. Следуя подходу @Carielle - и как @ petester42 упоминает выше - диаграммы 3 могут быть установлены с помощью cocoapods.

Изменение подфайла, чтобы он имел:

pod 'Charts', :git => 'https://github.com/danielgindi/Charts.git', :branch => 'master'

привел к следующему для меня (1 октября 2016 г.)

screen shot 2016-10-01 at 7 00 20 pm

Тем не менее, все еще есть некоторые проблемы со временем сборки, над которыми я работаю, как и следовало ожидать, пока не будет выпущена финальная версия.

Например, plotView.xAxis.setLabelsToSkip(10) вызывает проблемы, поскольку метод setLabelsToSkip теперь не распознается. Могу ли я предположить, что это временно, пока идет работа над финальной версией, или есть какой-то другой метод, который мне следует использовать?

Спасибо @danielgindi и другим за вашу отличную работу! Я был бы рад помочь внести свой вклад в документацию по миграции, поскольку я учусь, адаптируя свой собственный проект.

Перед обновлением диаграммы iOS до версии 3.0 я могу
let radarChartData = RadarChartData (xVals: dataPoints, dataSet: radarChartDataSet)

однако после обновления невозможно установить xVals в RadarChartData, только
let radarChartData = RadarChartData (dataSet: radarChartDataSet)

Как я могу установить xVals в последней версии. Я пытался
dataEntry = RadarChartDataEntry (значение: Double (CleaningValue), данные: "setTitle" как AnyObject?)
но не работает, я просмотрел много документов, но не могу найти, как это сделать, не могли бы вы привести мне пример для этого, спасибо, посоветуйте.

@AnChiChang, пожалуйста, внимательно прочтите примечания выше.

спасибо, понял через тикет 1496

как я могу отформатировать x-значения из массива double в массив строк в v3.0?

@bingozb, пожалуйста, посмотрите демо

Google

var a: Double = 1,5
var b: String = String (формат: "% f", a)
print ("b: (b)") // b: 1.500000

@danielgindi Я использую

NSMutableArray * values ​​= [[NSMutableArray alloc] init];
[значения addObject: [[ChartDataEntry alloc] initWithX: i y: val]];
LineChartDataSet * set1 = [[LineChartDataSet alloc] initW ithValues: метка

демонстрация просто использует двойные x-значения. ChartDataEntry не имеют метода инициализации, которым я могу отправить строковый параметр.
Что ж, я увидел проблемы и обнаружил, что в одном из них говорится, что мы можем отправить целочисленные значения даты, затем отформатировать их и отобразить на метке x. Но я не могу найти способ об этом. На самом деле я не уверен, что это может работать таким образом.
Помоги мне, пожалуйста. Мне нужно показать дату оси x.

Привет @bingozb

Я надеюсь, что ваши значения X хранятся в одном массиве, поэтому, пожалуйста, сделайте это,

NSMutableArray * xVals;

  • (NSString *) stringForValue: (двойное) значение
    ось: (ChartAxisBase *) ось
    {
    if (xVals.count> 0) {
    вернуть xVals [(int) значение% xVals.count]; // эту расчетную базу, которую вы хотите отобразить.
    }
    вернуть ноль;
    }

Надеюсь, вы меня понимаете.

@ rs10693 Да, я нашел этот метод протокола. Похоже, я должен это реализовать. Но я считаю, что ни один делегат не соответствовал протоколу IChartAxisValueFormatter. Кто должен соблюдать этот протокол и где реализовать этот метод. Я позволил своему контроллеру сделать это, но он не работает.

@bingozb Используйте ChartViewDelegate и IChartAxisValueFormatter, и я надеюсь, что вы @import Charts;

@ rs10693 Понятно ! делегат - valueFormatter ...

@bingozb что ты можешь сказать, я не понимаю. пожалуйста, уточните меня.

@danielgindi я все еще не могу установить Charts 3.0.0

Следующая ошибка возникает при запуске pod install
Анализ зависимостей
[!] Невозможно удовлетворить следующие требования:

  • Charts (~> 3.0.0) требуется Podfile

Ни один из ваших источников спецификаций не содержит спецификации, удовлетворяющей зависимости: Charts (~> 3.0.0) .

У вас есть либо:

  • устаревшие исходные репозитории, которые можно обновить с помощью pod repo update .
  • неправильно набрал название или версию.
  • не добавил исходный репозиторий, в котором размещен Podspec, в ваш Podfile.

Примечание. Начиная с CocoaPods 1.0, pod repo update pod install по умолчанию не встречается в

Пожалуйста, помогите, это означает, что Charts 3.0.0 еще не выпущен для установки с помощью

или я пропустил какой-либо шаг.

3.0 еще не входит в состав cocoapods, потому что он не окончательный. Вы можете указать на git repo и master, чтобы получить 3.0 прямо сейчас

Приятно знать.

Но я немного беспокоюсь, нужно ли нам обновлять наш стручок какао или его репозиторий для установки недавно выпущенной версии 3.0.0.

woot 🎉

@danielgindi, тебе нужно, чтобы я толкнул капсулу, или ты это прикрыл?

Пытался, теперь спустя долгое время сказал, что podspec не проверяет ...

Я. на это нужно время. Я могу это сделать. Для работы с Xcode 8 / swift 3 вам понадобится cocoapods 1.1

@ petester42 @danielgindi
у меня есть
pod --version = 1.1.0

но все же команда pod install устанавливает старую версию.

Анализ зависимостей
Скачивание зависимостей
Installing Charts (2.3.0)

Пожалуйста, направьте

Теперь он работает после обновления основного репозитория пода, спасибо за помощь

Получение такой ошибки в Swift 3.0 при реализации гистограммы с использованием этой библиотеки.

screen shot 2017-01-11 at 1 22 48 pm

После устранения вышеуказанной ошибки появляется следующая ошибка, как показано ниже.

screen shot 2017-01-11 at 12 57 26 pm

Как исправить такую ​​ошибку в Swift 3.0?

let chartDataSet = BarChartDataSet (значения: dataEntries, label: nil)
пусть chartData = BarChartData (dataSet: chartDataSet)

насчет xVals вы должны реализовать stringForValue.

Спасибо. как мне реализовать stringForValue для xVals.

Пожалуйста, приведите три быстрых примера

Привет,
Я только что перешел с 2 на 3 (я использую 3.0.2) и столкнулся с двумя проблемами:

  • Если в моем наборе данных есть 0 значений, гистограмма сдвигается, это странно, и я в значительной степени использую код демонстрационных примеров. Любая идея ?
  • Есть ли способ скрыть значения 0 вместе и просто показать значения, которые> 0?

Спасибо за ваш вклад.

screen shot 2017-06-09 at 12 15 13 pm
screen shot 2017-06-09 at 12 13 47 pm

в классе BarChartRenderer
в открытой функции переопределения drawValues ​​(контекст: CGContext)
добавить строку 408
`` ''
если! dataSet.isStacked
{
для j в 0 .. <Int (ceil (Double (dataSet.entryCount) * animator.phaseX))
{
охранник пусть e = dataSet.entryForIndex (j) как? BarChartDataEntry else {продолжить}

                    let rect = buffer.rects[j]

                    let x = rect.origin.x + rect.size.width / 2.0

                    if !viewPortHandler.isInBoundsRight(x)
                    {
                        break
                    }
                    if !viewPortHandler.isInBoundsY(rect.origin.y)
                        || !viewPortHandler.isInBoundsLeft(x)
                    {
                        continue
                    }

                    let val = e.y
                    if val == 0                            <-----------this line
                    {                                           <-----------this line
                        continue                         <-----------this line
                    }                                          <-----------this line

`` ''

добавьте переменную, если хотите
var drawValuesZeroEnabled: Bool {установить}

Спасибо, Тьерри.
Так что исправлено :)

У меня все еще есть проблема с этим странным интервалом.

Итак, я только что создал гистограмму по умолчанию со значением 0, и у меня все еще есть проблема - я попытался максимально приблизиться к простой полосе, чтобы увидеть, в чем проблема.

Это похоже на демонстрацию, но как только я устанавливаю значение от 0 до 0,9999, я получаю это заполнение.

Вот пример кода:

    <strong i="11">@IBOutlet</strong> var barChartView: BarChartView!

 func viewDidLoad() {
        super.viewDidLoad()
         self.styleChart()
         self.configureChart()
    }

    internal func styleChart() {
        self.barChartView.xAxis.labelPosition = .bottom
        self.barChartView.xAxis.labelCount = 2
    }

    internal func configureChart() {

        var xValues = [String]()
        var entries: [ChartDataEntry] = Array()

         xValues.append("TEST 5")
         xValues.append("TEST 0")
         entries.append(BarChartDataEntry(x: Double(0), y: Double(5) ))
         entries.append(BarChartDataEntry(x: Double(1), y: Double(0) ))


        let dataSet = BarChartDataSet(values: entries, label: "")
        dataSet.drawIconsEnabled = false
        dataSet.drawValuesEnabled = true

        let formatter = NumberFormatter()
        formatter.numberStyle = NumberFormatter.Style.decimal
        dataSet.valueFormatter = DefaultValueFormatter(formatter: formatter)

        let barChartData = BarChartData(dataSet: dataSet)
        barChartData.barWidth = 0.2        
         self.barChartView.data = barChartData
    }

Довольно просто.

Это ошибка?

Проблема с 0:
screen shot 2017-06-12 at 11 55 15 am

Нет 0:
screen shot 2017-06-12 at 12 21 20 pm

Спасибо вам за помощь ;)

Где я могу найти документацию о старом API для графиков? Я никогда не использовал этот фреймворк (за исключением того, что обновлял его несколько раз), и мне нужно обновить его с 2.3 до 3.0.4, поэтому старые документы было бы неплохо для определения старого кода, например:

[entrySet addObject:[[ChartDataEntry alloc] initWithValue: item.avgSpeed xIndex:index]];

Теперь нет init с именем initWithValue: xIndex , но есть init, который вызывается:

initWithX: y: , поэтому я пытаюсь выяснить, какие были старые параметры и как использовать новый init для достижения того же результата ...

Также отсутствует массив valuesObjc:

//myLineChartView is LineChartView
 NSDate* date = (NSDate*)[myLineChartView.xAxis.valuesObjc objectAtIndex:index];

Как я уже сказал, я никогда не использовал этот фреймворк, так что некоторая помощь будет признательна, или, по крайней мере, будет полезна ссылка на старые документы API ...

Я не думаю, что такой ресурс существует. Вы можете проверить ветку legacy / 2.3, чтобы проверить демонстрации и тому подобное, чтобы сравнить их с другими текущими версиями.

BarChartData.init (xVals: xVals, dataSets: dataSets) не может работать. что это заменить?

Как я могу программно прокрутить значение x линейной диаграммы в центр?

Была ли эта страница полезной?
0 / 5 - 0 рейтинги