working on groups and iris notebook
This commit is contained in:
parent
e3612b973f
commit
870fb4e2df
@ -26,32 +26,14 @@
|
|||||||
"WARNING: Base.String is deprecated, use AbstractString instead.\n",
|
"WARNING: Base.String is deprecated, use AbstractString instead.\n",
|
||||||
"WARNING: Base.String is deprecated, use AbstractString instead.\n",
|
"WARNING: Base.String is deprecated, use AbstractString instead.\n",
|
||||||
"WARNING: Base.String is deprecated, use AbstractString instead.\n",
|
"WARNING: Base.String is deprecated, use AbstractString instead.\n",
|
||||||
"INFO: Recompiling stale cache file /home/tom/.julia/lib/v0.4/Plots.ji for module Plots.\n",
|
"INFO: Recompiling stale cache file /home/tom/.julia/lib/v0.4/Plots.ji for module Plots.\n"
|
||||||
"ERROR: LoadError: LoadError: UndefVarError: T not defined\n",
|
|
||||||
" in include at ./boot.jl:261\n",
|
|
||||||
" in include_from_node1 at ./loading.jl:304\n",
|
|
||||||
" in include at ./boot.jl:261\n",
|
|
||||||
" in include_from_node1 at ./loading.jl:304\n",
|
|
||||||
" [inlined code] from none:2\n",
|
|
||||||
" in anonymous at no file:0\n",
|
|
||||||
" in process_options at ./client.jl:284\n",
|
|
||||||
" in _start at ./client.jl:411\n",
|
|
||||||
"while loading /home/tom/.julia/v0.4/Plots/src/args.jl, in expression starting on line 265\n",
|
|
||||||
"while loading /home/tom/.julia/v0.4/Plots/src/Plots.jl, in expression starting on line 74\n"
|
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ename": "LoadError",
|
"name": "stdout",
|
||||||
"evalue": "LoadError: Failed to precompile Plots to /home/tom/.julia/lib/v0.4/Plots.ji\nwhile loading In[1], in expression starting on line 1",
|
"output_type": "stream",
|
||||||
"output_type": "error",
|
"text": [
|
||||||
"traceback": [
|
"[Plots.jl] Default backend: immerse"
|
||||||
"LoadError: Failed to precompile Plots to /home/tom/.julia/lib/v0.4/Plots.ji\nwhile loading In[1], in expression starting on line 1",
|
|
||||||
"",
|
|
||||||
" in error at ./error.jl:21",
|
|
||||||
" in recompile_stale at loading.jl:460",
|
|
||||||
" in _require_from_serialized at loading.jl:83",
|
|
||||||
" in _require_from_serialized at ./loading.jl:109",
|
|
||||||
" in require at ./loading.jl:219"
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
@ -69,13 +51,22 @@
|
|||||||
},
|
},
|
||||||
"outputs": [
|
"outputs": [
|
||||||
{
|
{
|
||||||
"ename": "LoadError",
|
"name": "stdout",
|
||||||
"evalue": "LoadError: UndefVarError: gadfly! not defined\nwhile loading In[2], in expression starting on line 1",
|
"output_type": "stream",
|
||||||
"output_type": "error",
|
"text": [
|
||||||
"traceback": [
|
"\n",
|
||||||
"LoadError: UndefVarError: gadfly! not defined\nwhile loading In[2], in expression starting on line 1",
|
"[Plots.jl] Switched to backend: gadfly"
|
||||||
""
|
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"data": {
|
||||||
|
"text/plain": [
|
||||||
|
"Plots.GadflyPackage()"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"execution_count": 2,
|
||||||
|
"metadata": {},
|
||||||
|
"output_type": "execute_result"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"source": [
|
"source": [
|
||||||
@ -101,18 +92,38 @@
|
|||||||
"in update! at /home/tom/.julia/v0.4/Nettle/src/hmac.jl:29\n"
|
"in update! at /home/tom/.julia/v0.4/Nettle/src/hmac.jl:29\n"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "stdout",
|
||||||
|
"output_type": "stream",
|
||||||
|
"text": [
|
||||||
|
"\n",
|
||||||
|
"[Plots.jl] Initializing backend: gadfly\n",
|
||||||
|
"groupargs = Plots.GroupBy(UTF8String[\"setosa\",\"versicolor\",\"virginica\"],[[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,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100],[101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150]])"
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"ename": "LoadError",
|
"ename": "LoadError",
|
||||||
"evalue": "LoadError: UndefVarError: scatter not defined\nwhile loading In[3], in expression starting on line 1",
|
"evalue": "LoadError: MethodError: `start` has no method matching start(::Plots.GroupBy)\nwhile loading In[3], in expression starting on line 1",
|
||||||
"output_type": "error",
|
"output_type": "error",
|
||||||
"traceback": [
|
"traceback": [
|
||||||
"LoadError: UndefVarError: scatter not defined\nwhile loading In[3], in expression starting on line 1",
|
"LoadError: MethodError: `start` has no method matching start(::Plots.GroupBy)\nwhile loading In[3], in expression starting on line 1",
|
||||||
""
|
"",
|
||||||
|
" in append_any at essentials.jl:127",
|
||||||
|
" in plot! at /home/tom/.julia/v0.4/Plots/src/plot.jl:98",
|
||||||
|
" in plot at /home/tom/.julia/v0.4/Plots/src/plot.jl:58",
|
||||||
|
" in scatter at /home/tom/.julia/v0.4/Plots/src/Plots.jl:81"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "stdout",
|
||||||
|
"output_type": "stream",
|
||||||
|
"text": [
|
||||||
|
"\n"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"source": [
|
"source": [
|
||||||
"scatter(iris, :SepalLength, :SepalWidth)\n",
|
"scatter(iris, :SepalLength, :SepalWidth, group=iris[:Species])\n",
|
||||||
"plot!(u->6+2*sin(u), u->3+cos(u), 0, 2π, lab=\"an oval\", fill=3)\n",
|
"plot!(u->6+2*sin(u), u->3+cos(u), 0, 2π, lab=\"an oval\", fill=3)\n",
|
||||||
"plot!(Any[[6],[3]], t=[:vline,:hline], w=4, c=RGB(1,0,0))\n",
|
"plot!(Any[[6],[3]], t=[:vline,:hline], w=4, c=RGB(1,0,0))\n",
|
||||||
"title!(\"Playing around with series\")"
|
"title!(\"Playing around with series\")"
|
||||||
@ -155,6 +166,28 @@
|
|||||||
"scatter(iris, :SepalLength, [:PetalLength,:PetalWidth,:SepalWidth], m=:auto, ms=10, gui=false)"
|
"scatter(iris, :SepalLength, [:PetalLength,:PetalWidth,:SepalWidth], m=:auto, ms=10, gui=false)"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 7,
|
||||||
|
"metadata": {
|
||||||
|
"collapsed": false
|
||||||
|
},
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"ename": "LoadError",
|
||||||
|
"evalue": "LoadError: MethodError: `split` has no method matching split(::DataArrays.PooledDataArray{ASCIIString,UInt8,1})\nClosest candidates are:\n split(::Any, !Matched::Any, !Matched::Bool)\n split(::Any, !Matched::Any, !Matched::Integer)\n split(::Any, !Matched::Any, !Matched::Integer, !Matched::Bool)\nwhile loading In[7], in expression starting on line 2",
|
||||||
|
"output_type": "error",
|
||||||
|
"traceback": [
|
||||||
|
"LoadError: MethodError: `split` has no method matching split(::DataArrays.PooledDataArray{ASCIIString,UInt8,1})\nClosest candidates are:\n split(::Any, !Matched::Any, !Matched::Bool)\n split(::Any, !Matched::Any, !Matched::Integer)\n split(::Any, !Matched::Any, !Matched::Integer, !Matched::Bool)\nwhile loading In[7], in expression starting on line 2",
|
||||||
|
""
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"source": [
|
||||||
|
"species = iris[:Species]\n",
|
||||||
|
"split(species)"
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 29,
|
"execution_count": 29,
|
||||||
|
|||||||
17
src/args.jl
17
src/args.jl
@ -255,18 +255,27 @@ end
|
|||||||
|
|
||||||
"A special type that will break up incoming data into groups, and allow for easier creation of grouped plots"
|
"A special type that will break up incoming data into groups, and allow for easier creation of grouped plots"
|
||||||
type GroupBy
|
type GroupBy
|
||||||
numGroups::Int
|
|
||||||
groupLabels::Vector{UTF8String} # length == numGroups
|
groupLabels::Vector{UTF8String} # length == numGroups
|
||||||
groupIds::Vector{Vector{Int}} # list of indices for each group
|
groupIds::Vector{Vector{Int}} # list of indices for each group
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
function extractGroupArgs(v::AVec)
|
||||||
|
groupLabels = sort(collect(unique(v)))
|
||||||
|
n = length(groupLabels)
|
||||||
|
if n > 20
|
||||||
|
error("Too many group labels. n=$n Is that intended?")
|
||||||
|
end
|
||||||
|
groupIds = Vector{Int}[filter(i -> v[i] == glab, 1:length(v)) for glab in groupLabels]
|
||||||
|
GroupBy(groupLabels, groupIds)
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
# expecting a mapping of "group label" to "group indices"
|
# expecting a mapping of "group label" to "group indices"
|
||||||
function extractGroupArgs{V<:AVec{Int}}(d::Dict{T,V})
|
function extractGroupArgs{T, V<:AVec{Int}}(d::Dict{T,V})
|
||||||
numGroups = length(d)
|
|
||||||
groupLabels = sortedkeys(d)
|
groupLabels = sortedkeys(d)
|
||||||
groupIds = VecI[collect(d[k]) for k in groupLabels]
|
groupIds = VecI[collect(d[k]) for k in groupLabels]
|
||||||
GroupBy(numGroups, groupLabels, groupIds)
|
GroupBy(groupLabels, groupIds)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
11
src/plot.jl
11
src/plot.jl
@ -225,6 +225,17 @@ function createKWargsList(plt::PlottingObject, x, y; kw...)
|
|||||||
ret, xmeta, ymeta
|
ret, xmeta, ymeta
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# handle grouping
|
||||||
|
function createKWargsList(plt::PlottingObject, groupby::GroupBy, args...; kw...)
|
||||||
|
ret = []
|
||||||
|
for (i,glab) in enumerate(groupby.groupLabels)
|
||||||
|
# TODO: don't automatically overwrite labels
|
||||||
|
kwlist = createKWargsList(plt, args...; kw..., idxfilter = groupby.groupIds[i], label = glab)
|
||||||
|
append!(ret, kwlist)
|
||||||
|
end
|
||||||
|
ret, nothing, nothing # TODO: handle passing meta through
|
||||||
|
end
|
||||||
|
|
||||||
# pass it off to the x/y version
|
# pass it off to the x/y version
|
||||||
function createKWargsList(plt::PlottingObject, y; kw...)
|
function createKWargsList(plt::PlottingObject, y; kw...)
|
||||||
createKWargsList(plt, nothing, y; kw...)
|
createKWargsList(plt, nothing, y; kw...)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user