double toCanvasX(double dataX) { if (dataMaxX == dataMinX) return left + width / 2; return left + (dataX - dataMinX) / (dataMaxX - dataMinX) * width; }