/
density.jl
61 lines (54 loc) · 1.64 KB
/
density.jl
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
###############################################################################
#
# Make density plot
#
###############################################################################
"""
plot_density!(
ax::PyObject,
xs::Array,
ys::Array;
cmap::String = "viridis",
markersize::Number = 8,
dmax::Number = NaN
)
plot_density!(
ax::PyObject,
df::DataFrame;
cmap::String = "viridis",
markersize::Number = 8,
dmax::Number = NaN
)
Plot density plot on axis, given
- `ax` Axis to plot on
- `xs` Array of X
- `ys` Array of Y
- `cmap` Optional. Color map scheme
- `markersize` Optional. Marker size dimension, scatter size is markersize^2
- `dmax` Maximal density. If `dmax` is not NaN, use dmax as maximum density
- `df` A dataframe with column names of ("X","Y","C")
"""
function plot_density!(
ax::PyObject,
xs::Array,
ys::Array;
cmap::String = "viridis",
markersize::Number = 8,
dmax::Number = NaN
)
df = calculate_density(xs, ys);
plot_density!(ax, df; cmap=cmap, markersize=markersize, dmax=dmax);
return nothing
end
function plot_density!(
ax::PyObject,
df::DataFrame;
cmap::String = "viridis",
markersize::Number = 8,
dmax::Number = NaN
)
# plot the scatter on axis, if cmax is not NaN, use cmax
cc = (isnan(dmax) ? (df).C : min.((df).C, dmax));
ax.scatter((df).X, (df).Y, s=markersize^2, c=cc, cmap=cmap);
return nothing
end