'Creates a single curve that can have points of different colors, shapes and sizes.
This is the preferred method for visualization that show a series of different points.
:param x_data: The list of X coordinates of the points
:type x_data: list of float
:param y_data: The list of Y coordinates of the points
:type y_data: list of float
:param color_data: The list of point colors
:type color_data: list of QColor
:param label_data: The list of point labels
:type label_data: list of str
:param size_data: The list of point sizes
:type size_data: list of int
:param shape_data: The list of point symbols
:type shape_data: list of int
The number of points in the curve will be equal to min(len(x_data), len(y_data)).
The other four list can be empty, in which case a default value will be used.
If they contain only one element, its value will be used for all points.
.. note:: This function does not add items to the legend automatically.
You will have to add them yourself with :meth:`.OWLegend.add_item`.
.. seealso:: :obj:`.OWMultiCurve`, :obj:`.OWPoint`'

def set_main_curve_data(self, x_data, y_data, color_data, label_data, size_data, shape_data, marked_data=[], valid_data=[], x_axis_key=xBottom, y_axis_key=yLeft):

    if (not self.main_curve):
        self.main_curve = OWMultiCurve([], [])
        self.add_item(self.main_curve)
    self.update_performance(len(x_data))
    if len(valid_data):
        import numpy
        x_data = numpy.compress(valid_data, x_data)
        y_data = numpy.compress(valid_data, y_data)
        if (len(color_data) > 1):
            color_data = numpy.compress(valid_data, color_data)
        if (len(size_data) > 1):
            size_data = numpy.compress(valid_data, size_data)
        if (len(shape_data) > 1):
            shape_data = numpy.compress(valid_data, shape_data)
        if (len(label_data) > 1):
            label_data = numpy.compress(valid_data, label_data)
        if (len(marked_data) > 1):
            marked_data = numpy.compress(valid_data, marked_data).tolist()
    c = self.main_curve
    c.set_data(x_data, y_data)
    c.set_axes(x_axis_key, y_axis_key)
    c.set_point_colors(color_data)
    c.set_point_labels(label_data)
    c.set_point_sizes(size_data)
    c.set_point_symbols(shape_data)
    if len(marked_data):
        c.set_points_marked(marked_data)
        self.marked_points_changed.emit()
    c.name = 'Main    Curve'
    self.replot()
