private void UpdateScatterPlot()
        {
            if (comboBoxXVariable.SelectedItem != null && comboBoxYVariable.SelectedItem != null && comboBoxGroup.SelectedItem != null)
            {
                var xVariable     = (string)comboBoxXVariable.SelectedItem;
                var yVariable     = (string)comboBoxYVariable.SelectedItem;
                var groupVariable = (string)comboBoxGroup.SelectedItem;
                var legendOrder   = (PreprocessingChartContent.LegendOrder)orderComboBox.SelectedItem;

                ScatterPlot scatterPlot = ScatterPlotContent.CreateScatterPlot(Content.PreprocessingData, xVariable, yVariable, groupVariable, legendOrder);
                //rows are saved and removed to avoid firing of visual property changed events
                var rows = scatterPlot.Rows.ToList();
                scatterPlot.Rows.Clear();
                var regressionType = (RegressionType)regressionTypeComboBox.SelectedValue;
                int order          = (int)polynomialRegressionOrderNumericUpDown.Value;
                foreach (var row in rows)
                {
                    row.VisualProperties.PointSize = 6;
                    row.VisualProperties.IsRegressionVisibleInLegend = false;
                    row.VisualProperties.RegressionType            = regressionType;
                    row.VisualProperties.PolynomialRegressionOrder = order;
                    row.VisualProperties.IsVisibleInLegend         = !useGradientCheckBox.Checked;
                }
                scatterPlot.Rows.AddRange(rows);
                var vp = scatterPlot.VisualProperties;
                vp.Title      = string.Empty;
                vp.XAxisTitle = xVariable;
                vp.YAxisTitle = yVariable;

                scatterPlotView.Content = scatterPlot;

                //save selected x and y variable in content
                this.Content.SelectedXVariable = (string)comboBoxXVariable.SelectedItem;
                this.Content.SelectedYVariable = (string)comboBoxYVariable.SelectedItem;
                this.Content.GroupingVariable  = (string)comboBoxGroup.SelectedItem;
            }
        }
        private Control GetBody(string colVariable, string rowVariable)
        {
            var key = Tuple.Create(colVariable, rowVariable);

            if (!bodyCache.ContainsKey(key))
            {
                if (rowVariable == colVariable) // use historgram if x and y variable are equal
                {
                    var dataTable = HistogramContent.CreateHistogram(
                        Content.PreprocessingData,
                        rowVariable,
                        (string)groupingComboBox.SelectedItem,
                        (AggregationType)aggregationComboBox.SelectedItem,
                        (PreprocessingChartContent.LegendOrder)legendOrderComboBox.SelectedItem);
                    dataTable.VisualProperties.Title = string.Empty;
                    foreach (var dataRow in dataTable.Rows)
                    {
                        dataRow.VisualProperties.IsVisibleInLegend = legendCheckbox.Checked && groupingComboBox.SelectedIndex > 0;
                    }
                    var pcv = new DataTableView {
                        Name          = key.ToString(),
                        Content       = dataTable,
                        Dock          = DockStyle.Fill,
                        ShowChartOnly = true
                    };
                    //pcv.ChartDoubleClick += HistogramDoubleClick;  // ToDo: not working; double click is already handled by the chart
                    bodyCache.Add(key, pcv);
                }
                else //scatter plot
                {
                    var scatterPlot = ScatterPlotContent.CreateScatterPlot(Content.PreprocessingData,
                                                                           colVariable,
                                                                           rowVariable,
                                                                           (string)groupingComboBox.SelectedItem,
                                                                           (PreprocessingChartContent.LegendOrder)legendOrderComboBox.SelectedItem);
                    var regressionType = (RegressionType)regressionTypeComboBox.SelectedValue;
                    int order          = (int)polynomialRegressionOrderNumericUpDown.Value;
                    int i      = 0;
                    var colors = PreprocessingChartView.Colors;
                    foreach (var row in scatterPlot.Rows)
                    {
                        row.VisualProperties.PointSize = (int)pointSizeNumericUpDown.Value;
                        row.VisualProperties.Color     = Color.FromArgb((int)(pointOpacityNumericUpDown.Value * 255),
                                                                        row.VisualProperties.Color.IsEmpty ? colors[i++ % colors.Length] : row.VisualProperties.Color);
                        row.VisualProperties.IsVisibleInLegend           = legendCheckbox.Checked && groupingComboBox.SelectedIndex > 0;
                        row.VisualProperties.IsRegressionVisibleInLegend = false;
                        row.VisualProperties.RegressionType            = regressionType;
                        row.VisualProperties.PolynomialRegressionOrder = order;
                    }
                    scatterPlot.VisualProperties.Title = string.Empty;
                    var scatterPlotView = new ScatterPlotView {
                        Name     = key.ToString(),
                        Content  = scatterPlot,
                        Dock     = DockStyle.Fill,
                        ShowName = false
                                   //ShowLegend = false,
                                   //XAxisFormat = "G3"
                    };
                    //scatterPlotView.DoubleClick += ScatterPlotDoubleClick; // ToDo: not working; double click is already handled by the chart
                    bodyCache.Add(key, scatterPlotView);
                }
            }
            return(bodyCache[key]);
        }