We've discussed various ways of making this simpler, but we weren't able to
settle on a good interface.
Currently, I think most readable way to access the coordinates of the
vertices is this:
```
cs = contours(x,y,z,N)
for c in cs
lvl, lines = c.level, c.lines
for line in lines
xs = [v[1] for v in vertices]
ys = [v[2] for y in vertices]
# do whatever to plot (xs, ys) as a contour line
end
end
```
but I'm not really happy with that, since it requires two passes over the
list of vertices. We have discussed adding
```
function coordinates(c::Curve2)
N = length(c.vertices)
xlist = Array(Float64,N)
ylist = Array(Float64,N)
for (i,v) in enumerate(c.vertices)
xlist[i] = v[1]
ylist[i] = v[2]
end
xlist, ylist
end
```
to be used as `xs, ys = coordinates(line)` but it hasn't been added yet. Is
this a good API for this? If not, what would be a better one? If this seems
good, it can easily be added.
// T
On Friday, July 4, 2014 5:44:13 PM UTC+2, j verzani wrote:
>
> There may be a more efficient way, but this simple sketch for drawing
> contour plots with Winston is one way:
>
> using Winston
> using Contour
> function contour_plot(x, y, z, N)
> cs = contours(x,y,z,N)
> p = FramedPlot()
> for c in cs
> level, lines = c.level, c.lines
> for line in lines
> xys = hcat(line.vertices...)'
> add(p, Curve(xys[:,1], xys[:,2])) ## add color
> end
> ## add label
> end
> p
> end
>
>
> On Friday, July 4, 2014 3:21:19 AM UTC-4, Oliver Lylloff wrote:
>>
>> I really like this new feature.
>>
>> I was thinking of adding a contour functionality to PGFplots (
>> https://github.com/sisl/PGFPlots.jl). I think this could be done by
>> writing the arrays of contour lines as coordinates in a pgfplot
>> environment. How would you convert the lines Array{Curve2{Float64},1} to
>> Array{Float64,2}? I guess that is also what current or future plotting
>> packages would want to do?
>>
>> Best,
>> Oliver
>>
>> Den torsdag den 3. juli 2014 17.19.50 UTC+2 skrev Tomas Lycken:
>>>
>>> The purpose of the Contour.jl package isn’t really to provide that part
>>> of the functionality - but rather an abstraction over *finding* the
>>> contours in the first place, that plotting packages can make use of. If you
>>> only want the contours in order to plot them, it’s better to use one of the
>>> plotting packages directly.
>>>
>>> Contour plots are already available in PyPlot (using the matplotlib api
>>> <http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.contour>),
>>> and at least to some extent in Gadfly
>>> <https://github.com/dcjones/Gadfly.jl/issues/293>. I don’t know if or
>>> how Winston or others do contour plots, but if they can, they'll probably
>>> show them off in the docs =)
>>>
>>> // T
>>>
>>> On Wednesday, July 2, 2014 4:16:32 PM UTC+2, Andrei Berceanu wrote:
>>>
>>> Great work, congratulations for the package. I have a short question.
>>>> Once I get an array of Curve2 type, how can I get a graphical
>>>> representation of it? I mean, in Winston/Gaston/PyPlot/whatever.
>>>>
>>>> On Sunday, June 29, 2014 12:34:28 AM UTC+2, Tomas Lycken wrote:
>>>>>
>>>>> Huzzah!
>>>>>
>>>>> We’ve just released Contour.jl <https://github.com/tlycken/Contour.jl>,
>>>>> a light-weight package that provides an algorithm to calculate iso-lines
>>>>> of
>>>>> a scalar 2D-field f(x,y), such as those shown on a contour plot. The
>>>>> current implementation uses the Marching Squares
>>>>> <http://en.wikipedia.org/wiki/Marching_squares> algorithm, and
>>>>> returns the contour lines in an array of ContourLevel instances, that
>>>>> provide an abstraction over the actual implementation of curves as
>>>>> geometrical objects. Currently lists of Vector2s from ImmutableArrays
>>>>> are used to represent curves, but the idea is that if e.g. a package with
>>>>> general geometry items emerges, we can seemlessly switch to that.
>>>>>
>>>>> Our hopes is that other packages that have use for isolines (e.g. all
>>>>> plotting packages that want to plot contours) use this package instead of
>>>>> each carrying their own implementation, but use cases are of course not
>>>>> limited to plotting. (I wanted to put this together because I needed to
>>>>> calculate volumes inside axisymmetric isosurfaces, and this solved a
>>>>> large
>>>>> part of that problem…)
>>>>>
>>>>> Please, kick the tires and see what you can do with this! =)
>>>>>
>>>>> Finally, a big thanks to Darwin Darakananda
>>>>> <https://github.com/darwindarak>, who’s done almost all the coding.
>>>>>
>>>>> // Tomas
>>>>>
>>>>>
>>>>
>>>
>>