Sau*_*ain 5 charts linechart ios swift ios-charts
我想创建一个具有多个 y 轴的图形。在danielgindi图表中可以使用决斗 y 轴图,但我想要更多的两个 y 轴图。如下图所示:
let set1 = LineChartDataSet(values: yVals1, label: "DataSet 1")
set1.axisDependency = .left
set1.setColor(UIColor(red: 51/255, green: 181/255, blue: 229/255, alpha: 1))
set1.setCircleColor(.white)
set1.lineWidth = 2
set1.circleRadius = 3
set1.fillAlpha = 65/255
set1.fillColor = UIColor(red: 51/255, green: 181/255, blue: 229/255, alpha: 1)
set1.highlightColor = UIColor(red: 244/255, green: 117/255, blue: 117/255, alpha: 1)
set1.drawCircleHoleEnabled = false
let set2 = LineChartDataSet(values: yVals2, label: "DataSet 2")
set2.axisDependency = .right
set2.setColor(.red)
set2.setCircleColor(.white)
set2.lineWidth = 2
set2.circleRadius = 3
set2.fillAlpha = 65/255
set2.fillColor = .red
set2.highlightColor = UIColor(red: 244/255, green: 117/255, blue: 117/255, alpha: 1)
set2.drawCircleHoleEnabled = false
Run Code Online (Sandbox Code Playgroud)
这是 danielgindi 图表代码,但在此代码中显示双 y 轴。
我能怎么做?提前致谢。
我刚刚快速浏览了代码,简短的答案是仅支持两个轴,我认为您可以猜到这一点,因为轴依赖项是具有两个选项的枚举。
如果您仍然想做三轴图,您可以通过自定义类和/或数据准备来解决部分限制。
您可以使用自定义格式化程序在每个轴点打印两个标签,从而将其中一个图表上的标签加倍。它看起来有多好取决于你的轴。实现完全独立的自动测距将是一个很大的要求。
您不能对不同的数据集使用不同的比例,因为转换是由 DataProvider 基于从属轴而不是数据集提供的。
根据第三个轴绘制数据集有点复杂,但也不是那么可怕。快速浏览一下渲染器代码会发现,渲染代码要求数据集进行转换,以基于从属轴将数据值转换为像素值。通过覆盖
func getTransformer(forAxis axis: YAxis.AxisDependency) -> 转换器
在自定义数据集中,您可以让渲染器使用不同的 y 缩放/变换来渲染数据值。
或者,您可以将两个数据集的源数据转换为 0-1 范围(例如),然后在自定义格式化程序中转换回轴标签。这会破坏数据值标签,但我没有看到您在示例中使用它们。
希望这可以帮助
| 归档时间: |
|
| 查看次数: |
1663 次 |
| 最近记录: |