Skip to content

Commit

Permalink
Merge pull request #127 from nomadbl/add_gadfly
Browse files Browse the repository at this point in the history
add native support for Gadfly plots
  • Loading branch information
nomadbl authored Jul 10, 2023
2 parents 3560be6 + 3f45cbd commit ded3fc5
Show file tree
Hide file tree
Showing 6 changed files with 47 additions and 4 deletions.
5 changes: 4 additions & 1 deletion Project.toml
Original file line number Diff line number Diff line change
Expand Up @@ -20,13 +20,16 @@ StatsBase = "0.27, 0.28, 0.29, 0.30, 0.31, 0.32, 0.33, 0.34"
julia = "1.6"

[extras]
Minio = "4281f0d9-7ae0-406e-9172-b7277c1efa20"
ImageMagick = "6218d12a-5da1-5696-b52f-db25d2ecc6d1"
LightGraphs = "093fc24a-ae57-5d10-9952-331d41423f4d"
Logging = "56ddb016-857b-54e1-b83d-db4d58db5568"
MLDatasets = "eb30cadb-4394-5ae3-aed4-317e484a6458"
Minio = "4281f0d9-7ae0-406e-9172-b7277c1efa20"
Plots = "91a5bcdd-55d7-5caf-9e0b-520d859cae80"
PyPlot = "d330b81b-6aea-500a-939a-2ce795aea3ee"
Gadfly = "c91e804a-d5a3-530f-b6f0-dfbca275c004"
Cairo="159f3aea-2a34-519c-b102-8c37f9878175"
Fontconfig="186bb1d3-e1f7-5a2c-a377-96d770f13627"
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
TestImages = "5e47fb64-e119-507b-a336-dd2b206d9990"
Tracker = "9f7883ad-71c0-57eb-9f7f-b5c9e6d3789c"
Expand Down
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,8 +39,8 @@ logger in Julia:

You can log to TensorBoard any type. Numeric types will be logged as scalar,
arrays will be binned into histograms, images and audio will be logged as such,
and we even support [Plots](https://github.com/JuliaPlots/Plots.jl) and
[PyPlot](https://github.com/JuliaPlots/Plots.jl) figures!
and we even support [Plots](https://github.com/JuliaPlots/Plots.jl),
[PyPlot](https://github.com/JuliaPlots/Plots.jl) and [Gadfly](https://github.com/GiovineItalia/Gadfly.jl) figures!

For details about how types are logged by default, or how to customize this behaviour for your custom types,
refer to the documentation or the examples folder.
Expand Down Expand Up @@ -71,7 +71,7 @@ end
```

## Integration with third party packages
We also support native logging of the types defined by a few third-party packages, such as `Plots` and `PyPlot` plots.
We also support native logging of the types defined by a few third-party packages, such as `Plots`, `PyPlot` and `Gadfly` plots.
If there are other libraries that you think we should include in the list, please open an issue.

## Roadmap
Expand Down
1 change: 1 addition & 0 deletions docs/src/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,7 @@ at [Reading back TensorBoard data](@ref)
We also support logging custom types from a the following third-party libraries:
- [Plots.jl](https://github.com/JuliaPlots/Plots.jl): the `Plots.Plot` type will be rendered to PNG at the resolution specified by the object and logged as an image
- [PyPlot.jl](https://github.com/JuliaPy/PyPlot.jl): the `PyPlot.Figure` type will be rendered to PNG at the resolution specified by the object and logged as an image
- [Gadfly.jl](https://github.com/GiovineItalia/Gadfly.jl) type will be rendered to PNG at the resolution specified by the object and logged as an image. `Cairo` and `Fontconfig` packages must be imported for this functionality to work as it is required by `Gadfly`.
- [Tracker.jl](https://github.com/FluxML/Tracker.jl): the `TrackedReal` and `TrackedArray` types will be logged as vector data
- [ValueHistories.jl](https://github.com/JuliaML/ValueHistories.jl): the `MVHistory` type is used to store the deserialized content of .proto files.

Expand Down
14 changes: 14 additions & 0 deletions examples/Gadfly.jl
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
using TensorBoardLogger #import the TensorBoardLogger package
using Logging #import Logging package
using Gadfly, Cairo, Fontconfig

logger = TBLogger("Gadflylogs", tb_append) #create tensorboard logger

################log scalars example: y = x²################
#using logger interface
x = rand(100)
y = rand(100)
p = plot(x=x, y=y, Geom.point);
with_logger(logger) do
@info "gadfly" plot=p
end
15 changes: 15 additions & 0 deletions src/Optional/Gadfly.jl
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
import .Gadfly: Plot, render, draw
function Base.convert(t::Type{PngImage}, plot::Gadfly.Plot)
pb = PipeBuffer();
show(pb, MIME("image/png"), render(plot));
# draw(Gadfly.PNG(pb), plot); # leaving here for now, does same thing
return PngImage(pb)
end

preprocess(name, plot::Gadfly.Plot, data) = preprocess(name, convert(PngImage, plot), data)
preprocess(name, plots::AbstractArray{<:Gadfly.Plot}, data) = begin
for (i, plot)=enumerate(plots)
preprocess(name*"/$i", plot, data)
end
return data
end
10 changes: 10 additions & 0 deletions src/TensorBoardLogger.jl
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,16 @@ function __init__()
@require PyPlot="d330b81b-6aea-500a-939a-2ce795aea3ee" begin
include("Optional/PyPlot.jl")
end
@require Gadfly="c91e804a-d5a3-530f-b6f0-dfbca275c004" begin
@require Fontconfig="186bb1d3-e1f7-5a2c-a377-96d770f13627" begin
@require Cairo="159f3aea-2a34-519c-b102-8c37f9878175" begin
using .Cairo
using .Fontconfig
include("Optional/Gadfly.jl")
end
end
end
# @require Gadfly="c91e804a-d5a3-530f-b6f0-dfbca275c004" include("Optional/Gadfly.jl")
@require Tracker="9f7883ad-71c0-57eb-9f7f-b5c9e6d3789c" begin
include("Optional/Tracker.jl")
end
Expand Down

0 comments on commit ded3fc5

Please sign in to comment.