1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/iOS_wanglu-AAChartKit

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

AAChartKit

English Document 🇬🇧 | 简体中文文档 🇨🇳 | 繁體中文文檔 🇭🇰

The Swift version of AAChartKit can be found here:

https://github.com/AAChartModel/AAChartKit-Swift

Preface

AAChartKit — это элегантный и дружелюбный (удобный для пользователя и экологичный) фреймворк для построения диаграмм на iOS, основанный на открытых библиотеках JavaScript Highcharts. AAChartKit чрезвычайно мощный, простой в настройке и удобный в использовании. В настоящее время AAChartKit поддерживает следующие типы диаграмм: столбчатая диаграмма, гистограмма, диаграмма с областями, линейная диаграмма, точечная диаграмма, радарная диаграмма, полярная диаграмма, круговая диаграмма, пузырьковая диаграмма, пирамидальная диаграмма, воронкообразная диаграмма, столбчатая диаграмма диапазонов и диаграмма областей диапазонов. Планируется поддержка большего количества типов диаграмм. AAChartKit предоставляет вам лёгкий и быстрый доступ к широкому спектру типов диаграмм, беспроблемную и быструю интеграцию в ваш собственный проект.


Особенности

  • Экологичность. Поддержка iOS, iPadOS и macOS. Полная поддержка языка Objective-C, а также доступны версии на других языках, таких как язык Swift AAInfographics, язык Java AAChartCore и язык Kotlin AAInfographics. Чтобы получить более подробную информацию, вы можете посмотреть список ссылок на исходный код.

  • 🚀 Мощный и простой в использовании. Поддерживает столбчатые диаграммы, гистограммы, диаграммы с областями, диаграммы с областями сплайнов, линейные диаграммы, диаграммы сплайнов, радарные диаграммы, полярные диаграммы, круговые диаграммы, пузырьковые диаграммы, пирамидальные диаграммы, воронкообразные диаграммы, столбчатые диаграммы диапазонов, диаграммы областей диапазонов и другие графики. Планируется поддерживать больше типов диаграмм.

  • 📝 Современный декларативный синтаксис. В отличие от предыдущих императивных методов программирования, при создании любой пользовательской диаграммы в AAChartKit вам не нужно заботиться о внутренней реализации. Интерактивный и анимированный. Эффект анимации диаграмм изящный, деликатный, плавный и красивый.

Цепочное программирование. Поддерживает синтаксис цепочечного программирования, такой как Masonry.

Минимализм. AAChartKit следует формуле минимализма: вид диаграммы + модель диаграммы = нужная вам диаграмма, прямо как в мощной и красивой библиотеке диаграмм AAInfographics.

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


Оценка красоты

Столбчатая диаграмма Диаграмма диапазона столбцов Площадь диаграммы
image1 image1 image1
Линейная диаграмма Диаграмма ступенчатой области Диаграмма ступенчатой линии
image1 image1 image1
Диаграмма сплайна Диаграмма области сплайна Сложенная полярная диаграмма
image1 image1 image1
Пузырьковая диаграмма Диаграмма среднего значения площади Смешанная столбчатая линейная диаграмма
image1 image1 image1
Точечная диаграмма Боксплот-диаграмма Зеркальная столбчатая диаграмма
image1 image1 image1

Установка

CocoaPods (рекомендуется)

  1. Добавьте следующее содержимое
pod 'AAChartKit', :git => 'https://github.com/AAChartModel/AAChartKit.git'

в ваш файл Podfile.

  1. Запустите pod install или pod update.

Вручную (старый способ)

  1. Перетащите папку AAChartKitLib в свой проект.

  2. Добавьте следующее в ваш файл .pch:

#import "AAGlobalMacro.h"

Использование

  1. Добавьте в файл контроллера вида следующее:
#import "AAChartKit.h"
  1. Создайте экземпляр объекта вида диаграммы: AAChartView
CGFloat chartViewWidth  = self.view.frame.size.width;
CGFloat chartViewHeight = self.view.frame.size.height - 250;
_aaChartView = [[AAChartView alloc]init];
_aaChartView.frame = CGRectMake(0, 60, chartViewWidth, chartViewHeight);
//_aaChartView.scrollEnabled = NO;
[self.view addSubview:_aaChartView];
  1. Настройте модель диаграммы. AAChartModel
AAChartModel *aaChartModel = AAChartModel.new;
.chartTypeSet(AAChartTypeArea)
.titleSet(@"THE HEAT OF PROGRAMMING LANGUAGE")
.subtitleSet(@"Virtual Data")
.categoriesSet(@[@"Java",@"Swift",@"Python",@"Ruby", @"PHP",@"Go",@"C",@"C#",@"C++"])
.yAxisTitleSet(@"Degrees Celsius")
.seriesSet(@[
    AASeriesElement.new
    .nameSet(@"2017")
    .dataSet(@[@7.0, @6.9, @9.5, @14.5, @18.2, @21.5, @25.2, @26.5, @23.3, @18.3, @13.9, @9.6]),
    AASeriesElement.new
    .nameSet(@"2018")
    .dataSet(@[@0.2, @0.8, @5.7, @11.3, @17.0, @22.0, @24.8, @24.1, @20.1, @14.1, @8.6, @2.5]),
    AASeriesElement.new
    .nameSet(@"2019")
    .dataSet(@[@0.9, @0.6, @3.5, @8.4, @13.5, @17.0, @18.6, @17.9, @14.3, @9.0, @3.9, @1.0]),
    AASeriesElement.new
    .nameSet(@"2020")
    .dataSet(@[@3.9, @4.2, @5.7, @8.5, @11.9, @15.2, @17.0, @16.6, @14.2, @10.3, @6.6, @4.8]),
]);
;
  1. Нарисуйте диаграмму (этот метод вызывается только при первом создании экземпляра объекта AAChartView).
//Объект представления диаграммы вызывает экземпляр объекта AAChartModel и рисует окончательный графический объект
[_aaChartView aa_drawChartWithChartModel:aaChartModel];

🎉🎉🎉 Поздравляем! Всё сделано!!! Вы получите то, что хотите!!! 🌈🌈🌈

Обновление содержимого диаграммы

Если вы хотите обновить содержимое диаграммы, вам следует сделать следующее. В соответствии с вашими фактическими потребностями выберите функцию, которая вам подходит.

  • Обновите данные диаграммы (этот метод рекомендуется для динамического обновления данных серии).
//Динамически обновляйте данные диаграммы только тогда, когда атрибут series объекта AAChartModel обновляется
[_aaChartView aa_onlyRefreshTheChartDataWithChartModelSeries:aaChartModelSeriesArray];
  • Обновите диаграмму, исключая данные диаграммы (рекомендуется для последующих обновлений после завершения первого рисования графики. Если вы хотите обновлять только данные диаграммы, используйте функцию aa_onlyRefreshTheChartDataWithChartModelSeries).
//Обновите диаграмму после обновления содержимого AAChartModel
[_aaChartView aa_refreshChartWithChartModel:aaChartModel];

Примеры

  • линейная диаграмма

IMG_1867.JPG

  • столбчатая диаграмма

IMG_1873.JPG

  • гистограмма

IMG_1880.JPG

  • специальная площадная диаграмма один

IMG_1869.JPG

  • специальная площадная диаграмма два

IMG_1871.JPG

  • специальная площадная диаграмма три

IMG_1863.JPG

  • радарная диаграмма

IMG_1877.JPG

  • полярная диаграмма

IMG_1879.JPG

  • круговая диаграмма

IMG_1878.JPG

  • пузырьковая диаграмма

IMG_1875.JPG

  • точечная диаграмма

scatter chart

  • площадно-интервальная диаграмма

arearange chart

  • ступенчатая площадная диаграмма

step area chart Поддержка сегментирования диапазона значений

  • Диаграмма с сегментацией диапазона значений «полосы».
  • Диаграмма с сегментацией диапазона значений «линии».
  • Диаграмма с сегментацией диапазона значений «зоны».

Поддержка обновления данных диаграммы при прокрутке

Поддержка сортировки данных с эффектом анимации

Поддерживаемые типы диаграмм на данный момент

typedef NSString *AAChartType;

AACHARTKIT_EXTERN AAChartType const AAChartTypeColumn;          //column chart
AACHARTKIT_EXTERN AAChartType const AAChartTypeBar;             //bar chart
AACHARTKIT_EXTERN AAChartType const AAChartTypeArea;            //area chart
AACHARTKIT_EXTERN AAChartType const AAChartTypeAreaspline;      //area spline chart
AACHARTKIT_EXTERN AAChartType const AAChartTypeLine;            //line chart
AACHARTKIT_EXTERN AAChartType const AAChartTypeSpline;          //spline chart
AACHARTKIT_EXTERN AAChartType const AAChartTypeScatter;         //scatter chart
AACHARTKIT_EXTERN AAChartType const AAChartTypePie;             //pie chart
AACHARTKIT_EXTERN AAChartType const AAChartTypeBubble;          //bubble chart
AACHARTKIT_EXTERN AAChartType const AAChartTypePyramid;         //pyramid chart
AACHARTKIT_EXTERN AAChartType const AAChartTypeFunnel;          //funnel chart
AACHARTKIT_EXTERN AAChartType const AAChartTypeColumnrange;     //column range chart
AACHARTKIT_EXTERN AAChartType const AAChartTypeArearange;       //area range chart
AACHARTKIT_EXTERN AAChartType const AAChartTypeAreasplinerange; //area spline range chart
AACHARTKIT_EXTERN AAChartType const AAChartTypeBoxplot;         //box plot chart
AACHARTKIT_EXTERN AAChartType const AAChartTypeWaterfall;       //Waterfall chart
AACHARTKIT_EXTERN AAChartType const AAChartTypePolygon;         //polygon chart

Поддерживаемые типы жестов масштабирования на данный момент

typedef NSString *AAChartZoomType;

AACHARTKIT_EXTERN AAChartZoomType const AAChartZoomTypeNone;
AACHARTKIT_EXTERN AAChartZoomType const AAChartZoomTypeX;
AACHARTKIT_EXTERN AAChartZoomType const AAChartZoomTypeY;
AACHARTKIT_EXTERN AAChartZoomType const AAChartZoomTypeXY;

Поддерживаемые типы анимации на данный момент

typedef NS_ENUM(NSInteger,AAChartAnimation) {
    AAChartAnimationLinear = 0,
    AAChartAnimationEaseInQuad,
    AAChartAnimationEaseOutQuad,
    AAChartAnimationEaseInOutQuad,
    AAChartAnimationEaseInCubic,
    AAChartAnimationEaseOutCubic,
    AAChartAnimationEaseInOutCubic,
    AAChartAnimationEaseInQuart,
    AAChartAnimationEaseOutQuart,
    AAChartAnimationEaseInOutQuart,
    AAChartAnimationEaseInQuint,
    AAChartAnimationEaseOutQuint,
``` Вот перевод текста на русский язык:

**AAChartAnimationEaseInOutQuint, AAChartAnimationEaseInSine, AAChartAnimationEaseOutSine, AAChartAnimationEaseInOutSine, AAChartAnimationEaseInExpo, AAChartAnimationEaseOutExpo, AAChartAnimationEaseInOutExpo, AAChartAnimationEaseInCirc, AAChartAnimationEaseOutCirc, AAChartAnimationEaseInOutCirc, AAChartAnimationEaseOutBounce, AAChartAnimationEaseInBack, AAChartAnimationEaseOutBack, AAChartAnimationEaseInOutBack, AAChartAnimationElastic, AAChartAnimationSwingFromTo, AAChartAnimationSwingFrom, AAChartAnimationSwingTo, AAChartAnimationBounce, AAChartAnimationBouncePast, AAChartAnimationEaseFromTo, AAChartAnimationEaseFrom, AAChartAnimationEaseTo**

Это десять конкретных типов анимации AAChartKit.

| Обратное | Отскок | Циркулярное | Кубическое | Эластичное |
|:--------:|:------:|:----------:|:---------:|:---------:|
| ![][1]    | ![][2]   | ![][3]      | ![][4]     | ![][5]     |


| Экспоненциальное | Квадратичное | Квартальное | Квинтильное | Синусоидальное |
|:----------------:|:-----------:|:------------:|:-------------:|:--------------:|
| ![][6]           | ![][7]        | ![][8]         | ![][9]         | ![][10]         |

## AAChartModel: список атрибутов диаграммы
```objective-c
AAPropStatementAndPropSetFuncStatement(copy,   AAChartModel, NSString *, title);
AAPropStatementAndPropSetFuncStatement(copy,   AAChartModel, NSNumber *, titleFontSize);
AAPropStatementAndPropSetFuncStatement(copy,   AAChartModel, NSString *, titleFontColor);
AAPropStatementAndPropSetFuncStatement(copy,   AAChartModel, NSString *, titleFontWeight);

AAPropStatementAndPropSetFuncStatement(copy,   AAChartModel, NSString *, subtitle);
AAPropStatementAndPropSetFuncStatement(copy,   AAChartModel, NSNumber *, subtitleFontSize);
AAPropStatementAndPropSetFuncStatement(copy,   AAChartModel, NSString *, subtitleFontColor);
AAPropStatementAndPropSetFuncStatement(copy,   AAChartModel, NSString *, subtitleFontWeight);

AAPropStatementAndPropSetFuncStatement(strong, AAChartModel, NSArray  *, series);

AAPropStatementAndPropSetFuncStatement(copy,   AAChartModel, AAChartSubtitleAlignType, subtitleAlign);
AAPropStatementAndPropSetFuncStatement(copy,   AAChartModel, AAChartType,              chartType);
AAPropStatementAndPropSetFuncStatement(copy,   AAChartModel, AAChartStackingType,      stacking);
AAPropStatementAndPropSetFuncStatement(copy,   AAChartModel, AAChartSymbolType,        symbol);
AAPropStatementAndPropSetFuncStatement(assign, AAChartModel, AAChartSymbolStyleType,   symbolStyle);
AAPropStatementAndPropSetFuncStatement(copy,   AAChartModel, AAChartZoomType,          zoomType);
AAPropStatementAndPropSetFuncStatement(assign, AAChartModel, AAChartAnimation,         animationType);

AAPropStatementAndPropSetFuncStatement(strong, AAChartModel, NSNumber *, animationDuration);
AAPropStatementAndPropSetFuncStatement(assign, AAChartModel, BOOL,       inverted);
AAPropStatementAndPropSetFuncStatement(assign, AAChartModel, BOOL,       xAxisReversed);
AAPropStatementAndPropSetFuncStatement(assign, AAChartModel, BOOL,       yAxisReversed);
AAPropStatementAndPropSetFuncStatement(assign, AAChartModel, BOOL,       gradientColorEnabled);
AAPropStatementAndPropSetFuncStatement(assign, AAChartModel, BOOL,       polar);
AAPropStatementAndPropSetFuncStatement(assign, AAChartModel, BOOL,       dataLabelEnabled);
AAPropStatementAndPropSetFuncStatement(copy,   AAChartModel, NSString *, dataLabelFontColor);
AAPropStatementAndPropSetFuncStatement(strong, AAChartModel, NSNumber *, dataLabelFontSize);
AAPropStatementAndPropSetFuncStatement(copy,   AAChartModel, NSString *, dataLabelFontWeight);
AAPropStatementAndPropSetFuncStatement(assign, AAChartModel, BOOL,       xAxisLabelsEnabled);
AAPropStatementAndPropSetFuncStatement(copy,   AAChartModel, NSNumber *, xAxisLabelsFontSize);
AAPropStatementAndPropSetFuncStatement(copy,   AAChartModel, NSString *, xAxisLabelsFontColor);
AAPropStatementAndPropSetFuncStatement(copy,   AAChartModel, NSString *, xAxisLabelsFontWeight);
AAPropStatementAndPropSetFuncStatement(strong, AAChartModel, NSArray *, *);

*Примечание: в тексте запроса присутствуют фрагменты кода на языке Objective-C, которые не были переведены.* **Категории)**

AAPropStatementAndPropSetFuncStatement(strong, AAChartModel, NSNumber *, xAxisGridLineWidth);
AAPropStatementAndPropSetFuncStatement(strong, AAChartModel, NSNumber *, xAxisTickInterval);

AAPropStatementAndPropSetFuncStatement(assign, AAChartModel, BOOL,       xAxisVisible);
AAPropStatementAndPropSetFuncStatement(assign, AAChartModel, BOOL,       yAxisVisible);
AAPropStatementAndPropSetFuncStatement(assign, AAChartModel, BOOL,       yAxisLabelsEnabled);
AAPropStatementAndPropSetFuncStatement(copy,   AAChartModel, NSString *, yAxisTitle);
AAPropStatementAndPropSetFuncStatement(copy,   AAChartModel, NSNumber *, yAxisLabelsFontSize);
AAPropStatementAndPropSetFuncStatement(copy,   AAChartModel, NSString *, yAxisLabelsFontColor);
AAPropStatementAndPropSetFuncStatement(copy,   AAChartModel, NSString *, yAxisLabelsFontWeight);
AAPropStatementAndPropSetFuncStatement(strong, AAChartModel, NSNumber *, yAxisGridLineWidth);
AAPropStatementAndPropSetFuncStatement(strong, AAChartModel, NSArray     <NSString *>*, colorsTheme);
AAPropStatementAndPropSetFuncStatement(copy,   AAChartModel, NSString *, backgroundColor);

AAPropStatementAndPropSetFuncStatement(assign, AAChartModel, BOOL,       tooltipEnabled);
AAPropStatementAndPropSetFuncStatement(copy,   AAChartModel, NSString *, tooltipValueSuffix);
AAPropStatementAndPropSetFuncStatement(copy  , AAChartModel, NSString *, tooltipValueString);
AAPropStatementAndPropSetFuncStatement(assign, AAChartModel, BOOL,       tooltipCrosshairs);
AAPropStatementAndPropSetFuncStatement(assign, AAChartModel, BOOL,       connectNulls);
AAPropStatementAndPropSetFuncStatement(assign, AAChartModel, BOOL,       legendEnabled);

AAPropStatementAndPropSetFuncStatement(strong, AAChartModel, NSNumber *, borderRadius);
AAPropStatementAndPropSetFuncStatement(strong, AAChartModel, NSNumber *, markerRadius);

AAPropStatementAndPropSetFuncStatement(assign, AAChartModel, BOOL,       yAxisAllowDecimals);
AAPropStatementAndPropSetFuncStatement(strong, AAChartModel, NSArray  *, yAxisPlotLines);
AAPropStatementAndPropSetFuncStatement(strong, AAChartModel, NSNumber *, yAxisMax);
AAPropStatementAndPropSetFuncStatement(strong, AAChartModel, NSNumber *, yAxisMin);
AAPropStatementAndPropSetFuncStatement(strong, AAChartModel, NSArray  *, yAxisTickPositions); ## Контакт

-------------------------------------------------------------------------------
* 🌕 🌖 🌗 🌘   Полезные советы!!!   🌑 🌒 🌓 🌔
*
* Пожалуйста, свяжитесь со мной на GitHub, если у вас возникнут проблемы при использовании.
* Проблемы GitHub: https://github.com/AAChartModel/AAChartKit/issues
-------------------------------------------------------------------------------
* И если вы хотите внести свой вклад в этот проект, пожалуйста, также свяжитесь со мной
* GitHub        : https://github.com/AAChartModel
* StackOverflow : https://stackoverflow.com/users/12302132
* JianShu       : http://www.jianshu.com/u/f1e6753d4254
* SegmentFault  : https://segmentfault.com/u/huanghunbieguan
-------------------------------------------------------------------------------

## Список задач

 - [x] Поддержка добавления делегатов пользователем после завершения загрузки графического содержимого
 - [x] Поддержка динамического обновления глобального содержимого графики
 - [x] Поддержка динамического обновления чистого содержимого данных (`series`) графики
 - [x] Поддержка обновления чистых данных в реальном времени и динамической прокрутки графики
 - [x] Поддержка эффектов градиента цветового слоя
 - [x] Поддержка 3D-эффектов графики, действительна только для части графиков, таких как `столбчатая диаграмма, гистограмма, круговые диаграммы, точечная диаграмма, пузырьковая диаграмма` и т. д.
 - [x] Поддержка `CocoaPods`
 - [ ] Поддержка `Carthage`
 - [x] Свободная настройка анимации рендеринга графики
 - [x] Возможность свободной настройки свойств объекта модели `AAOptions` пользователем
 - [x] Поддержка стекирования графики
 - [x] Поддержка реверсирования оси графики
 - [x] Поддержка отрисовки точечной диаграммы
 - [x] Поддержка отрисовки карты диапазона столбцов
 - [x] Поддержка отрисовки графика области диапазона
 - [x] Поддержка отрисовки полярной диаграммы
 - [x] Поддержка отрисовки ступенчатой линейной диаграммы
 - [x] Поддержка отрисовки ступенчатой диаграммы области
 - [x] Поддержка отрисовки ночной розы 🌹 диаграммы
 - [x] Поддержка отрисовки круговой диаграммы прогресса
 - [x] Поддержка обратных вызовов событий кликов для графики
 - [ ] Поддержка теста покрытия кода

[1]:  https://raw.githubusercontent.com/adad184/MMTweenAnimation/master/Images/1.gif
[2]:  https://raw.githubusercontent.com/adad184/MMTweenAnimation/master/Images/2.gif
[3]:  https://raw.githubusercontent.com/adad184/MMTweenAnimation/master/Images/3.gif
[4]:  https://raw.githubusercontent.com/adad184/MMTweenAnimation/master/Images/4.gif
[5]:  https://raw.githubusercontent.com/adad184/MMTweenAnimation/master/Images/5.gif
[6]:  https://raw.githubusercontent.com/adad184/MMTweenAnimation/master/Images/6.gif
[7]:  https://raw.githubusercontent.com/adad184/MMTweenAnimation/master/Images/7.gif
[8]:  https://raw.githubusercontent.com/adad184/MMTweenAnimation/master/Images/8.gif
[9]:  https://raw.githubusercontent.com/adad184/MMTweenAnimation/master/Images/9.gif
[10]: https://raw.githubusercontent.com/adad184/MMTweenAnimation/master/Images/10.gif

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Чрезвычайно элегантный и удобный фреймворк для визуализации данных, который поддерживает столбчатые диаграммы, линейные графики, гистограммы, кривые, заполненные гистограммы и кривые с заливкой. Также есть пузырьковые диаграммы, кольцевые диаграммы, точечные диаграммы, радарные диаграммы и смешанные диаграммы — всего несколько десятков видов инф... Развернуть Свернуть
MIT
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/iOS_wanglu-AAChartKit.git
git@api.gitlife.ru:oschina-mirror/iOS_wanglu-AAChartKit.git
oschina-mirror
iOS_wanglu-AAChartKit
iOS_wanglu-AAChartKit
master