ScatterPlot
Creates an XY or XYZ scatter plot.
Syntax
-
ScatterPlot(data)
-
data
is a sequence of (X, Y) points
-
-
ScatterPlot(data)
-
data
is a sequence of (X, Y, Z) points
-
-
ScatterPlot(data)
-
data
is a sequence of (X, Y, Z, colour, radius) points
-
Description
2D points
If data
is a sequence of (X, Y) points, then ScatterPlot(data)
creates a scatter plot from this data.
Technically, data
can be a plain sequence of points as function arguments, a list of points, or an n×2 real matrix in which each row represents a single point.
The chart is shown in the current diagram and a reference to the chart is returned.
To plot the graph of a function using points only, you may combine ScatterPlot
with the graph
function. But it is more convenient to use plot
instead.
3D points
Similarly, if data
is a sequence of (X, Y, Z) points, then ScatterPlot(data)
creates a scatter plot from this data.
Technically, data
can be a plain sequence of points as function arguments, a list of points, or an n×3 real matrix in which each row represents a single point.
The chart is shown in the current scene and a reference to the chart is returned.
To plot the graph of a function using points only, you may combine ScatterPlot
with the graph
function. But it is more convenient to use plot
instead.
Additionally, you can plot a set of points in which each point has its own colour and radius. This set needs to be a set of (X, Y, Z, colour, radius) points, and can be specified in any of the ways described above for (X, Y, Z) point sets.
Examples
2D points
ScatterPlot(❨1, 1❩, ❨2, 5❩, ❨3, −2❩)
or
ScatterPlot('(❨1, 1❩, ❨2, 5❩, ❨3, −2❩))
A ≔ ❨❨1, 1❩, ❨2, 5❩, ❨3, −2❩❩
⎛ 1 1⎞ ⎜ 2 5⎟ ⎝ 3 −2⎠
ScatterPlot(A)
ScatterPlot(graph(sin, −2⋅π, 2⋅π))
3D points
ScatterPlot(10⋅RandomMatrix(1000, 3))
ScatterPlot(graph((x, y) ↦ sin(√(x^2 + y^2)), ❨−10, 10❩, ❨−10, 10❩))
F ≔ (x, y, z) ↦ ❨x, y, z, integer(rgb(x / 10, y / 10, z / 10)), 5.0❩;
ScatterPlot([0, 10, 1]^3 @ F)
F ≔ (x, y, z) ↦ ❨x ⋅ RandomReal(), y ⋅ RandomReal(), z ⋅ RandomReal(), integer(rgb(x / 10, y / 10, z / 10)), RandomReal(5.0)❩;
ScatterPlot([0, 10, 0.5]^3 @ F)
F ≔ (θ, φ) ↦ ❨10⋅sin(θ)⋅cos(φ), 10⋅sin(θ)⋅sin(φ), 10⋅cos(θ), integer(hsv(180⋅(θ+2⋅φ)/π, 1.0, 1.0)), 5.0❩;
ScatterPlot([0, π, π/50] × [0, 2⋅π, π/50] @ F)
What about 1D points?
The above discussion details how to plot a sequence of points in ℝ² or ℝ³. But what if you have a list (or vector) containing real numbers, that is, elements of ℝ? Like this:
3.1, 2.9, 3.5, 3.2, 3.4, 3.0, 2.9, 3.7, 3.2, 3.5
One way to visualise such a sequence is to transform it into a sequence of points in ℝ²:
(1, 3.1), (2, 2.9), (3, 3.5), (4, 3.2), (5, 3.4), (6, 3.0), (7, 2.9), (8, 3.7), (9, 3.2), (10, 3.5)
Then this sequence can be plotted as before. To accomplish this, one can use the SequenceVector function along with MatFromCols:
D ≔ ❨3.1, 2.9, 3.5, 3.2, 3.4, 3.0, 2.9, 3.7, 3.2, 3.5❩; plot(MatFromCols(SequenceVector(#D), D))
See the example in LineSegment for a different approach, in which a one-dimensional diagram is used to visualise a monotonic sequence.