Android 版AAchartView图表中 aaSeries.connectNulls 即断点不连属性的使用

AAchartView是一个比较强大的 图表控件,各种版本的。

IOS版的已经使用。Android 版的正在开发。在App的图表中要实现一个按时间顺序显示数据,但在某个时间点没有数据,就不显示数据(而不是显示0)。

AAchartView 中有两个图表设置参数类:AAChartModel,AAOptions。

在IOS版中按照demo 很简单的就实现了(AAChartKitLib 放到项目中)       .connectNullsSet(false) 断点不连  

 AAChartModel *aaChartModel = AAChartModel.new

    .chartTypeSet(AAChartTypeArea)

    .connectNullsSet(false)

    .yAxisMaxSet(@13.0)

    .yAxisGridLineStyleSet([AALineStyle styleWithWidth:@2])

    //    .categoriesSet(@[@"Java", @"Swift",@"C", @"C#", @"C++", @"Perl",])

    .markerRadiusSet(@0)

    .polarSet(true)//是否极化图形

    .seriesSet(@[

        AASeriesElement.new

        .dataSet(@[@15.0,@15.0,@15.0,@15.0,@15.0,@15.0,]),

        AASeriesElement.new

        .dataSet(@[@9.0,@9.0,@9.0,@9.0,@9.0,@9.0,]),

        AASeriesElement.new

        .dataSet(@[@6.0,@6.0,@6.0,@6.0,@6.0,@6.0,]),

        AASeriesElement.new

        .dataSet(@[@3.0,@3.0,@3.0,@3.0,@3.0,@3.0,]),

    ])

    .seriesSet(@[

        AASeriesElement.new

        .nameSet(@"2020")

        .colorSet((id)AAGradientColor.deepSeaColor)

        .dataSet(@[@9.9,NSNull.null, @9.9,NSNull.null,@9.9, NSNull.null, ]),

    ])

    ;

在android 中就照着 IOS 中的翻译,都是一样的(aachart 还是非常不错的),在..connectNullsSet(false) 时没有自动提示属性,原来没有这个属性(android是AAChartCore版)。

但是在lib源码中还是搜索到connectNulls这属性,是AAOptions的一个属性。经过IOS版和android版的比较发现:

 1. 两个版中AAOptions都有connectNulls,而android 版的AAChartModel 没有,ios的AAChartModel的是有的。

 2. AAChartModel的参数最终都是转换为AAOptions的参数。


IOS版 AAChartModel-->AAOptions的部分参数转转的一个函数

(configureTheStyleOfConnectNodeWithChartModel),AASeries aaSeries 这块 aaSeries.connectNulls = aaChartModel.connectNulls;

+ (void)configureTheStyleOfConnectNodeWithChartModel:(AAChartModel *)aaChartModel

                                         plotOptions:(AAPlotOptions *)aaPlotOptions {

    AAChartType aaChartType = aaChartModel.chartType;

    //数据点标记相关配置,只有折线图、曲线图、折线区域填充图、曲线区域填充图、散点图才有数据点标记

    if (   aaChartType == AAChartTypeArea

        || aaChartType == AAChartTypeAreaspline

        || aaChartType == AAChartTypeLine

        || aaChartType == AAChartTypeSpline

        || aaChartType == AAChartTypeScatter

        || aaChartType == AAChartTypeArearange

        || aaChartType == AAChartTypeAreasplinerange

        || aaChartType == AAChartTypePolygon

        ) {

        AAMarker *aaMarker = AAMarker.new

        .radiusSet(aaChartModel.markerRadius)//曲线连接点半径,默认是4

        .symbolSet(aaChartModel.markerSymbol);//曲线点类型:"circle", "square", "diamond", "triangle","triangle-down",默认是"circle"

       

        if (aaChartModel.markerSymbolStyle == AAChartSymbolStyleTypeInnerBlank) {

            aaMarker.fillColorSet(AAColor.whiteColor)//点的填充色(用来设置折线连接点的填充色)

            .lineWidthSet(@(0.4 * aaChartModel.markerRadius.floatValue))//外沿线的宽度(用来设置折线连接点的轮廓描边的宽度)

            .lineColorSet(@"");//外沿线的颜色(用来设置折线连接点的轮廓描边颜色,当值为空字符串时,默认取数据点或数据列的颜色)

        } else if (aaChartModel.markerSymbolStyle == AAChartSymbolStyleTypeBorderBlank) {

            aaMarker.lineWidthSet(@2)

            .lineColorSet(aaChartModel.backgroundColor);

        }

       

        AASeries *aaSeries = aaPlotOptions.series;

        aaSeries.connectNulls = aaChartModel.connectNulls;

        aaSeries.marker = aaMarker;

    }

}

android版的 AAChartModel-->AAOptions调用时没有configureAAPlotOptionsMarkerStyle),AASeries aaSeries 这块没有 aaSeries.connectNulls(aaChartModel.connectNulls);

private static void configureAAPlotOptionsMarkerStyle (

        AAChartModel aaChartModel,

        AAPlotOptions aaPlotOptions

) {

    String aaChartType = aaChartModel.chartType;

    //数据点标记相关配置,只有线性图(折线图、曲线图、折线区域填充图、曲线区域填充图、散点图、折线范围填充图、曲线范围填充图、多边形图)才有数据点标记

    switch (aaChartType) {

        case AAChartType.Area:

        case AAChartType.Areaspline:

        case AAChartType.Line:

        case AAChartType.Spline:

        case AAChartType.Scatter:

        case AAChartType.Arearange:

        case AAChartType.Areasplinerange:

        case AAChartType.Polygon:

            AAMarker aaMarker = new AAMarker()

                    .radius(aaChartModel.markerRadius) //曲线连接点半径,默认是4

                    .symbol(aaChartModel.markerSymbol); //曲线点类型:"circle", "square", "diamond", "triangle","triangle-down",默认是"circle"


            if (aaChartModel.markerSymbolStyle.equals(AAChartSymbolStyleType.InnerBlank)) {

                aaMarker.fillColor(AAColor.White) //点的填充色(用来设置折线连接点的填充色)

                        .lineWidth(2f) //外沿线的宽度(用来设置折线连接点的轮廓描边的宽度)

                        .lineColor(""); //外沿线的颜色(用来设置折线连接点的轮廓描边颜色,当值为空字符串时,默认取数据点或数据列的颜色)

            } else if (aaChartModel.markerSymbolStyle.equals(AAChartSymbolStyleType.BorderBlank)) {

                aaMarker.lineWidth(2f)

                        .lineColor(aaChartModel.backgroundColor);

            }

            AASeries aaSeries = aaPlotOptions.series;

            aaSeries.marker(aaMarker);


            break;

    }

}

通过上两个版本的比较发现 转换的过程android 确实没有aaSeries.connectNulls 转换,android 版的AAChartModel 肯定没有。

那就通过AAOptions 来设置:connectNulls 的路径为  aaOptions.plotOptions.series.connectNulls

AAOptions options = configureUOptions(data);

aaChartView.aa_drawChartWithChartOptions(options);


private AAOptions configureUOptions(List data){

   AAChartModel aaChartModel = configureUChartModelVol(data);

    aaChartModel.chartType = AAChartType.Spline;

    aaChartModel.markerRadius = new Float(0);

    aaChartModel.stacking = AAChartStackingType.False;


   AAOptions aaOptions = aaChartModel.aa_toAAOptions();

   aaOptions.plotOptions.series.connectNulls(false); //断点不连

   return aaOptions;

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值