无法让图表滚动,而不是缩放整个图表以适应 space
Trouble getting the chart to scroll, instead of scaling whole chart to fit in space
我正在尝试使用 Daniel Gindi's Charts library,我想要的是条形图或折线图仅显示一部分数据,但允许用户滚动到右侧以查看其余部分的数据。
现在,图表显示视图内的所有数据,因此条形图太小或不可见,如果图表开头只有数据点,折线图会被扭曲,因此您无法查看数据。
我试过将 xAxis.axisMaximum 设置为某个值,这确实可以更好地显示数据,但是您无法向右滚动以查看图表的其余部分。我想要两者:以合理的大小查看数据,并且能够在图表需要时向右滚动以查看图表的其余部分,我的软件通常会这样做。
这是我的条形图和折线图代码:
override func makeChart(resultChoice: chartData)
{
let chart = getChartObject() as! BarLineChartViewBase
chart.autoScaleMinMaxEnabled = true // I've tried this as false //!chart.autoScaleMinMaxEnabled
chart.chartDescription?.enabled = false
chart.drawGridBackgroundEnabled = false
chart.dragEnabled = true
chart.setScaleEnabled(true) //I've tried setting this to false
chart.pinchZoomEnabled = true
chart.leftAxis.axisMinimum = getAxisMinimum()
chart.leftAxis.axisMaximum = getAxisMaximum()
chart.clipValuesToContentEnabled = false
let xAxis = chart.xAxis
xAxis.avoidFirstLastClippingEnabled = true
xAxis.labelPosition = XAxis.LabelPosition.bottom
chart.rightAxis.enabled = false
xAxis.drawGridLinesEnabled = false
xAxis.drawAxisLineEnabled = true
xAxis.granularity = 1.0
xAxis.labelFont = MyVariables.chartFont!
//xAxis.axisMinimum = 0
//xAxis.axisMaximum = 30
//xAxis.setValuesForKeys(<#T##keyedValues: [String : Any]##[String : Any]#>)
yAxis = chart.leftAxis
yAxis.labelFont = MyVariables.chartFont!
chart.rightAxis.enabled = false
chart.legend.enabled = true
yAxis.granularity = 1.0
yAxis.drawGridLinesEnabled = false
//var counter = 1.0
var myEntries : [ChartDataEntry] = []
var myXValues : [String] = []
if !resultChoice.plotPoints.isEmpty
{
startDate = resultChoice.plotPoints[0].xValue
for item in resultChoice.plotPoints
{
/*let timeString : String =
{
let formatter = DateFormatter()
formatter.dateFormat = "h:mm a"
formatter.amSymbol = "AM"
formatter.pmSymbol = "PM"
return formatter.string(from: item.xValue)
}()
myXValues.append(timeString)*/
/*if(item.showXValue)
{
myXValues.append(timeString)
}
else
{
myXValues.append("")
}*/
let myEntry = getChartDataEntry(xval: item.xValue.timeIntervalSince(startDate), yval: Double(item.yValue))
getColors(value: myEntry.y)
//counter += 1
myEntries.append(myEntry)
}
let myFormatter = MyXAxisValueFormatter(_startDate: startDate)
xAxis.valueFormatter = myFormatter
setYAxisFormatter()
createSet(myEntries: myEntries)
}
}
这是我的条形图代码,表明我确实设置了条形宽度:
override func createSet(myEntries: [ChartDataEntry])
{
let chart = getChartObject() as! BarChartView
let mySet = BarChartDataSet(values: myEntries, label: "Time Elapsing")
mySet.colors = myColors
mySet.valueColors = myColors
mySet.valueFont = MyVariables.chartFont!
setValueFormatter(set: mySet)
let myBarChartData = BarChartData(dataSet: mySet)
myBarChartData.barWidth = 0.8
chart.data = myBarChartData
}
此外,我应该注意到,根据我的业务合作伙伴的说法,该软件过去的行为方式与我现在试图让它的行为方式相同。我不记得了,但他认为它曾经工作正常这一事实让我觉得我一定是更改了导致问题的设置。此外,最近我从完全以编程方式添加图表到将图表添加为另一个视图的子视图,该视图是通过界面构建器添加的。不过,我认为这对这个问题无关紧要。此外,我的业务合作伙伴喜欢之前数据显示方式的原因可能不是因为任何设置更改。我最近更改了 x 轴,以便统一显示时间。此更改是必要的,否则很难知道图表显示的事件何时发生。
我通过调用
解决了问题
chart.setVisibleXRangeMaximum(30)
数据设置完成后,调用
chart.scaleYEnabled = false
& chart.scaleXEnabled = true
当我设置其他图表设置时。
我正在尝试使用 Daniel Gindi's Charts library,我想要的是条形图或折线图仅显示一部分数据,但允许用户滚动到右侧以查看其余部分的数据。
现在,图表显示视图内的所有数据,因此条形图太小或不可见,如果图表开头只有数据点,折线图会被扭曲,因此您无法查看数据。
我试过将 xAxis.axisMaximum 设置为某个值,这确实可以更好地显示数据,但是您无法向右滚动以查看图表的其余部分。我想要两者:以合理的大小查看数据,并且能够在图表需要时向右滚动以查看图表的其余部分,我的软件通常会这样做。
这是我的条形图和折线图代码:
override func makeChart(resultChoice: chartData)
{
let chart = getChartObject() as! BarLineChartViewBase
chart.autoScaleMinMaxEnabled = true // I've tried this as false //!chart.autoScaleMinMaxEnabled
chart.chartDescription?.enabled = false
chart.drawGridBackgroundEnabled = false
chart.dragEnabled = true
chart.setScaleEnabled(true) //I've tried setting this to false
chart.pinchZoomEnabled = true
chart.leftAxis.axisMinimum = getAxisMinimum()
chart.leftAxis.axisMaximum = getAxisMaximum()
chart.clipValuesToContentEnabled = false
let xAxis = chart.xAxis
xAxis.avoidFirstLastClippingEnabled = true
xAxis.labelPosition = XAxis.LabelPosition.bottom
chart.rightAxis.enabled = false
xAxis.drawGridLinesEnabled = false
xAxis.drawAxisLineEnabled = true
xAxis.granularity = 1.0
xAxis.labelFont = MyVariables.chartFont!
//xAxis.axisMinimum = 0
//xAxis.axisMaximum = 30
//xAxis.setValuesForKeys(<#T##keyedValues: [String : Any]##[String : Any]#>)
yAxis = chart.leftAxis
yAxis.labelFont = MyVariables.chartFont!
chart.rightAxis.enabled = false
chart.legend.enabled = true
yAxis.granularity = 1.0
yAxis.drawGridLinesEnabled = false
//var counter = 1.0
var myEntries : [ChartDataEntry] = []
var myXValues : [String] = []
if !resultChoice.plotPoints.isEmpty
{
startDate = resultChoice.plotPoints[0].xValue
for item in resultChoice.plotPoints
{
/*let timeString : String =
{
let formatter = DateFormatter()
formatter.dateFormat = "h:mm a"
formatter.amSymbol = "AM"
formatter.pmSymbol = "PM"
return formatter.string(from: item.xValue)
}()
myXValues.append(timeString)*/
/*if(item.showXValue)
{
myXValues.append(timeString)
}
else
{
myXValues.append("")
}*/
let myEntry = getChartDataEntry(xval: item.xValue.timeIntervalSince(startDate), yval: Double(item.yValue))
getColors(value: myEntry.y)
//counter += 1
myEntries.append(myEntry)
}
let myFormatter = MyXAxisValueFormatter(_startDate: startDate)
xAxis.valueFormatter = myFormatter
setYAxisFormatter()
createSet(myEntries: myEntries)
}
}
这是我的条形图代码,表明我确实设置了条形宽度:
override func createSet(myEntries: [ChartDataEntry])
{
let chart = getChartObject() as! BarChartView
let mySet = BarChartDataSet(values: myEntries, label: "Time Elapsing")
mySet.colors = myColors
mySet.valueColors = myColors
mySet.valueFont = MyVariables.chartFont!
setValueFormatter(set: mySet)
let myBarChartData = BarChartData(dataSet: mySet)
myBarChartData.barWidth = 0.8
chart.data = myBarChartData
}
此外,我应该注意到,根据我的业务合作伙伴的说法,该软件过去的行为方式与我现在试图让它的行为方式相同。我不记得了,但他认为它曾经工作正常这一事实让我觉得我一定是更改了导致问题的设置。此外,最近我从完全以编程方式添加图表到将图表添加为另一个视图的子视图,该视图是通过界面构建器添加的。不过,我认为这对这个问题无关紧要。此外,我的业务合作伙伴喜欢之前数据显示方式的原因可能不是因为任何设置更改。我最近更改了 x 轴,以便统一显示时间。此更改是必要的,否则很难知道图表显示的事件何时发生。
我通过调用
解决了问题chart.setVisibleXRangeMaximum(30)
数据设置完成后,调用
chart.scaleYEnabled = false
& chart.scaleXEnabled = true
当我设置其他图表设置时。