first commit; working on structure and readme
This commit is contained in:
parent
e4b5a5df10
commit
4c21dd1897
48
README.md
48
README.md
@ -1,3 +1,51 @@
|
|||||||
# Plot
|
# Plot
|
||||||
|
|
||||||
[](https://travis-ci.org/tbreloff/Plot.jl)
|
[](https://travis-ci.org/tbreloff/Plot.jl)
|
||||||
|
|
||||||
|
Plotting interface and wrapper for several plotting packages.
|
||||||
|
|
||||||
|
First, clone the package, and get any plotting packages you need:
|
||||||
|
|
||||||
|
```
|
||||||
|
Pkg.clone("https://github.com/JuliaPlot/Plot.jl.git")
|
||||||
|
Pkg.clone("https://github.com/tbreloff/Qwt.jl.git") # requires pyqt and pyqwt
|
||||||
|
Pkg.add("Gadfly") # might also need to Pkg.checkout("Gadfly") and maybe Colors/Compose... I had trouble with it
|
||||||
|
```
|
||||||
|
|
||||||
|
Now load it in:
|
||||||
|
|
||||||
|
```
|
||||||
|
using Plot
|
||||||
|
```
|
||||||
|
|
||||||
|
Do a plot in Qwt, then save a png:
|
||||||
|
|
||||||
|
```
|
||||||
|
plotter(:Qwt)
|
||||||
|
plot(1:10)
|
||||||
|
savepng(ans, Plot.IMG_DIR * "qwt1.png")
|
||||||
|
```
|
||||||
|
|
||||||
|
which saves:
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
|
||||||
|
Do a plot in Gadfly, then save a png:
|
||||||
|
|
||||||
|
```
|
||||||
|
plotter(:Gadfly)
|
||||||
|
plot(1:10)
|
||||||
|
savepng(ans, Plot.IMG_DIR * "gadfly1.png", 6Gadfly.inch, 4Gadfly.inch)
|
||||||
|
```
|
||||||
|
|
||||||
|
which saves:
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# Author
|
||||||
|
|
||||||
|
Thomas Breloff (@tbreloff)
|
||||||
|
|
||||||
|
|||||||
100
src/Plot.jl
100
src/Plot.jl
@ -1,5 +1,103 @@
|
|||||||
module Plot
|
module Plot
|
||||||
|
|
||||||
# package code goes here
|
using Requires
|
||||||
|
|
||||||
|
# these are the plotting packages you can load. we use lazymod so that we
|
||||||
|
# don't "import" the module until we want it
|
||||||
|
@lazymod Qwt
|
||||||
|
@lazymod Gadfly
|
||||||
|
|
||||||
|
# ---------------------------------------------------------
|
||||||
|
|
||||||
|
abstract PlottingPackage
|
||||||
|
|
||||||
|
immutable QwtPackage <: PlottingPackage end
|
||||||
|
immutable GadflyPackage <: PlottingPackage end
|
||||||
|
|
||||||
|
const AVAILABLE_PACKAGES = [:Qwt, :Gadfly]
|
||||||
|
const INITIALIZED_PACKAGES = Set{Symbol}()
|
||||||
|
|
||||||
|
type CurrentPackage
|
||||||
|
pkg::Nullable{PlottingPackage}
|
||||||
|
end
|
||||||
|
|
||||||
|
const CURRENT_PACKAGE = CurrentPackage(Nullable{PlottingPackage}())
|
||||||
|
function currentPackage()
|
||||||
|
if isnull(CURRENT_PACKAGE.pkg)
|
||||||
|
error("Must choose a plotter. Example: `plotter(:Qwt)`")
|
||||||
|
end
|
||||||
|
get(CURRENT_PACKAGE.pkg)
|
||||||
|
end
|
||||||
|
|
||||||
|
doc"""
|
||||||
|
Setup the plot environment.
|
||||||
|
`plotter(:Qwt)` will load package Qwt.jl and map all subsequent plot commands to that package.
|
||||||
|
Same for `plotter(:Gadfly)`, etc.
|
||||||
|
"""
|
||||||
|
function plotter(modname)
|
||||||
|
if modname == :Qwt
|
||||||
|
if !(modname in INITIALIZED_PACKAGES)
|
||||||
|
qwt()
|
||||||
|
push!(INITIALIZED_PACKAGES, modname)
|
||||||
|
end
|
||||||
|
global Qwt = Main.Qwt
|
||||||
|
CURRENT_PACKAGE.pkg = Nullable(QwtPackage())
|
||||||
|
return
|
||||||
|
elseif modname == :Gadfly
|
||||||
|
if !(modname in INITIALIZED_PACKAGES)
|
||||||
|
gadfly()
|
||||||
|
push!(INITIALIZED_PACKAGES, modname)
|
||||||
|
end
|
||||||
|
global Gadfly = Main.Gadfly
|
||||||
|
CURRENT_PACKAGE.pkg = Nullable(GadflyPackage())
|
||||||
|
return
|
||||||
|
end
|
||||||
|
error("Unknown plotter $modname. Choose from: $AVAILABLE_PACKAGES")
|
||||||
|
end
|
||||||
|
|
||||||
|
# ---------------------------------------------------------
|
||||||
|
|
||||||
|
const IMG_DIR = "$(ENV["HOME"])/.julia/v0.4/Plot/img/"
|
||||||
|
|
||||||
|
|
||||||
|
# ---------------------------------------------------------
|
||||||
|
|
||||||
|
# Qwt
|
||||||
|
|
||||||
|
plot(::QwtPackage, args...; kwargs...) = Qwt.plot(args...; kwargs...)
|
||||||
|
savepng(::QwtPackage, plt, fn::String, args...) = Qwt.savepng(plt, fn)
|
||||||
|
|
||||||
|
# ---------------------------------------------------------
|
||||||
|
|
||||||
|
# Gadfly
|
||||||
|
|
||||||
|
plot(::GadflyPackage, y; kwargs...) = Gadfly.plot(; x = 1:length(y), y = y, kwargs...)
|
||||||
|
plot(::GadflyPackage, x, y; kwargs...) = Gadfly.plot(; x = x, y = y, kwargs...)
|
||||||
|
plot(::GadflyPackage, args...; kwargs...) = Gadfly.plot(args...; kwargs...)
|
||||||
|
savepng(::GadflyPackage, plt, fn::String, args...) = Gadfly.draw(Gadfly.PNG(fn, args...), plt)
|
||||||
|
|
||||||
|
|
||||||
|
# ---------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
export
|
||||||
|
plotter,
|
||||||
|
plot,
|
||||||
|
savepng
|
||||||
|
|
||||||
|
doc"""
|
||||||
|
The main plot command. You must call `plotter(:ModuleName)` to set the current plotting environment first.
|
||||||
|
Commands are converted into the relevant plotting commands for that package:
|
||||||
|
plotter(:Gadfly)
|
||||||
|
plot(1:10) # this calls `y = 1:10; Gadfly.plot(x=1:length(y), y=y)`
|
||||||
|
plotter(:Qwt)
|
||||||
|
plot(1:10) # this calls `Qwt.plot(1:10)`
|
||||||
|
"""
|
||||||
|
plot(args...; kwargs...) = plot(currentPackage(), args...; kwargs...)
|
||||||
|
savepng(args...; kwargs...) = savepng(currentPackage(), args...; kwargs...)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# ---------------------------------------------------------
|
||||||
|
|
||||||
end # module
|
end # module
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user