美文网首页
iOS-Echarts的链式编程,实现折线图

iOS-Echarts的链式编程,实现折线图

作者: 低音区 | 来源:发表于2020-07-16 11:08 被阅读0次

参考地址

主要利用echarts的SDK实现折线图,echarts利用宏定义+runtime实现了链式编程。熟悉echarts的小伙伴儿都知道那种骚气的写法。话不多讲,上代码。

截屏2020-07-16 上午11.06.18.png
//折线图
-(void)showLineCharts {
        
    PYOption *option = [PYOption initPYOptionWithBlock:^(PYOption *option) {
        option.calculableEqual(false)//是否启用拖拽重计算特性,默认关闭
        .colorEqual(@[@"#3079F5", @"#16AE9D"])//数值系列的颜色列表(折线颜色)
        /** 提示框 */
        .tooltipEqual([PYTooltip initPYTooltipWithBlock:^(PYTooltip *tooltip) {
            tooltip.triggerEqual(@"axis")
            .textStyleEqual([PYTextStyle initPYTextStyleWithBlock:^(PYTextStyle *textStyle) {//设置文字大小
                textStyle.fontSizeEqual([NSNumber numberWithInt:12]);//文字size
            }])
            .axisPointerEqual([PYAxisPointer initPYAxisPointerWithBlock:^(PYAxisPointer *axisPoint) {//设置线宽度
                axisPoint.lineStyleEqual([PYLineStyle initPYLineStyleWithBlock:^(PYLineStyle *lineStyle) {
                    lineStyle.widthEqual(@1);
                }]);
            }]);
        }])
        /** 图例 */
        .legendEqual([PYLegend initPYLegendWithBlock:^(PYLegend *legend) {//设置图例
            legend.dataEqual(@[@"企业库",@"项目库"]);
        }])
        /** 直角坐标系内绘图网格, 说明见下图 */
        .gridEqual([PYGrid initPYGridWithBlock:^(PYGrid *grid) {
            //左上角位置
            grid.xEqual(@45)
            .yEqual(@20)
            // 右下角位置
            .x2Equal(@20)
            .y2Equal(@30)
            .borderWidthEqual(@0);
        }])
        /** X轴设置 */
        .addXAxis([PYAxis initPYAxisWithBlock:^(PYAxis *axis) {
            axis.typeEqual(@"category")//横轴默认为类目型(就是坐标自己设置)
            .boundaryGapEqual(@(YES))
            .dataEqual([[NSMutableArray alloc]initWithObjects:@"30", @"31", @"1", @"2", @"3", @"4", @"5", nil])
            .splitLineEqual([PYAxisSplitLine initPYAxisSplitLineWithBlock:^(PYAxisSplitLine *splitLine) {
                splitLine.showEqual(NO);//分隔线
            }])
            .axisLineEqual([PYAxisLine initPYAxisLineWithBlock:^(PYAxisLine *axisLine) {
                axisLine.showEqual(NO);//坐标轴线
            }])
            .axisTickEqual([PYAxisTick initPYAxisTickWithBlock:^(PYAxisTick *axisTick) {
                axisTick.showEqual(YES);// 坐标轴小标记
            }]);
        }])
        /** Y轴设置 */
        .addYAxis([PYAxis initPYAxisWithBlock:^(PYAxis *axis) {
            axis.splitNumberEqual(@7)// 分割段数,默认为5
            .typeEqual(@"value")// 纵轴默认为数值型(就是坐标系统生成), 改为 @"category" 会有问题, 读者可以自行尝试
            .axisLineEqual([PYAxisLine initPYAxisLineWithBlock:^(PYAxisLine *axisLine) {
                axisLine.showEqual(NO);
            }])
            .splitLineEqual([PYAxisSplitLine initPYAxisSplitLineWithBlock:^(PYAxisSplitLine *splitLine) {
                splitLine.lineStyleEqual([PYLineStyle initPYLineStyleWithBlock:^(PYLineStyle *lineStyle) {
                    lineStyle.typeEqual(@"dashed");// 分割线类型 'solid' | 'dotted' | 'dashed' 虚线类型
                }]);
            }]);
        }])
        /** 第一条折线设置 */
        .addSeries([PYSeries initPYSeriesWithBlock:^(PYSeries *series) {
            series.nameEqual(@"企业库")
            .typeEqual(PYSeriesTypeLine)// 类型为折线
            /*PS PYCartesianSeries为PYSeries的子类,symbolSize是PYCartesianSeries的属性.未找到调用方式*/
            //.markPointEqual([PYMarkPoint initPYMarkPointWithBlock:^(PYMarkPoint *markPoint) {
            //    markPoint.symbolSizeEqual(@1.5);// 坐标点大小
            //}])
            .itemStyleEqual([PYItemStyle initPYItemStyleWithBlock:^(PYItemStyle *itemStyle) {// 坐标点样式, 设置连线的宽度
                itemStyle.normalEqual([PYItemStyleProp initPYItemStylePropWithBlock:^(PYItemStyleProp *itemStyleProp) {
                    itemStyleProp.lineStyleEqual([PYLineStyle initPYLineStyleWithBlock:^(PYLineStyle *lineStyle) {
                        lineStyle.widthEqual(@1.5);
                    }]);
                }]);
            }])
            // 添加坐标点 y 轴数据 ( 如果某一点 无数据, 可以传 @"-" 断开连线 如 : @[@"7566", @"-", @"7571"]  )
            .dataEqual(@[@"620", @"890", @"630", @"1050", @"1000", @"850", @"1200"]);
        }])
        /** 第二条折线设置 */
        .addSeries([PYSeries initPYSeriesWithBlock:^(PYSeries *series) {
            series.nameEqual(@"项目库")
            .typeEqual(PYSeriesTypeLine)// 类型为折线
            /*PS PYCartesianSeries为PYSeries的子类,symbolSize是PYCartesianSeries的属性.未找到调用方式*/
            //.markPointEqual([PYMarkPoint initPYMarkPointWithBlock:^(PYMarkPoint *markPoint) {
            //    markPoint.symbolSizeEqual(@1.5);// 坐标点大小
            //}])
            .itemStyleEqual([PYItemStyle initPYItemStyleWithBlock:^(PYItemStyle *itemStyle) {// 坐标点样式, 设置连线的宽度
                itemStyle.normalEqual([PYItemStyleProp initPYItemStylePropWithBlock:^(PYItemStyleProp *itemStyleProp) {
                    itemStyleProp.lineStyleEqual([PYLineStyle initPYLineStyleWithBlock:^(PYLineStyle *lineStyle) {
                        lineStyle.widthEqual(@1.5);
                    }]);
                }]);
            }])
            // 添加坐标点 y 轴数据 ( 如果某一点 无数据, 可以传 @"-" 断开连线 如 : @[@"7566", @"-", @"7571"]  )
            .dataEqual(@[@"1200", @"500", @"320", @"850", @"1070", @"900", @"850"]);
        }]);
    }];
    
    //self.chartView.userInteractionEnabled = NO;
    [self.chartView setOption:option];
    [self.chartView loadEcharts];
}

PS:只是转译了一下别人的代码。最上面有链接。

相关文章

  • iOS-Echarts的链式编程,实现折线图

    参考地址 主要利用echarts的SDK实现折线图,echarts利用宏定义+runtime实现了链式编程。熟悉e...

  • Objective-C实现链式编程语法(DSL)

    Objective-C实现链式编程语法(DSL) Objective-C实现链式编程语法(DSL)

  • 几种编程思想在iOS中的实现:(二)函数式编程

    前期回顾 (一)链式编程 在上一篇文章——(一)链式编程的最后有提到,尽管例子中实现了所谓的链式编程,但是在使用(...

  • iOS链式编程及函数式编程

    提到链式编程和函数式编程,最典型的代表是Masonry 比较完美的实现了函数式编程和链式编程。例如 ``` [vi...

  • 链式文件生成器原理分析(一)

    在OC里面实现链式编程,可以使用返回调用者自身来实现。但是类有很多,每个类也有很多方法,假如要实现链式编程,则需要...

  • iOS-链式编程思想

    在iOS中,链式编程虽然用的不太多,但是,在特定的应用环境下,利用block实现链式编程的话,会大大的提高编程效率...

  • iOS链式编程

    在iOS中,链式编程虽然用的不太多,但是,在特定的应用环境下,利用block实现链式编程的话,会大大的提高编程效率...

  • Object-C简单实现链式编程

    Object-C实现链式编程 链式编程,多用于给对象赋值操作,可以一直.下去,方便赋值操作 例如: Object-...

  • jQuery 链式编程

    jQuery 链式编程 链式编程原理 链式编程代码示例 隐式迭代

  • 链式编程

    最近有时间看了下Masonry的实现原理,大家都知道Masonry就是经典的链式编程思想 链式编程小练习 1.创建...

网友评论

      本文标题:iOS-Echarts的链式编程,实现折线图

      本文链接:https://www.haomeiwen.com/subject/bjfphktx.html