这是一个高度定制的 iOS 和 Mac 应用程序图表控件,它使用 Echart(Echart2) 构建。它只是封装了 JavaScript 的控件。它提供了一个链式方式来描述您的 echarts 配置。它方便关注应用程序的逻辑并优化代码。它避免了开发者思维分散在 JavaScript 和 Objective-C 之间的交互。
提示:如果您想使用 iOS8.0,我建议您使用基于
WKWebView
的WKEchartsView
。由于WKEchartsView
的接口与PYEchartsView
相同,因此如果您正在使用PYEchartsView
,只需将PYEchartsView
改为WKEchartsView
。
如果您喜欢这个控件,请给它 star。这可以使我更加关注它。
如果您发现任何问题,请 issue 给我。也热烈欢迎 pull requests。
有两种方式在您的项目中使用 iOS-Echarts:
pod iOS-Echarts
Remove references
create floder references
添加名为 'js' 和 'theme' 的目录当您使用它时,应在您的项目中导入一个头文件:iOS-Echarts.h
。最后,只需初始化您所需的 PYEchartsView 和 PYOption。
如果您不知道如何设置正确的选项值,您可以在 EChart 网站 中查看文档。
// Firstly, you should have a instance of PYEchartsView
@property (weak, nonatomic) IBOutlet PYEchartsView *echartsView;
...
PYOption *option = ... // Then, configure something about options
// Finally, load echarts view
[_echartsView setOption:option];
[_echartsView loadEcharts];
[property-name]Equal
PYOption *option = [PYOption initPYOptionWithBlock:^(PYOption *option) {
option.titleEqual([PYTitle initPYTitleWithBlock:^(PYTitle *title) {
title.textEqual(@"Event River").subtextEqual(@"Test subtext");
}])
.tooltipEqual([PYTooltip initPYTooltipWithBlock:^(PYTooltip *tooltip) {
tooltip.triggerEqual(PYTooltipTriggerItem).enterableEqual(YES);
}])
.legendEqual([PYLegend initPYLegendWithBlock:^(PYLegend *legend) {
legend.dataEqual(@[@"first data", @"second data"]);
}])
.toolboxEqual([PYToolbox initPYToolboxWithBlock:^(PYToolbox *toolbox) {
toolbox.showEqual(YES).featureEqual([PYToolboxFeature initPYToolboxFeatureWithBlock:^(PYToolboxFeature *feature) {
feature.markEqual([PYToolboxFeatureMark initPYToolboxFeatureMarkWithBlock:^(PYToolboxFeatureMark *mark) {
mark.showEqual(YES);
}])
.restoreEqual([PYToolboxFeatureRestore initPYToolboxFeatureRestoreWithBlock:^(PYToolboxFeatureRestore *restore) {
restore.showEqual(YES);
}]);
}]);
}])
.xAxisEqual([[NSMutableArray alloc] initWithArray:@[axis]])
.seriesEqual([[NSMutableArray alloc] initWithArray:@[series1, series2]])
.gridEqual([PYGrid initPYGridWithBlock:^(PYGrid *grid) {
grid.xEqual(@10)
.x2Equal(@30);
}]);
}];
NSMutableArray
的属性时,您应该首先尝试add
方法。option.addXAxis(//Something about PYAxis)
.addYAxis(//Something about PYAxis)
.addSeries(//Something about PYSeries or sub class of PYSeries)
PYSeries
的子类实例时,您应该首先为其子类属性赋值,然后按照如下方式为PYSeries
赋值。.addSeries([PYCartesianSeries initPYCartesianSeriesWithBlock:^(PYCartesianSeries *series) {
series.stackEqual(@"Total")
.smoothEqual(YES)
.symbolEqual(PYSymbolArrow)
.symbolSizeEqual(@6)
.symbolRotateEqual(@(-45))
.nameEqual(@"Data1")
.typeEqual(PYSeriesTypeLine)
.itemStyleEqual([PYItemStyle initPYItemStyleWithBlock:^(PYItemStyle *itemStyle) {
itemStyle.normalEqual([PYItemStyleProp initPYItemStylePropWithBlock:^(PYItemStyleProp *normal) {
normal.colorEqual(PYRGBA(255, 0, 0, 1))
.lineStyleEqual([PYLineStyle initPYLineStyleWithBlock:^(PYLineStyle *lineStyle) {
lineStyle.widthEqual(@2).typeEqual(PYLineStyleTypeDashed);
}]);
}]).emphasisEqual([PYItemStyleProp initPYItemStylePropWithBlock:^(PYItemStyleProp *emphasis) {
emphasis.colorEqual(PYRGBA(0, 0, 255, 1));
}]);
}])
.dataEqual(@[@(320), @(332), @"-", @(334), @{@"value":@(390),@"symbol":@"star6",@"symbolSize":@(20),@"symbolRotate":@(10),@"itemStyle":@{@"normal":@{@"color":@"yellowgreen"},@"emphasis":@{@"color":@"orange",@"lable":@{@"show":@(YES),@"position":@"inside",@"textStyle":@{@"fontSize":@(20)}}}}}, @(330), @(320)]);
}])
PYCartesianSeries
是PYSeries
的子类,并且stack
、smooth
、symbol
、symbolSize
和symbol
是PYCartesianSeries
的属性。因此,您应该在为PYSeries
的属性赋值之前,先为它们赋值。
PYEventRiverSeries *series1 = [PYEventRiverSeries initPYEventRiverSeriesWithBlock:^(PYEventRiverSeries *series) {
series.weight = @123;
series.name = @"Series name";
series.type = PYSeriesTypeEventRiver;
}];
init[Type]WithBlock
进行创建。PYAxis *axis = [PYAxis initPYAxisWithBlock:^(PYAxis *axis) {
axis.typeEqual(PYAxisTypeTime).boundaryGapEqual(@[@0.05, @0.1]);
}];
您可以在Twitter或新浪微博上关注和联系我。如果您想为这个项目贡献,也可以联系我。
如果您有QQ,可以加入群号485591970的群组。
所有源代码都在MIT许可下。