From 3368e8917e9308517511cb2778317a1edfd5032c Mon Sep 17 00:00:00 2001 From: hdavid16 Date: Thu, 21 Jul 2022 17:20:53 -0500 Subject: [PATCH 01/10] Improve Readme and docstring -distinguish args, kwargs -add missing kwargs --- README.md | 45 ++++++++++++++++++++++++------------ src/plot.jl | 66 ++++++++++++++++++++++++++++++----------------------- 2 files changed, 68 insertions(+), 43 deletions(-) diff --git a/README.md b/README.md index 63d836a..f5438ca 100644 --- a/README.md +++ b/README.md @@ -133,8 +133,8 @@ gplot(g, linetype="curve") ``` ## Save to figure -```{execute="false"} -using Cairo, Compose +```julia +using Compose # save to pdf draw(PDF("karate.pdf", 16cm, 16cm), gplot(g)) # save to png @@ -150,19 +150,34 @@ gplot(h) ``` # Arguments -+ `G` graph to plot -+ `layout` Optional. layout algorithm. Currently can choose from -[random_layout, circular_layout, spring_layout, stressmajorize_layout, -shell_layout, spectral_layout]. -Default: `spring_layout` -+ `nodelabel` Optional. Labels for the vertices. Default: `nothing` -+ `nodefillc` Optional. Color to fill the nodes with. -Default: `colorant"turquoise"` -+ `nodestrokec` Color for the node stroke. -Default: `nothing` -+ `arrowlengthfrac` Fraction of line length to use for arrows. -Set to 0 for no arrows. Default: 0 for undirected graph and 0.1 for directed graph -+ `arrowangleoffset` angular width in radians for the arrows. Default: `π/9` (20 degrees) ++ `G` Graph to draw ++ `locs_x, locs_y` Locations of the nodes (will be normalized and centered). If not specified, will be obtained from `layout` kwarg. + +# Keyword Arguments ++ `layout` Layout algorithm: `random_layout`, `circular_layout`, `spring_layout`, `shell_layout`, `stressmajorize_layout`, `spectral_layout`. Default: `spring_layout` ++ `NODESIZE` Max size for the nodes. Default: `3.0/sqrt(N)` ++ `nodesize` Relative size for the nodes, can be a Vector. Default: `1.0` ++ `nodelabel` Labels for the vertices, a Vector or nothing. Default: `nothing` ++ `nodelabelc` Color for the node labels, can be a Vector. Default: `colorant"black"` ++ `nodelabeldist` Distances for the node labels from center of nodes. Default: `0.0` ++ `nodelabelangleoffset` Angle offset for the node labels. Default: `π/4.0` ++ `NODELABELSIZE` Largest fontsize for the vertice labels. Default: `4.0` ++ `nodelabelsize` Relative fontsize for the vertice labels, can be a Vector. Default: `1.0` ++ `nodefillc` Color to fill the nodes with, can be a Vector. Default: `colorant"turquoise"` ++ `nodestrokec` Color for the nodes stroke, can be a Vector. Default: `nothing` ++ `nodestrokelw` Line width for the nodes stroke, can be a Vector. Default: `0.0` ++ `edgelabel` Labels for the edges, a Vector or nothing. Default: `[]` ++ `edgelabelc` Color for the edge labels, can be a Vector. Default: `colorant"black"` ++ `edgelabeldistx, edgelabeldisty` Distance for the edge label from center of edge. Default: `0.0` ++ `EDGELABELSIZE` Largest fontsize for the edge labels. Default: `4.0` ++ `edgelabelsize` Relative fontsize for the edge labels, can be a Vector. Default: `1.0` ++ `EDGELINEWIDTH` Max line width for the edges. Default: `0.25/sqrt(N)` ++ `edgelinewidth` Relative line width for the edges, can be a Vector. Default: `1.0` ++ `edgestrokec` Color for the edge strokes, can be a Vector. Default: `colorant"lightgray"` ++ `arrowlengthfrac` Fraction of line length to use for arrows. Equal to 0 for undirected graphs. Default: `0.1` for the directed graphs ++ `arrowangleoffset` Angular width in radians for the arrows. Default: `π/9 (20 degrees)` ++ `linetype` Type of line used for edges ("straight", "curve"). Default: "straight" ++ `outangle` Angular width in radians for the edges (only used if `linetype = "curve`). Default: `π/5 (36 degrees)` # Reporting Bugs diff --git a/src/plot.jl b/src/plot.jl index b38554c..8c4c033 100644 --- a/src/plot.jl +++ b/src/plot.jl @@ -10,79 +10,89 @@ a Compose tree of the graph layout `G` Graph to draw +`locs_x, locs_y` +Locations of the nodes. Can be any units you want, +but will be normalized and centered anyway. If not provided, will +be obtained from `layout` kwarg. + +**Keyword Arguments** + `layout` -Optional. Layout algorithm. Currently can be one of [`random_layout`, +Layout algorithm. Currently can be one of [`random_layout`, `circular_layout`, `spring_layout`, `shell_layout`, `stressmajorize_layout`, `spectral_layout`]. Default: `spring_layout` -`locs_x, locs_y` -Locations of the nodes. Can be any units you want, -but will be normalized and centered anyway - `NODESIZE` -Optional. Max size for the nodes. Default: `3.0/sqrt(N)` +Max size for the nodes. Default: `3.0/sqrt(N)` `nodesize` -Optional. Relative size for the nodes, can be a Vector. Default: `1.0` +Relative size for the nodes, can be a Vector. Default: `1.0` `nodelabel` -Optional. Labels for the vertices, a Vector or nothing. Default: `nothing` +Labels for the vertices, a Vector or nothing. Default: `nothing` `nodelabelc` -Optional. Color for the node labels, can be a Vector. Default: `colorant"black"` +Color for the node labels, can be a Vector. Default: `colorant"black"` `nodelabeldist` -Optional. Distances for the node labels from center of nodes. Default: `0.0` +Distances for the node labels from center of nodes. Default: `0.0` `nodelabelangleoffset` -Optional. Angle offset for the node labels. Default: `π/4.0` +Angle offset for the node labels. Default: `π/4.0` `NODELABELSIZE` -Optional. Largest fontsize for the vertice labels. Default: `4.0` +Largest fontsize for the vertice labels. Default: `4.0` `nodelabelsize` -Optional. Relative fontsize for the vertice labels, can be a Vector. Default: `1.0` +Relative fontsize for the vertice labels, can be a Vector. Default: `1.0` `nodefillc` -Optional. Color to fill the nodes with, can be a Vector. Default: `colorant"turquoise"` +Color to fill the nodes with, can be a Vector. Default: `colorant"turquoise"` `nodestrokec` -Optional. Color for the nodes stroke, can be a Vector. Default: `nothing` +Color for the nodes stroke, can be a Vector. Default: `nothing` `nodestrokelw` -Optional. Line width for the nodes stroke, can be a Vector. Default: `0.0` +Line width for the nodes stroke, can be a Vector. Default: `0.0` `edgelabel` -Optional. Labels for the edges, a Vector or nothing. Default: `[]` +Labels for the edges, a Vector or nothing. Default: `[]` `edgelabelc` -Optional. Color for the edge labels, can be a Vector. Default: `colorant"black"` +Color for the edge labels, can be a Vector. Default: `colorant"black"` `edgelabeldistx, edgelabeldisty` -Optional. Distance for the edge label from center of edge. Default: `0.0` +Distance for the edge label from center of edge. Default: `0.0` `EDGELABELSIZE` -Optional. Largest fontsize for the edge labels. Default: `4.0` +Largest fontsize for the edge labels. Default: `4.0` `edgelabelsize` -Optional. Relative fontsize for the edge labels, can be a Vector. Default: `1.0` +Relative fontsize for the edge labels, can be a Vector. Default: `1.0` `EDGELINEWIDTH` -Optional. Max line width for the edges. Default: `0.25/sqrt(N)` +Max line width for the edges. Default: `0.25/sqrt(N)` `edgelinewidth` -Optional. Relative line width for the edges, can be a Vector. Default: `1.0` +Relative line width for the edges, can be a Vector. Default: `1.0` `edgestrokec` -Optional. Color for the edge strokes, can be a Vector. Default: `colorant"lightgray"` +Color for the edge strokes, can be a Vector. Default: `colorant"lightgray"` `arrowlengthfrac` -Optional. Fraction of line length to use for arrows. +Fraction of line length to use for arrows. Equal to 0 for undirected graphs. Default: `0.1` for the directed graphs `arrowangleoffset` -Optional. Angular width in radians for the arrows. Default: `π/9 (20 degrees)` +Angular width in radians for the arrows. Default: `π/9 (20 degrees)` + +`linetype` +Type of line used for edges ("straight", "curve"). Default: "straight" + +`outangle` +Angular width in radians for the edges (only used if `linetype = "curve`). +Default: `π/5 (36 degrees)` """ function gplot(g::AbstractGraph{T}, @@ -108,9 +118,9 @@ function gplot(g::AbstractGraph{T}, nodestrokec = nothing, nodestrokelw = 0.0, arrowlengthfrac = is_directed(g) ? 0.1 : 0.0, - arrowangleoffset = π / 9.0, + arrowangleoffset = π / 9, linetype = "straight", - outangle = pi/5) where {T <:Integer, R <: Real} + outangle = π / 5) where {T <:Integer, R <: Real} length(locs_x_in) != length(locs_y_in) && error("Vectors must be same length") N = nv(g) From febb53bf5f587a7ec12a7bd4663564f27d21f4e4 Mon Sep 17 00:00:00 2001 From: hdavid16 Date: Thu, 21 Jul 2022 17:44:03 -0500 Subject: [PATCH 02/10] fix #166 clarify that Cairo is required to visualize in vscode --- README.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index f5438ca..e385cee 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ Other layout algorithms are wrapped from [NetworkX](https://github.com/networkx/ # Getting Started From the Julia REPL the latest version can be installed with -```{execute="false"} +```julia Pkg.add("GraphPlot") ``` GraphPlot is then loaded with @@ -132,6 +132,10 @@ gplot(g, locs_x, locs_y, nodelabel=nodelabel) gplot(g, linetype="curve") ``` +## Show plot + +When using an IDE such as VSCode, `Cairo.jl` is required to visualize the plot inside the IDE. + ## Save to figure ```julia using Compose From 9bffdd99d381ee4cec8c2b9702a9ed029a856d87 Mon Sep 17 00:00:00 2001 From: Hector Perez Date: Thu, 21 Jul 2022 18:02:52 -0500 Subject: [PATCH 03/10] Fix #175 to enable plotting to html Checking for System OS was outdated --- src/plot.jl | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/plot.jl b/src/plot.jl index 8c4c033..362ac90 100644 --- a/src/plot.jl +++ b/src/plot.jl @@ -241,11 +241,11 @@ end # take from [Gadfly.jl](https://github.com/dcjones/Gadfly.jl) function open_file(filename) - if Sys.KERNEL == :Darwin + if Sys.isapple(Sys.KERNEL) #apple run(`open $(filename)`) - elseif Sys.KERNEL == :Linux || Sys.KERNEL == :FreeBSD + elseif Sys.islinux(Sys.KERNEL) || Sys.isbsd(Sys.KERNEL) #linux run(`xdg-open $(filename)`) - elseif Sys.KERNEL == :Windows + elseif Sys.iswindows(Sys.KERNEL) #windows run(`$(ENV["COMSPEC"]) /c start $(filename)`) else @warn("Showing plots is not supported on OS $(string(Sys.KERNEL))") From 080a1a474edff73a4e9a034c8f90290045b0a20a Mon Sep 17 00:00:00 2001 From: Hector Perez Date: Thu, 21 Jul 2022 18:03:59 -0500 Subject: [PATCH 04/10] Document the use of gplothtml in README --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index e385cee..e5dd530 100644 --- a/README.md +++ b/README.md @@ -135,6 +135,7 @@ gplot(g, linetype="curve") ## Show plot When using an IDE such as VSCode, `Cairo.jl` is required to visualize the plot inside the IDE. +When using the REPL, `gplothtml` will allow displaying the plot on a browser. ## Save to figure ```julia From 3d32d077c5d3bf73a497dddbca9700b4eca8c014 Mon Sep 17 00:00:00 2001 From: Hector Perez Date: Thu, 21 Jul 2022 18:08:05 -0500 Subject: [PATCH 05/10] Update open_file Now matches gadfly.jl (https://github.com/GiovineItalia/Gadfly.jl/blob/master/src/open_file.jl) --- src/plot.jl | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/plot.jl b/src/plot.jl index 362ac90..505f9b6 100644 --- a/src/plot.jl +++ b/src/plot.jl @@ -241,11 +241,11 @@ end # take from [Gadfly.jl](https://github.com/dcjones/Gadfly.jl) function open_file(filename) - if Sys.isapple(Sys.KERNEL) #apple + if Sys.isapple() #apple run(`open $(filename)`) - elseif Sys.islinux(Sys.KERNEL) || Sys.isbsd(Sys.KERNEL) #linux + elseif Sys.islinux() || Sys.isbsd() #linux run(`xdg-open $(filename)`) - elseif Sys.iswindows(Sys.KERNEL) #windows + elseif Sys.iswindows() #windows run(`$(ENV["COMSPEC"]) /c start $(filename)`) else @warn("Showing plots is not supported on OS $(string(Sys.KERNEL))") From 2c64095c0aee95cbb220224ab8022f1be0209e2f Mon Sep 17 00:00:00 2001 From: hdavid16 Date: Mon, 25 Jul 2022 16:22:21 -0500 Subject: [PATCH 06/10] Minor changes: -allow gplothtml to accept same arguments as gplot -allow x/y-locs to be of different type (<: Real) --- src/plot.jl | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/plot.jl b/src/plot.jl index 505f9b6..af438b7 100644 --- a/src/plot.jl +++ b/src/plot.jl @@ -96,7 +96,7 @@ Default: `π/5 (36 degrees)` """ function gplot(g::AbstractGraph{T}, - locs_x_in::Vector{R}, locs_y_in::Vector{R}; + locs_x_in::Vector{R1}, locs_y_in::Vector{R2}; nodelabel = nothing, nodelabelc = colorant"black", nodelabelsize = 1.0, @@ -120,7 +120,7 @@ function gplot(g::AbstractGraph{T}, arrowlengthfrac = is_directed(g) ? 0.1 : 0.0, arrowangleoffset = π / 9, linetype = "straight", - outangle = π / 5) where {T <:Integer, R <: Real} + outangle = π / 5) where {T <:Integer, R1 <: Real, R2 <: Real} length(locs_x_in) != length(locs_y_in) && error("Vectors must be same length") N = nv(g) @@ -253,13 +253,13 @@ function open_file(filename) end # taken from [Gadfly.jl](https://github.com/dcjones/Gadfly.jl) -function gplothtml(g; layout::Function=spring_layout, keyargs...) +function gplothtml(args...; keyargs...) filename = string(tempname(), ".html") output = open(filename, "w") plot_output = IOBuffer() draw(SVGJS(plot_output, Compose.default_graphic_width, - Compose.default_graphic_width, false), gplot(g, layout(g)...; keyargs...)) + Compose.default_graphic_width, false), gplot(args...; keyargs...)) plotsvg = String(take!(plot_output)) write(output, From 222fb26a44cabc046779cf7d74bd5680ba7b2c65 Mon Sep 17 00:00:00 2001 From: hdavid16 Date: Mon, 25 Jul 2022 23:26:46 -0500 Subject: [PATCH 07/10] add TagBot to repo --- .github/workflows/tagbot.yml | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 .github/workflows/tagbot.yml diff --git a/.github/workflows/tagbot.yml b/.github/workflows/tagbot.yml new file mode 100644 index 0000000..32a9dd8 --- /dev/null +++ b/.github/workflows/tagbot.yml @@ -0,0 +1,20 @@ +name: TagBot +on: + issue_comment: + types: + - created + workflow_dispatch: + inputs: + lookback: + default: 3 +permissions: + contents: write +jobs: + TagBot: + if: github.event_name == 'workflow_dispatch' || github.actor == 'JuliaTagBot' + runs-on: ubuntu-latest + steps: + - uses: JuliaRegistries/TagBot@v1 + with: + token: ${{ secrets.GITHUB_TOKEN }} + ssh: ${{ secrets.DOCUMENTER_KEY }} \ No newline at end of file From 14d62b4d3c829dbc0c3fdfd3ffd5897b0e48ee42 Mon Sep 17 00:00:00 2001 From: hdavid16 Date: Tue, 26 Jul 2022 11:59:01 -0500 Subject: [PATCH 08/10] Fix #172. set background color (`backgroundc` kwarg): and minor changes to plots.jl update README --- README.md | 1 + src/plot.jl | 30 +++++++++++++++++------------- 2 files changed, 18 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index e5dd530..0ea4643 100644 --- a/README.md +++ b/README.md @@ -183,6 +183,7 @@ gplot(h) + `arrowangleoffset` Angular width in radians for the arrows. Default: `π/9 (20 degrees)` + `linetype` Type of line used for edges ("straight", "curve"). Default: "straight" + `outangle` Angular width in radians for the edges (only used if `linetype = "curve`). Default: `π/5 (36 degrees)` ++ `backgroundc` Color for the plot background. Default: `nothing` # Reporting Bugs diff --git a/src/plot.jl b/src/plot.jl index af438b7..58b0bc6 100644 --- a/src/plot.jl +++ b/src/plot.jl @@ -42,10 +42,10 @@ Distances for the node labels from center of nodes. Default: `0.0` Angle offset for the node labels. Default: `π/4.0` `NODELABELSIZE` -Largest fontsize for the vertice labels. Default: `4.0` +Largest fontsize for the vertex labels. Default: `4.0` `nodelabelsize` -Relative fontsize for the vertice labels, can be a Vector. Default: `1.0` +Relative fontsize for the vertex labels, can be a Vector. Default: `1.0` `nodefillc` Color to fill the nodes with, can be a Vector. Default: `colorant"turquoise"` @@ -94,6 +94,9 @@ Type of line used for edges ("straight", "curve"). Default: "straight" Angular width in radians for the edges (only used if `linetype = "curve`). Default: `π/5 (36 degrees)` +`backgroundc` +Color for the plot background. Default: `nothing` + """ function gplot(g::AbstractGraph{T}, locs_x_in::Vector{R1}, locs_y_in::Vector{R2}; @@ -120,7 +123,8 @@ function gplot(g::AbstractGraph{T}, arrowlengthfrac = is_directed(g) ? 0.1 : 0.0, arrowangleoffset = π / 9, linetype = "straight", - outangle = π / 5) where {T <:Integer, R1 <: Real, R2 <: Real} + outangle = π / 5, + backgroundc = nothing) where {T <:Integer, R1 <: Real, R2 <: Real} length(locs_x_in) != length(locs_y_in) && error("Vectors must be same length") N = nv(g) @@ -169,19 +173,19 @@ function gplot(g::AbstractGraph{T}, # Create nodes nodecircle = fill(0.4Compose.w, length(locs_x)) if isa(nodesize, Real) - for i = 1:length(locs_x) - nodecircle[i] *= nodesize - end - else - for i = 1:length(locs_x) - nodecircle[i] *= nodesize[i] - end - end + for i = 1:length(locs_x) + nodecircle[i] *= nodesize + end + else + for i = 1:length(locs_x) + nodecircle[i] *= nodesize[i] + end + end nodes = circle(locs_x, locs_y, nodecircle) # Create node labels if provided texts = nothing - if nodelabel != nothing + if !isnothing(nodelabel) text_locs_x = deepcopy(locs_x) text_locs_y = deepcopy(locs_y) texts = text(text_locs_x .+ nodesize .* (nodelabeldist * cos(nodelabelangleoffset)), @@ -227,7 +231,7 @@ function gplot(g::AbstractGraph{T}, end end - compose(context(units=UnitBox(-1.2, -1.2, +2.4, +2.4)), + compose(context(units=UnitBox(-1.2, -1.2, +2.4, +2.4)), rectangle(-1.2, -1.2, +2.4, +2.4), fill(backgroundc), compose(context(), texts, fill(nodelabelc), stroke(nothing), fontsize(nodelabelsize)), compose(context(), nodes, fill(nodefillc), stroke(nodestrokec), linewidth(nodestrokelw)), compose(context(), edgetexts, fill(edgelabelc), stroke(nothing), fontsize(edgelabelsize)), From 8274db29efb205f7345e922722cff19bb045be01 Mon Sep 17 00:00:00 2001 From: hdavid16 Date: Wed, 27 Jul 2022 00:33:18 -0500 Subject: [PATCH 09/10] add compose child object for background (instead of main level) --- src/plot.jl | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/plot.jl b/src/plot.jl index 58b0bc6..98e4348 100644 --- a/src/plot.jl +++ b/src/plot.jl @@ -231,7 +231,8 @@ function gplot(g::AbstractGraph{T}, end end - compose(context(units=UnitBox(-1.2, -1.2, +2.4, +2.4)), rectangle(-1.2, -1.2, +2.4, +2.4), fill(backgroundc), + compose(context(units=UnitBox(-1.2, -1.2, +2.4, +2.4)), + compose(context(), rectangle(-1.2, -1.2, +2.4, +2.4), fill(backgroundc)), compose(context(), texts, fill(nodelabelc), stroke(nothing), fontsize(nodelabelsize)), compose(context(), nodes, fill(nodefillc), stroke(nodestrokec), linewidth(nodestrokelw)), compose(context(), edgetexts, fill(edgelabelc), stroke(nothing), fontsize(edgelabelsize)), From 074ce86cf4edccf718cb57a0150463efe2822264 Mon Sep 17 00:00:00 2001 From: hdavid16 Date: Wed, 27 Jul 2022 10:52:28 -0500 Subject: [PATCH 10/10] rename to `background_color` + add test --- README.md | 2 +- src/plot.jl | 8 ++++---- test/data/karate_background_color.png | Bin 0 -> 73012 bytes test/runtests.jl | 5 +++++ 4 files changed, 10 insertions(+), 5 deletions(-) create mode 100644 test/data/karate_background_color.png diff --git a/README.md b/README.md index 0ea4643..897efcf 100644 --- a/README.md +++ b/README.md @@ -183,7 +183,7 @@ gplot(h) + `arrowangleoffset` Angular width in radians for the arrows. Default: `π/9 (20 degrees)` + `linetype` Type of line used for edges ("straight", "curve"). Default: "straight" + `outangle` Angular width in radians for the edges (only used if `linetype = "curve`). Default: `π/5 (36 degrees)` -+ `backgroundc` Color for the plot background. Default: `nothing` ++ `background_color` Color for the plot background. Default: `nothing` # Reporting Bugs diff --git a/src/plot.jl b/src/plot.jl index 98e4348..2f710f2 100644 --- a/src/plot.jl +++ b/src/plot.jl @@ -94,7 +94,7 @@ Type of line used for edges ("straight", "curve"). Default: "straight" Angular width in radians for the edges (only used if `linetype = "curve`). Default: `π/5 (36 degrees)` -`backgroundc` +`background_color` Color for the plot background. Default: `nothing` """ @@ -124,7 +124,7 @@ function gplot(g::AbstractGraph{T}, arrowangleoffset = π / 9, linetype = "straight", outangle = π / 5, - backgroundc = nothing) where {T <:Integer, R1 <: Real, R2 <: Real} + background_color = nothing) where {T <:Integer, R1 <: Real, R2 <: Real} length(locs_x_in) != length(locs_y_in) && error("Vectors must be same length") N = nv(g) @@ -232,12 +232,12 @@ function gplot(g::AbstractGraph{T}, end compose(context(units=UnitBox(-1.2, -1.2, +2.4, +2.4)), - compose(context(), rectangle(-1.2, -1.2, +2.4, +2.4), fill(backgroundc)), compose(context(), texts, fill(nodelabelc), stroke(nothing), fontsize(nodelabelsize)), compose(context(), nodes, fill(nodefillc), stroke(nodestrokec), linewidth(nodestrokelw)), compose(context(), edgetexts, fill(edgelabelc), stroke(nothing), fontsize(edgelabelsize)), compose(context(), arrows, stroke(edgestrokec), linewidth(edgelinewidth)), - compose(context(), lines, stroke(edgestrokec), fill(nothing), linewidth(edgelinewidth))) + compose(context(), lines, stroke(edgestrokec), fill(nothing), linewidth(edgelinewidth)), + compose(context(), rectangle(-1.2, -1.2, +2.4, +2.4), fill(background_color))) end function gplot(g; layout::Function=spring_layout, keyargs...) diff --git a/test/data/karate_background_color.png b/test/data/karate_background_color.png new file mode 100644 index 0000000000000000000000000000000000000000..430e108e959af860f4597fa5852fc825d9668888 GIT binary patch literal 73012 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 save_comparison |> success + + # test background color + plot_and_save4(fname) = plot_and_save(fname, g, background_color=colorant"lightyellow") + refimg4 = joinpath(datadir, "karate_background_color.png") + @test test_images(VisualTest(plot_and_save4, refimg4), popup=!istravis) |> save_comparison |> success end @testset "WheelGraph" begin