首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在ios-charts中设置水平条形长度?

如何在ios-charts中设置水平条形长度?
EN

Stack Overflow用户
提问于 2016-08-25 02:58:00
回答 1查看 305关注 0票数 1

我在github上使用了ios-charts项目,并使用了HorizontalCharts示例。它在示例中运行良好,但当我尝试设置水平条形值时,条形图太长了。示例在此处可见:

我的代码是:

代码语言:javascript
复制
-(void)setupChart{
myQuota = [[DataManager shared] myQuota];
[self setupBarLineChartView:_chartView];

_chartView.delegate = self;

_chartView.drawBarShadowEnabled = NO;
_chartView.drawValueAboveBarEnabled = YES;

_chartView.maxVisibleValueCount = 60;

ChartXAxis *xAxis = _chartView.xAxis;
xAxis.labelPosition = XAxisLabelPositionBottom;
xAxis.labelFont = [UIFont systemFontOfSize:10.f];
xAxis.drawAxisLineEnabled = YES;
xAxis.drawGridLinesEnabled = YES;
xAxis.gridLineWidth = .3;

ChartYAxis *leftAxis = _chartView.leftAxis;
leftAxis.labelFont = [UIFont systemFontOfSize:10.f];
leftAxis.drawAxisLineEnabled = YES;
leftAxis.drawGridLinesEnabled = YES;
leftAxis.drawLabelsEnabled = NO; 
leftAxis.gridLineWidth = .3;
leftAxis.axisMinValue = 0.0; 

ChartYAxis *rightAxis = _chartView.rightAxis;
rightAxis.enabled = YES;
rightAxis.labelFont = [UIFont systemFontOfSize:10.f];

rightAxis.drawAxisLineEnabled = YES;
rightAxis.drawGridLinesEnabled = NO;
rightAxis.axisMinValue = 0.0; 
rightAxis.yOffset = 1.0;
rightAxis.axisMaxValue = [myQuota.quota doubleValue]; // here is 10

_chartView.doubleTapToZoomEnabled = NO;
_chartView.highlightPerTapEnabled = NO;
_chartView.legend.enabled = NO;

[_chartView animateWithYAxisDuration:2.5];
[self updateChartData];
}

- (void)updateChartData
{
if (self.shouldHideData)
{
    _chartView.data = nil;
    return;
}

if(myQuota != nil && myQuota.quota != nil)
{
    [self setDataCount:(1) range: [myQuota.quota doubleValue]];
}

}

- (void)setDataCount:(int)count range:(double)range
{
NSMutableArray *xVals = [[NSMutableArray alloc] init];
[xVals addObject:myQuota.rowName];

NSMutableArray *yVals = [[NSMutableArray alloc] init];

double val = [myQuota.quotaReached doubleValue];  // here is 2
[yVals addObject:[[BarChartDataEntry alloc] initWithValue:val xIndex:0]];

BarChartDataSet *set1 = nil;
if (_chartView.data.dataSetCount > 0)
{
    set1 = (BarChartDataSet *)_chartView.data.dataSets[0];
    set1.yVals = yVals;
    _chartView.data.xValsObjc = xVals;
    [_chartView notifyDataSetChanged];
}
else
{
    set1 = [[BarChartDataSet alloc] initWithYVals:yVals label:@""];
    set1.barSpace = 0.35;
    set1.colors = [NSArray arrayWithObjects:[UIColor greenColor], nil]; 

    NSMutableArray *dataSets = [[NSMutableArray alloc] init];
    [dataSets addObject:set1];

    BarChartData *data = [[BarChartData alloc] initWithXVals:xVals     dataSets:dataSets];
    [data setValueFont:[UIFont fontWithName:@"HelveticaNeue-Light" size:10.f]];

    _chartView.data = data;
}
}

为什么酒吧这么长?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-05 03:26:33

好吧,既然没人给出答案我就试着破解了。我添加了一个不可见的条形图/行,并将其值设置为条形图的最大值。这样,即使条形图不可见,轴也会显示最大值。

我欢迎任何知道更好方法的人,但在那之前,我会这样做:

代码语言:javascript
复制
- (void)setDataCount:(int)count range:(double)range{

MY_MAX_VALUE = 10; // put HERE your MAX value for the axis

NSMutableArray *xVals = [[NSMutableArray alloc] init];
[xVals addObject:myQuota.rowName];

NSMutableArray *yVals = [[NSMutableArray alloc] init];

double val = [myQuota.quotaReached doubleValue];  // here is 2
[yVals addObject:[[BarChartDataEntry alloc] initWithValue:val xIndex:0]];
[yVals addObject:[[BarChartDataEntry alloc] initWithValue: MY_MAX_VALUE xIndex:1]];
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39131084

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档