Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在ios图表中,如何设置y轴的最大值?_Ios_Swift_Mpandroidchart_Ios Charts - Fatal编程技术网

在ios图表中,如何设置y轴的最大值?

在ios图表中,如何设置y轴的最大值?,ios,swift,mpandroidchart,ios-charts,Ios,Swift,Mpandroidchart,Ios Charts,我使用ios图表显示一个水平条形图,其值如下: var dataEntries: [BarChartDataEntry] = [] let dataEntry = BarChartDataEntry(value: self.deductible!.deductiblePaid, xIndex: 0) dataEntries.append(dataEntry) let chartDataSet = BarChartDataSet(yVals:

我使用ios图表显示一个水平条形图,其值如下:

 var dataEntries: [BarChartDataEntry] = []
        let dataEntry = BarChartDataEntry(value: self.deductible!.deductiblePaid, xIndex: 0)
        dataEntries.append(dataEntry)
        let chartDataSet =    BarChartDataSet(yVals: dataEntries, label: "Deductible")
        let chartData = BarChartData( xVals: dataPoints, dataSet: chartDataSet)


        self.horizontalBarChart!.data = chartData
        self.horizontalBarChart!.leftAxis.customAxisMax = 3000.0
        self.horizontalBarChart!.leftAxis.startAtZeroEnabled = false

        chartDataSet.colors = ChartColorTemplates.vordiplom()
我曾尝试设置YAxis的最大值,但它不会影响图形。 编辑:请参见此处的屏幕截图: 我需要的是,该条应显示上限高达3000(或动态指定的金额),而不是计算的上限

我修改了一些代码来实现它,以下是我目前的情况:

self.horizontalBarChart!.noDataText = "You need to provide data for the chart."

        self.horizontalBarChart!.setVisibleYRangeMaximum(3000, axis: ChartYAxis.AxisDependency.Left)
        self.horizontalBarChart!.descriptionText = ""
        var dataEntries: [BarChartDataEntry] = []
        let dataEntry = BarChartDataEntry(value: self.deductible!.deductiblePaid, xIndex: 0)
        dataEntries.append(dataEntry)
        let chartDataSet =    BarChartDataSet(yVals: dataEntries, label: " ")
        self.horizontalBarChart!.noDataText = "You need to provide data for the chart."
        self.horizontalBarChart!.setViewPortOffsets(left: 0, top: 0, right: 0, bottom: 0);
        let chartData = BarChartData( xVals: dataPoints, dataSet: chartDataSet)

        self.horizontalBarChart!.autoScaleMinMaxEnabled = false
        self.horizontalBarChart!.data = chartData
        self.horizontalBarChart!.leftAxis.axisMaximum = 1600
        self.horizontalBarChart!.leftAxis.axisMinimum = 00
        self.horizontalBarChart!.rightAxis.axisMaximum = 1600
        //self.horizontalBarChart!.leftAxis.customAxisMax = 3000.0
        //self.horizontalBarChart!.leftAxis.startAtZeroEnabled = false

        chartDataSet.colors = ChartColorTemplates.vordiplom()
        self.horizontalBarChart!.xAxis.labelPosition = .Top

        self.horizontalBarChart!.backgroundColor = UIColor(red: 189/255, green: 195/255, blue: 199/255, alpha: 1)
        self.horizontalBarChart!.animate(xAxisDuration: 2.0, yAxisDuration: 2.0)
请让我知道,如果我不清楚,你需要更多的细节。这比我想象的更具挑战性!这里的任何帮助都将不胜感激

第二次编辑:我现在有以下代码:

 func setHorizontalBarChartData() {

        self.horizontalBarChart!.descriptionText = ""
        var dataEntries: [BarChartDataEntry] = []
        let dataEntry = BarChartDataEntry(value: 900, xIndex: 0)
        dataEntries.append(dataEntry)
        let chartDataSet =    BarChartDataSet(yVals: dataEntries, label: " ")
        self.horizontalBarChart!.noDataText = "You need to provide data for the chart."
        //self.horizontalBarChart!.setViewPortOffsets(left: 0, top: 0, right: 0, bottom: 0);
        let deductible = [" "]
        let chartData = BarChartData( xVals: deductible, dataSet: chartDataSet)
        self.horizontalBarChart!.data = chartData
        self.horizontalBarChart!.leftAxis.startAtZeroEnabled = false
        self.horizontalBarChart!.rightAxis.startAtZeroEnabled = false
        self.horizontalBarChart!.rightAxis.customAxisMax = 3000
        self.horizontalBarChart!.rightAxis.customAxisMin = 10
        chartDataSet.colors = ChartColorTemplates.vordiplom()
        self.horizontalBarChart!.xAxis.labelPosition = .Top
        self.horizontalBarChart!.backgroundColor = UIColor(red: 189/255, green: 195/255, blue: 199/255, alpha: 1)
        self.horizontalBarChart!.animate(xAxisDuration: 2.0, yAxisDuration: 2.0)
    }
我仍然得到同样的东西: 我只需要一个数值高达3000的条形图和一个高达900的条形图。
您能帮忙吗?

customAxisMax
应该可以帮您。对我来说效果很好

您可能缺少的是,您正在设置
leftAxis
,但您应该知道也有
rightAxis
。我不确定你用的是哪一种

如果您查看一下
BarLineChartViewBase.swift'
,其中有代码

内部覆盖函数calcMinMax

_leftAxis.axisMaximum = !isnan(_leftAxis.customAxisMax) ? _leftAxis.customAxisMax : (maxLeft + topSpaceLeft)
_rightAxis.axisMaximum = !isnan(_rightAxis.customAxisMax) ? _rightAxis.customAxisMax : (maxRight + topSpaceRight)
_leftAxis.axisMinimum = !isnan(_leftAxis.customAxisMin) ? _leftAxis.customAxisMin : (minLeft - bottomSpaceLeft)
_rightAxis.axisMinimum = !isnan(_rightAxis.customAxisMin) ? _rightAxis.customAxisMin : (minRight - bottomSpaceRight)
设置后,它将读取
customAxisMax
customAxisMin
。您需要仔细检查正在使用的轴

编辑以进行第二次编辑:

我只是更改了演示代码,这是你想要的吗

ios图表演示中的代码,请在演示代码中尝试:

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

    [xVals addObject:months[0]];

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

    [yVals addObject:[[BarChartDataEntry alloc] initWithValue:900 xIndex:0]];

    BarChartDataSet *set1 = [[BarChartDataSet alloc] initWithYVals:yVals label:@"DataSet"];
    set1.barSpace = 0.35;

    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.leftAxis.startAtZeroEnabled = NO;
    _chartView.rightAxis.startAtZeroEnabled = NO;
    _chartView.rightAxis.enabled = NO;
    _chartView.leftAxis.customAxisMax = 3000;
    _chartView.leftAxis.customAxisMin = 10;

    _chartView.data = data;
}
截图:

如果上下y轴值未按预期显示,请确保

  • 您可以在y轴的左右两侧设置
    customAxisMax
    customAxisMin
  • 在设置图表视图的
    .data
    之前,先设置
    customAxisMax
    customAxisMax
  • 您将x轴和y轴“
    startZeroEnabled
    都设置为false。在设置图表视图的
    .data
    之前,先设置
    startZeroEnabled

    我花了几个小时才弄明白。希望能帮你省点钱

    我已经尝试过customAxisMax和axisMax属性,但它们都不起作用。谢谢您的回答@Winzergo。我已经添加了更多关于我正在尝试做的事情的细节。请查看我的编辑。我尝试为x轴和y轴设置customAxisMax,但没有完全生效。它增加到1200(以前是1000)。由于我有一个用于图形视图的小矩形,是否需要将其缩放以适应?我尝试使用ios图表演示代码,customAxisMin和customAxisMax在我这方面工作得很好。您是否更改了渲染代码?你介意提供一个示例项目吗?您可以尝试演示水平条形图代码:`_chartView.leftAxis.startAtZeroEnabled=NO_chartView.rightAxis.StartZeroEnabled=否_chartView.leftAxis.customAxisMax=100_chartView.leftAxis.customAxisMin=10_chartView.data=数据;`如果工作正常,它会将左轴限制在10~100。你可以看看有什么不同。我猜你们用的是右轴,而我用的是左轴。应该是consistent@Konrad我尝试使用最新的ChartsDemo 2.1.6,我可以毫无问题地获得customAxisMax=600效果。您正在设置哪个轴?右边还是左边?当你设置它时,你必须确保它是相同的y轴,也可能更新你的代码。谢谢你的回答。我已经按照原来的答案解决了这个问题。