我正在尝试使用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轴,以便统一显示时间。这种变化是必要的,或者很难知道图表显示的事件何时发生。
答案 0 :(得分:2)
我通过调用
解决了这个问题 chart.setVisibleXRangeMaximum(30)
设置数据后,并调用
chart.scaleYEnabled = false
&amp; chart.scaleXEnabled = true
当我设置其他图表设置时。