Здесь:
let ys1 = Array(0..<10).map { x in return sin(Double(x)) }
let ys2 = Array(0..<10).map { x in return cos(Double(x)) }
let yse1 = ys1.enumerated().map { x, y in return ChartDataEntry(x: Double(x), y: y) }
let yse2 = ys2.enumerated().map { x, y in return ChartDataEntry(x: Double(x), y: y) }
Вы используете только 10 значений. Не удивительно, что кривая не гладкая. Даже если вы делаете ds1.mode = .cubicBezier
, но библиотека Charts может сделать для вас столько сглаживания. Эта строка не волшебное заклинание.
Чтобы сделать кривую более гладкой, мы можем использовать больше значений sin (x) и cos (x), которые находятся ближе друг к другу. Вместо 10 давайте использовать 100 значений от 0 до 10 с шагом 0,1 каждый раз.
let ys1 = Array(0..<100).map { x in ChartDataEntry(x: Double(x) / 10, y: sin(Double(x) / 10)) }
let ys2 = Array(0..<100).map { x in ChartDataEntry(x: Double(x) / 10, y: cos(Double(x) / 10)) }