# Enhanced scatterplot with fitting lines

### Description

This function creates a scatterplot with fitting lines. Points and fitting lines can be also computed by groups.

### Usage

1 2 3 4 5 6 7 8 9 10 | ```
ScatterPlot(x, y, groups = NULL, plot.type = NULL, objfct = FALSE,
which.objfct = c("Cor", "Pbias", "RMSE"), add = FALSE, density.levels = 50,
density.labels = FALSE, image.nbrks = 300, fits = c("spline"),
fit.quantile = NULL, fit.minnobs = 10, fit.groups = TRUE,
fit.global = TRUE, col.points = "black", col.image = NULL,
col.density = NULL, col.fit = col.points, col.global = NULL,
xlab = "", ylab = "", main = "", xlim = NULL, ylim = NULL,
lwd = 2, lty = 1, quantile.x = c(0.01, 0.99), quantile.y = c(0.01,
0.99), plot = TRUE, cex = NULL, pch = 21, alpha = NULL,
...)
``` |

### Arguments

`x` |
vector of x values |

`y` |
vector of y values |

`groups` |
vector of grouping variables (optional), in case of NULL all points are treated as one group |

`plot.type` |
plot type: possible arguments are 'density' to plot density lines, 'points' to plot points, or 'image' to plot point counts as a raster image. In case of NULL, the optimal plot.type will be determined dependent on the number of values. It is also possible to combine plot types (e.g. c("image", "density")). |

`objfct` |
Compute objective functions and add a 1:1 line to the plot? |

`which.objfct` |
Which objective functions should be added to legend of the plot if objfct=TRUE? |

`add` |
add plot to existing plot? |

`density.levels` |
number of levels for density lines |

`density.labels` |
add labels to density lines? |

`image.nbrks` |
minimum number of breaks for the image |

`fits` |
Fitting methods that should be used. See |

`fit.quantile` |
Compute fit to a certain quantile? If NULL, fits to the mean. Otherwise sa value between 0 and 1 can be specified to fit to a certain quantile. |

`fit.minnobs` |
minimum number of observations per group in order to calculate a fitting curve |

`fit.groups` |
Plot fit lines for groups? |

`fit.global` |
Plot global fit lines? |

`col.points` |
color for the points/groups |

`col.image` |
color range for image |

`col.density` |
color range for density lines |

`col.fit` |
colors for fitting lines |

`col.global` |
colors for global fittiing line |

`xlab` |
a title for the x axis |

`ylab` |
a title for the y axis |

`main` |
an overall title for the plot |

`xlim` |
range for the x axis |

`ylim` |
range for the y axis |

`lwd` |
line width |

`lty` |
line type |

`quantile.x` |
lower and upper quantile to exclude extreme x values from plotting and fit calculations |

`quantile.y` |
lower and upper quantile to exclude extreme y values from plotting and fit calculations |

`plot` |
should a scatterplot be plotted or calculate only fitting lines |

`cex` |
size of the points in the plot. If NULL point size will be calculated based on the number of points. |

`pch` |
point symbol |

`alpha` |
transparency of the points (0...255) |

`...` |
further arguments to |

### Details

This function plots a scatterplot.

### Value

The function returns a list with the computed fitting lines and objective functions per group.

### Author(s)

Matthias Forkel <matthias.forkel@geo.tuwien.ac.at> [aut, cre]

### See Also

`ObjFct`

### Examples

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | ```
# create some data:
n <- 10000
x <- runif(n, 0, 100)
groups <- c(rep(1, 3000), rep(2, 3000), rep(3, 4000))
y <- (3 * x^(1/2) + rnorm(n, 0, x/20)) * groups
# standard plot: not very well distinguishable
plot(x, y)
# ScatterPlot
result <- ScatterPlot(x, y)
# ScatterPlot with coulored groups and fitting lines
result <- ScatterPlot(x, y, groups)
# different plot types
result <- ScatterPlot(x, y, plot.type="points")
result <- ScatterPlot(x, y, plot.type="density")
result <- ScatterPlot(x, y, plot.type=c("image", "density"))
# plot and compute objective functions
result <- ScatterPlot(x, y, groups, objfct=TRUE)
result
# plot fits to upper 0.9 and lower 0.1 quantiles, mean fit from two methods
result <- ScatterPlot(x, y, groups, fits=c("poly3", "spline"),
fit.quantile=0.9, plot.type="image", fit.global=FALSE)
result <- ScatterPlot(x, y, groups, fits=c("poly3", "spline"),
fit.quantile=0.1, plot.type=NA, add=TRUE, fit.global=FALSE)
``` |