def canvas_points(self):
if self.chart():<EOL><INDENT>x_axis_min = self.chart().x_lower_limit()<EOL>y_axis_min = self.chart().y_lower_limit()<EOL>x_axis_max = self.chart().x_upper_limit()<EOL>y_axis_max = self.chart().y_upper_limit()<EOL>chart_width = self.chart().width()<EOL>chart_height = self.chart().height()<EOL>horizontal_padding = self.chart().horizontal_padding()<EOL>vertical_padding = self.chart().vertical_padding()<EOL>horizontal_margin_pixels = horizontal_padding * chart_width<EOL>vertical_margin_pixels = vertical_padding * chart_height<EOL>x_axis_pixels = chart_width - (<NUM_LIT:2> * horizontal_margin_pixels)<EOL>y_axis_pixels = chart_height - (<NUM_LIT:2> * vertical_margin_pixels)<EOL>x_axis_span = x_axis_max - x_axis_min<EOL>y_axis_span = y_axis_max - y_axis_min<EOL>x_pixels_per_point = x_axis_pixels / x_axis_span<EOL>y_pixels_per_point = y_axis_pixels / y_axis_span<EOL>data = []<EOL>for x, y in self.data():<EOL><INDENT>relative_x, relative_y = x - x_axis_min, y - y_axis_min<EOL>data.append((<EOL>(relative_x * x_pixels_per_point) + horizontal_margin_pixels,<EOL>chart_height - ((relative_y * y_pixels_per_point) + vertical_margin_pixels)<EOL>))<EOL><DEDENT>return tuple(data)<EOL><DEDENT>
Calculates the coordinates that the data should use to paint itself
        to its associated :py:class:`.AxisChart`. This is used internally to
        create the chart.

        :rtype: ``tuple``