diff --git a/examples/ticks_and_limits.ipynb b/examples/ticks_and_limits.ipynb index 6bf95861..4f8544cd 100644 --- a/examples/ticks_and_limits.ipynb +++ b/examples/ticks_and_limits.ipynb @@ -2,208 +2,48 @@ "cells": [ { "cell_type": "code", - "execution_count": 2, + "execution_count": 1, "metadata": { "collapsed": false, "scrolled": false }, "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[Plots.jl] Switched to backend: gadfly" - ] - }, { "name": "stderr", "output_type": "stream", "text": [ - "INFO: Recompiling stale cache file /Users/tom/.julia/lib/v0.4/Gadfly.ji for module Gadfly.\n" + "INFO: Recompiling stale cache file /home/tom/.julia/lib/v0.4/Plots.ji for module Plots.\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "\n", - "[Plots.jl] Initializing backend: gadfly\n" + "[Plots.jl] Default backend: immerse\n", + "[Plots.jl] Switched to backend: gadfly\n", + "[Plots.jl] Initializing backend: gadfly" ] }, { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO: Recompiling stale cache file /Users/tom/.julia/lib/v0.4/Cairo.ji for module Cairo.\n", - "INFO: Recompiling stale cache file /Users/tom/.julia/lib/v0.4/Compose.ji for module Compose.\n", - "WARNING: `require` is deprecated, use `using` or `import` instead\n", - " in depwarn at deprecated.jl:73\n", - " [inlined code] from deprecated.jl:693\n", - " in require at no file:0\n", - " in isinstalled at /Users/tom/.julia/v0.4/Compose/src/Compose.jl:36\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 /Users/tom/.julia/v0.4/Compose/src/Compose.jl, in expression starting on line 155\n", - "WARNING: Base.Nothing is deprecated, use Void instead.\n", - "WARNING: `require` is deprecated, use `using` or `import` instead\n", - " in depwarn at deprecated.jl:73\n", - " [inlined code] from deprecated.jl:693\n", - " in require at no file:0\n", - " in isinstalled at /Users/tom/.julia/v0.4/Compose/src/Compose.jl:36\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 /Users/tom/.julia/v0.4/Gadfly/src/Gadfly.jl, in expression starting on line 880\n", - "INFO: Recompiling stale cache file /Users/tom/.julia/lib/v0.4/DualNumbers.ji for module DualNumbers.\n", - "INFO: Recompiling stale cache file /Users/tom/.julia/lib/v0.4/Optim.ji for module Optim.\n", - "INFO: Recompiling stale cache file /Users/tom/.julia/lib/v0.4/KernelDensity.ji for module KernelDensity.\n", - "WARNING: Union(args...) is deprecated, use Union{args...} instead.\n", - " in depwarn at deprecated.jl:73\n", - " in call at deprecated.jl:50\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 /Users/tom/.julia/v0.4/KernelDensity/src/univariate.jl, in expression starting on line 11\n", - "WARNING: Union(args...) is deprecated, use Union{args...} instead.\n", - " in depwarn at deprecated.jl:73\n", - " in call at deprecated.jl:50\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 /Users/tom/.julia/v0.4/KernelDensity/src/bivariate.jl, in expression starting on line 82\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.Uint8 is deprecated, use UInt8 instead.\n", - "WARNING: Base.Uint8 is deprecated, use UInt8 instead.\n", - "WARNING: Base.Uint8 is deprecated, use UInt8 instead.\n", - "WARNING: Base.Uint8 is deprecated, use UInt8 instead.\n", - "WARNING: Base.FloatingPoint is deprecated, use AbstractFloat instead.\n", - "WARNING: Base.FloatingPoint is deprecated, use AbstractFloat instead.\n", - "WARNING: Base.FloatingPoint is deprecated, use AbstractFloat instead.\n", - "WARNING: Base.FloatingPoint is deprecated, use AbstractFloat instead.\n", - "WARNING: Base.FloatingPoint is deprecated, use AbstractFloat instead.\n", - "WARNING: Base.FloatingPoint is deprecated, use AbstractFloat instead.\n", - "WARNING: Base.FloatingPoint is deprecated, use AbstractFloat instead.\n", - "WARNING: Base.FloatingPoint is deprecated, use AbstractFloat instead.\n", - "WARNING: Base.FloatingPoint is deprecated, use AbstractFloat instead.\n", - "WARNING: Base.FloatingPoint is deprecated, use AbstractFloat instead.\n", - "WARNING: Base.FloatingPoint is deprecated, use AbstractFloat instead.\n", - "WARNING: Base.FloatingPoint is deprecated, use AbstractFloat 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", - "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.FloatingPoint is deprecated, use AbstractFloat instead.\n", - "in concrete_minimum at /Users/tom/.julia/v0.4/Showoff/src/Showoff.jl:50\n", - "WARNING: Base.FloatingPoint is deprecated, use AbstractFloat instead.\n", - "in concrete_minimum at /Users/tom/.julia/v0.4/Showoff/src/Showoff.jl:50\n", - "WARNING: Base.FloatingPoint is deprecated, use AbstractFloat instead.\n", - "in concrete_maximum at /Users/tom/.julia/v0.4/Showoff/src/Showoff.jl:72\n", - "WARNING: Base.FloatingPoint is deprecated, use AbstractFloat instead.\n", - "in concrete_maximum at /Users/tom/.julia/v0.4/Showoff/src/Showoff.jl:72\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", - "WARNING: Base.String is deprecated, use AbstractString instead.\n", - "WARNING: Base.String is deprecated, use AbstractString instead.\n" + "ename": "LoadError", + "evalue": "LoadError: MethodError: `convert` has no method matching convert(::Type{Union{Function,Void}}, ::Array{UTF8String,1})\nThis may have arisen from a call to the constructor Union{Function,Void}(...),\nsince type constructors fall back to convert methods.\nClosest candidates are:\n call{T}(::Type{T}, ::Any)\n convert{T}(::Type{T}, !Matched::T)\nwhile loading In[1], in expression starting on line 6", + "output_type": "error", + "traceback": [ + "LoadError: MethodError: `convert` has no method matching convert(::Type{Union{Function,Void}}, ::Array{UTF8String,1})\nThis may have arisen from a call to the constructor Union{Function,Void}(...),\nsince type constructors fall back to convert methods.\nClosest candidates are:\n call{T}(::Type{T}, ::Any)\n convert{T}(::Type{T}, !Matched::T)\nwhile loading In[1], in expression starting on line 6", + "", + " in call at /home/tom/.julia/v0.4/Gadfly/src/scale.jl:387", + " in addGadflyTicksGuide at /home/tom/.julia/v0.4/Plots/src/backends/gadfly.jl:290", + " in updateGadflyGuides at /home/tom/.julia/v0.4/Plots/src/backends/gadfly.jl:348", + " in plot! at /home/tom/.julia/v0.4/Plots/src/plot.jl:119", + " 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": [ - "sym = :x" - ] - }, - { - "data": { - "image/png": "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x918uyTJuB2FT6KY4Ab7hI3JEgxGg8GMKuakN5vNVlpaum/fvrfeeuuDDz7w+/0Zk1253UFJUlhHAQlcffXV8eyKEOLxeH7+85/7/TpW22lu9ur34pBGKKUtLT7WUfSIuwRLUWg4rONnNvTZySef3L3xlFNO0a9HUZRR+qhXFEW55ZZbKioqLr300unTp5eVlb388susg0qOSCTW5YAk8KCxsXH9+vVdGt1u9+eff65fp8FgTL8Xh/SibdXlE3cJlsViKiri7kYhIITcdttt/fv379ySn59/991369ej02l3OjndvcinRx999Omnn44nIoFA4Nprr928eTPbqJKisDDHbObuUA54PJ6E7R0dOtYCLS3N0+/FIY0IgtC/P7+HeLhLsAwG7HDnVElJyYYNG+bOnTtkyJCKioprrrlmw4YNuu6eNpuNKH3UK93nqxRFefXVV5kEk1w2G3a482jgwIEWS4L95sccc4x+naIYNcTxfNyBuwQrFpOwvs6nPXv2lJWVLVmypKqqqrq6+p///OeQIUP27t2rX49eb9jnw1U5vdC9RgMhpKmpKfWRJF1TkxfrxRxyOp1z587t0jh27NgzzzxTv055vh0FUolSum8fv4OBuyl3Sgnu9+XTLbfcUlRUdOWVV44cOdJgMGzbtu2NN97YunXrxo0bdeoRe256a+DAgd0vxhk0aBCTYJJLURQceebTwoULs7OzFy1a5Pf7LRbL5Zdf/vjjj+t6rxGOO0AczwkDyjTA4bryyitfe+21Lo3nnnvuqlWrmMQD3T377LM33HBD5xabzfbdd9/pul4DQAiRZbm5ubmwsFDvIlgA6YK7QqOUEkqpIGTIZosNGzb83//930cffRQKhYYOHZrWt9WazebuCdaf/vSnE088Uacetew/YwZDCpxyyilms3n9+vWSJBFCysvLX3311TFjxrCOKwlUlWIs8MxgMOTk5JhMqVgVUVUVQwE0qspvwsDdDFY0KrW3B8rK8lkHkgS33XbbE088Ef/x7LPPXrlyZXZ2Gl9l/ec///mvf/2rLMuEEIPBcPvttz/yyCP6DW6tIhou/+6tYDC4detWh8Nx/PHHG40ZckqgocFdVJSDEzBACKmqahk6tB/rKIA9SmlNTVtlZTHrQBLjLsESRdnrDRUX83s/9mFasWLFjBkzujTefffdDz74IJN4kqWhoWHN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27atqKjosssuGzVqFOuI0gxOEfZKS0vLwIEDRVHs3NivX7+Ghoa0zrHcbveqVataWlqGDx8+depUDv8u3AWkKDQcFvPzWccBHBBFfese1dXVdW+sra3VtVNd3XfffZ2zK0LIli1bli5detNNN7EKKVkikVh2tpWQTEiwXC7XzTffzDqKNBYMZsDmodTp16/fAw88cNddd8XnU8xm89NPP81hRnL43nvvvTlz5sQfd6NGjfrggw8GDBjANqouuJtyt1hMWF8HTU5OVk6OjsdD+vXr172xpKREvx71lnB9c8OGDamPJOmKi124KodbtbW199133+zZs+fPn//NN9/o3V15Ob6C9878+fM/++yza6+9durUqTfffPOmTZsuvfRS1kH1XVtb2+zZszt/mdy6devcuXMZhpQQdw8sg0HAYxQ0ep/Jnz179ieffNKl8aqrrtK1U12l/kLulMFjgVurV6+eMWNGKBTSfnz00UeffPJJXafocJdaH0ycOHHixImso0iOjz76KBjsenjwww8/9Pv9OTkcTdBwN4MVi0m4BgE0Hk/I6w3p9/rXXnvtXXfdFU9KbDbbwoULp06dql+Pekv4ANX1Qu6UaWz0xGIS6yigK0rp3Llz49kVIURV1d/+9rdNTU36dVpT06rfiwP/Ojo6ujeqqur18nVtDncJFqVEVfnadw+sUEr1HgwPPfRQbW3tG2+88fbbb9fX199xxx1pXWzpf/7nf8rLyzu3TJ8+fdasWaziSaLu58yBBzU1NXv37u3SGIvFvvzyS/06VRR8RhzVEp66dTqd/fv3T30wP4G7WXebzVxWhvV1IIQQvQ+TLly4cPr06cOHD7/88su1lo0bN27atCl9t4QPHDhw8+bNixcvXr9+fVZW1vnnnz9nzpyeDmmnl7KyAtYhQAI9FauMRqP6dTp0aILdk3D0mDJlyqhRo7Zu3dq58dZbb+VtOwR3ZRoopYpC0/1CDEgKbdJCv0twt23bdsYZZ1RUVBx33HGKomzbts3r9W7evJm3r0FACJFl1WgUBEFgHQgcJBaL9evXz+fzdWnfunXryJEjdepUkpTMKNgBfdbY2HjLLbesWLFCluXc3Nzf/OY39957L29fJrlLsKJRqb09gEksIIRodyDoOo+1ZcuWe+65Z+3atSaTafLkyQ888EBlZaV+3UGfNTS4i4pysLuZQ489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uARLliWvFyWbRbR8+fKf//znitJegUbTtEceeeTll1+2rken0465zIFMkiSns5ungcvlyn0wII6iIgwAICKSJEnku/WES7AcDjtOjYnplVde6dr40ksvWdcj7iKEyy67rGvj5ZdfnvtIQBw1NaW8QwD+2traXnnllaeeemrlypVmdUbRCDc9oOtGKqX6fPiAIpympqaujY2Njdb1mE6rRCTs+jrkwIIFCzZt2tRxmH3nO9+55JJLOIYE3EUiyeJiD+8ogKdly5bdcsstkUj7hqJx48atWLGitraWb1SdCJdgqaoeDMaRYAlo+PDhXRtHjBhhXY/xeJqQYA1sp59++s6dO5999tmtW7cWFxdfe+21M2fO5B0UcNbcHEGCNZC1tLR8/etf71ix5dNPP73zzjvfeecdjlF1JdwpQk0zksm0349fHuFs2LBh6tSpHWdiJUl65513pk+fblGPqZRCJLndSLAA4AvBYLyszMc7CuDm5ZdfnjdvXqdGm80WCoX8fj+XkLol3B4su92G7EpMkyZNeuWVV2pqaswvKyoqnn32WeuyKyJyu53IrgCgE2RXfZBOp1euXPnss8+ad53xDqdf2tq6OUZqGEYwGMx9MCcg3AyWqmrRaAr73IWladru3bsZY2eeeabDYW32E4uliAj73IGIAoFYcbFH2FtdIZcaG0PY594rmzdvvv76648ePWp+OW7cuLfffruuro5vVH22YsWK+fPn33777RdeeGFJScnRo0dXrVr1l7/85ejRo1a/K/WKcAkW7iKEDNxFCBlHjwaqqoqxIQ8IdxH2UjqdHjVqVCa7Mk2ePPnDDz/kFVI/6bpuGEanXCoYDJaVlfEKqVvCJViGwVRVw2MUiEhVdSLCpAUQUSqlOp12ke8dg5xJJBSUSzx5f/vb37qtbHLo0KFujy7lBcbYSy+99NprrzU3N48ZM+b73//+V77yFd5BdSbcHiybTSqw7CoWi7W2tvKOIi85HDKyKzC53Q5kV2CyOrtijD333HMXXnjh4MGDJ06cuGTJEtFmInqlpzeg5ubmHEeSRXffffdtt922bNmyjRs3Ll269MILL1y+fDnvoDoTLsFKp9XGxhDvKLJj69atF110UXFxcVVV1ahRo1577TXeEeWZUCgRDuOqHCAiOn48pCjal/85GAAOHbL2I+uDDz747W9/++OPP25sbNy4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", - "text/plain": [ - "Plot{Plots.GadflyPackage() n=1}" - ] - }, - "execution_count": 2, - "metadata": {}, - "output_type": "execute_result" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "di = Dict{Any,Any}(:markersize=>6,:group=>nothing,:width=>1,:ribbon=>nothing,:annotation=>nothing,:color=>RGB{Float64}(0.0,0.0,0.0),:fillto=>nothing,:heatmap_c=>(0.15,0.5),:markercolor=>RGB{Float64}(0.0,0.0,0.0),:marker=>:none,:nbins=>100,:args=>Any[],:label=>\"y1\",:y=>[0.7126733533052545,0.5823437283100286,0.9437163403731574,0.3326090758142064,0.5216474760106129,0.37035649841939233,0.20993625970773877,0.20706724195660597,0.8536683204777709,0.043795505349153,0.9168687694688167,0.9543809936661143,0.829980526357577,0.8285239843486485,0.09540945662578593,0.5880051039818097,0.46254442837879584,0.8149755099250795,0.1338560682863863,0.06505772874996407,0.43848996826697495,0.7330847489774,0.5973028125679536,0.6912375605642944,0.29499520720680716,0.9647454553144166,0.13382224012789057,0.9002501912361462,0.1186894381646515,0.08735634009540916,0.6740821876154874,0.8003536283056361,0.18104601959383237,0.6624218913236628,0.4686428375508933,0.6692293983077597,0.21480708196590736,0.6135588673858579,0.8628275855865148,0.5303206217623391,0.898797505247654,0.2902269591327131,0.12834927475601865,0.9711632045781204,0.4150552698276182,0.8984306280229242,0.008270967019145647,0.9565602385700045,0.6666708565005557,0.585796220622393,0.26019386192786875,0.7719851579622243,0.06986928853389696,0.02572212532584528,0.14201304374214518,0.34001044011257653,0.5376021572397611,0.2345562963781882,0.5522526297574615,0.8402148464669992,0.7497580323824611,0.5934045164377548,0.5938158245251313,0.7487843197095005,0.6782346753532968,0.9605697302236551,0.8452178146622882,0.6606100288852403,0.29039816431296206,0.5409581141737809,0.3191617039317567,0.91889291997692,0.6489105099914976,0.33283221024800413,0.9347702893455694,0.6299903062339047,0.5857679154572897,0.70568780501469,0.20472075769474762,0.1661834598782097,0.04533176944976236,0.15253728699950497,0.6287931834705385,0.3316722679436541,0.05190934370689937,0.6382823758290574,0.26729667652749156,0.6741923928431794,0.8904621260002576,0.05956798791293383,0.9283828740106526,0.04700204679125686,0.634827851702439,0.6049989347186127,0.010156739388051284,0.7614240555018525,0.6640054369500195,0.9239195451166688,0.9899477826862364,0.3036363538852298],:kwargs=>Any[],:axis=>:left,:linetype=>:scatter,:x=>Union{ASCIIString,UTF8String}[\"x01\",\"x01\",\"x01\",\"x01\",\"x01\",\"x01\",\"x01\",\"x01\",\"x01\",\"x01\",\"x02\",\"x02\",\"x02\",\"x02\",\"x02\",\"x02\",\"x02\",\"x02\",\"x02\",\"x02\",\"x02\",\"x02\",\"x02\",\"x02\",\"x02\",\"x02\",\"x02\",\"x02\",\"x02\",\"x02\",\"x03\",\"x03\",\"x03\",\"x03\",\"x03\",\"x03\",\"x03\",\"x03\",\"x03\",\"x04\",\"x04\",\"x04\",\"x04\",\"x04\",\"x04\",\"x04\",\"x04\",\"x04\",\"x04\",\"x04\",\"x05\",\"x05\",\"x05\",\"x05\",\"x06\",\"x06\",\"x06\",\"x06\",\"x06\",\"x06\",\"x06\",\"x06\",\"x06\",\"x06\",\"x06\",\"x07\",\"x07\",\"x07\",\"x07\",\"x07\",\"x07\",\"x08\",\"x08\",\"x08\",\"x08\",\"x08\",\"x08\",\"x08\",\"x08\",\"x08\",\"x08\",\"x09\",\"x09\",\"x09\",\"x09\",\"x09\",\"x09\",\"x09\",\"x09\",\"x10\",\"x10\",\"x10\",\"x10\",\"x10\",\"x10\",\"x10\",\"x10\",\"x10\",\"x10\",\"x10\"],:linestyle=>:solid,:reg=>false)\n", - "v = Union{ASCIIString,UTF8String}[\"x01\",\"x01\",\"x01\",\"x01\",\"x01\",\"x01\",\"x01\",\"x01\",\"x01\",\"x01\",\"x02\",\"x02\",\"x02\",\"x02\",\"x02\",\"x02\",\"x02\",\"x02\",\"x02\",\"x02\",\"x02\",\"x02\",\"x02\",\"x02\",\"x02\",\"x02\",\"x02\",\"x02\",\"x02\",\"x02\",\"x03\",\"x03\",\"x03\",\"x03\",\"x03\",\"x03\",\"x03\",\"x03\",\"x03\",\"x04\",\"x04\",\"x04\",\"x04\",\"x04\",\"x04\",\"x04\",\"x04\",\"x04\",\"x04\",\"x04\",\"x05\",\"x05\",\"x05\",\"x05\",\"x06\",\"x06\",\"x06\",\"x06\",\"x06\",\"x06\",\"x06\",\"x06\",\"x06\",\"x06\",\"x06\",\"x07\",\"x07\",\"x07\",\"x07\",\"x07\",\"x07\",\"x08\",\"x08\",\"x08\",\"x08\",\"x08\",\"x08\",\"x08\",\"x08\",\"x08\",\"x08\",\"x09\",\"x09\",\"x09\",\"x09\",\"x09\",\"x09\",\"x09\",\"x09\",\"x10\",\"x10\",\"x10\",\"x10\",\"x10\",\"x10\",\"x10\",\"x10\",\"x10\",\"x10\",\"x10\"]\n", - "T = Union{ASCIIString,UTF8String}\n", - "sym = :x\n", - "ticksym = :xticks\n", - "di[sym] = Union{ASCIIString,UTF8String}[\"x01\",\"x01\",\"x01\",\"x01\",\"x01\",\"x01\",\"x01\",\"x01\",\"x01\",\"x01\",\"x02\",\"x02\",\"x02\",\"x02\",\"x02\",\"x02\",\"x02\",\"x02\",\"x02\",\"x02\",\"x02\",\"x02\",\"x02\",\"x02\",\"x02\",\"x02\",\"x02\",\"x02\",\"x02\",\"x02\",\"x03\",\"x03\",\"x03\",\"x03\",\"x03\",\"x03\",\"x03\",\"x03\",\"x03\",\"x04\",\"x04\",\"x04\",\"x04\",\"x04\",\"x04\",\"x04\",\"x04\",\"x04\",\"x04\",\"x04\",\"x05\",\"x05\",\"x05\",\"x05\",\"x06\",\"x06\",\"x06\",\"x06\",\"x06\",\"x06\",\"x06\",\"x06\",\"x06\",\"x06\",\"x06\",\"x07\",\"x07\",\"x07\",\"x07\",\"x07\",\"x07\",\"x08\",\"x08\",\"x08\",\"x08\",\"x08\",\"x08\",\"x08\",\"x08\",\"x08\",\"x08\",\"x09\",\"x09\",\"x09\",\"x09\",\"x09\",\"x09\",\"x09\",\"x09\",\"x10\",\"x10\",\"x10\",\"x10\",\"x10\",\"x10\",\"x10\",\"x10\",\"x10\",\"x10\",\"x10\"]\n", - "ticks = Union{ASCIIString,UTF8String}[\"x01\",\"x02\",\"x03\",\"x04\",\"x05\",\"x06\",\"x07\",\"x08\",\"x09\",\"x10\"]\n", - "sym = :y\n", - "di = Dict{Any,Any}(:markersize=>6,:group=>nothing,:width=>1,:ribbon=>nothing,:annotation=>nothing,:color=>RGB{Float64}(0.0,0.0,0.0),:fillto=>nothing,:heatmap_c=>(0.15,0.5),:markercolor=>RGB{Float64}(0.0,0.0,0.0),:marker=>:none,:nbins=>100,:args=>Any[],:label=>\"y1\",:y=>[0.7126733533052545,0.5823437283100286,0.9437163403731574,0.3326090758142064,0.5216474760106129,0.37035649841939233,0.20993625970773877,0.20706724195660597,0.8536683204777709,0.043795505349153,0.9168687694688167,0.9543809936661143,0.829980526357577,0.8285239843486485,0.09540945662578593,0.5880051039818097,0.46254442837879584,0.8149755099250795,0.1338560682863863,0.06505772874996407,0.43848996826697495,0.7330847489774,0.5973028125679536,0.6912375605642944,0.29499520720680716,0.9647454553144166,0.13382224012789057,0.9002501912361462,0.1186894381646515,0.08735634009540916,0.6740821876154874,0.8003536283056361,0.18104601959383237,0.6624218913236628,0.4686428375508933,0.6692293983077597,0.21480708196590736,0.6135588673858579,0.8628275855865148,0.5303206217623391,0.898797505247654,0.2902269591327131,0.12834927475601865,0.9711632045781204,0.4150552698276182,0.8984306280229242,0.008270967019145647,0.9565602385700045,0.6666708565005557,0.585796220622393,0.26019386192786875,0.7719851579622243,0.06986928853389696,0.02572212532584528,0.14201304374214518,0.34001044011257653,0.5376021572397611,0.2345562963781882,0.5522526297574615,0.8402148464669992,0.7497580323824611,0.5934045164377548,0.5938158245251313,0.7487843197095005,0.6782346753532968,0.9605697302236551,0.8452178146622882,0.6606100288852403,0.29039816431296206,0.5409581141737809,0.3191617039317567,0.91889291997692,0.6489105099914976,0.33283221024800413,0.9347702893455694,0.6299903062339047,0.5857679154572897,0.70568780501469,0.20472075769474762,0.1661834598782097,0.04533176944976236,0.15253728699950497,0.6287931834705385,0.3316722679436541,0.05190934370689937,0.6382823758290574,0.26729667652749156,0.6741923928431794,0.8904621260002576,0.05956798791293383,0.9283828740106526,0.04700204679125686,0.634827851702439,0.6049989347186127,0.010156739388051284,0.7614240555018525,0.6640054369500195,0.9239195451166688,0.9899477826862364,0.3036363538852298],:kwargs=>Any[],:axis=>:left,:linetype=>:scatter,:x=>[1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,6,6,6,6,6,6,6,6,6,6,6,7,7,7,7,7,7,8,8,8,8,8,8,8,8,8,8,9,9,9,9,9,9,9,9,10,10,10,10,10,10,10,10,10,10,10],:linestyle=>:solid,:reg=>false)\n", - "v = [0.7126733533052545,0.5823437283100286,0.9437163403731574,0.3326090758142064,0.5216474760106129,0.37035649841939233,0.20993625970773877,0.20706724195660597,0.8536683204777709,0.043795505349153,0.9168687694688167,0.9543809936661143,0.829980526357577,0.8285239843486485,0.09540945662578593,0.5880051039818097,0.46254442837879584,0.8149755099250795,0.1338560682863863,0.06505772874996407,0.43848996826697495,0.7330847489774,0.5973028125679536,0.6912375605642944,0.29499520720680716,0.9647454553144166,0.13382224012789057,0.9002501912361462,0.1186894381646515,0.08735634009540916,0.6740821876154874,0.8003536283056361,0.18104601959383237,0.6624218913236628,0.4686428375508933,0.6692293983077597,0.21480708196590736,0.6135588673858579,0.8628275855865148,0.5303206217623391,0.898797505247654,0.2902269591327131,0.12834927475601865,0.9711632045781204,0.4150552698276182,0.8984306280229242,0.008270967019145647,0.9565602385700045,0.6666708565005557,0.585796220622393,0.26019386192786875,0.7719851579622243,0.06986928853389696,0.02572212532584528,0.14201304374214518,0.34001044011257653,0.5376021572397611,0.2345562963781882,0.5522526297574615,0.8402148464669992,0.7497580323824611,0.5934045164377548,0.5938158245251313,0.7487843197095005,0.6782346753532968,0.9605697302236551,0.8452178146622882,0.6606100288852403,0.29039816431296206,0.5409581141737809,0.3191617039317567,0.91889291997692,0.6489105099914976,0.33283221024800413,0.9347702893455694,0.6299903062339047,0.5857679154572897,0.70568780501469,0.20472075769474762,0.1661834598782097,0.04533176944976236,0.15253728699950497,0.6287931834705385,0.3316722679436541,0.05190934370689937,0.6382823758290574,0.26729667652749156,0.6741923928431794,0.8904621260002576,0.05956798791293383,0.9283828740106526,0.04700204679125686,0.634827851702439,0.6049989347186127,0.010156739388051284,0.7614240555018525,0.6640054369500195,0.9239195451166688,0.9899477826862364,0.3036363538852298]\n", - "T = Float64\n", - "di[:x] = [1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,6,6,6,6,6,6,6,6,6,6,6,7,7,7,7,7,7,8,8,8,8,8,8,8,8,8,8,9,9,9,9,9,9,9,9,10,10,10,10,10,10,10,10,10,10,10]\n", - "di[:y] = [0.7126733533052545,0.5823437283100286,0.9437163403731574,0.3326090758142064,0.5216474760106129,0.37035649841939233,0.20993625970773877,0.20706724195660597,0.8536683204777709,0.043795505349153,0.9168687694688167,0.9543809936661143,0.829980526357577,0.8285239843486485,0.09540945662578593,0.5880051039818097,0.46254442837879584,0.8149755099250795,0.1338560682863863,0.06505772874996407,0.43848996826697495,0.7330847489774,0.5973028125679536,0.6912375605642944,0.29499520720680716,0.9647454553144166,0.13382224012789057,0.9002501912361462,0.1186894381646515,0.08735634009540916,0.6740821876154874,0.8003536283056361,0.18104601959383237,0.6624218913236628,0.4686428375508933,0.6692293983077597,0.21480708196590736,0.6135588673858579,0.8628275855865148,0.5303206217623391,0.898797505247654,0.2902269591327131,0.12834927475601865,0.9711632045781204,0.4150552698276182,0.8984306280229242,0.008270967019145647,0.9565602385700045,0.6666708565005557,0.585796220622393,0.26019386192786875,0.7719851579622243,0.06986928853389696,0.02572212532584528,0.14201304374214518,0.34001044011257653,0.5376021572397611,0.2345562963781882,0.5522526297574615,0.8402148464669992,0.7497580323824611,0.5934045164377548,0.5938158245251313,0.7487843197095005,0.6782346753532968,0.9605697302236551,0.8452178146622882,0.6606100288852403,0.29039816431296206,0.5409581141737809,0.3191617039317567,0.91889291997692,0.6489105099914976,0.33283221024800413,0.9347702893455694,0.6299903062339047,0.5857679154572897,0.70568780501469,0.20472075769474762,0.1661834598782097,0.04533176944976236,0.15253728699950497,0.6287931834705385,0.3316722679436541,0.05190934370689937,0.6382823758290574,0.26729667652749156,0.6741923928431794,0.8904621260002576,0.05956798791293383,0.9283828740106526,0.04700204679125686,0.634827851702439,0.6049989347186127,0.010156739388051284,0.7614240555018525,0.6640054369500195,0.9239195451166688,0.9899477826862364,0.3036363538852298]\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "WARNING: Base.FloatingPoint is deprecated, use AbstractFloat instead.\n", - "WARNING: Base.FloatingPoint is deprecated, use AbstractFloat instead.\n", - "WARNING: Base.FloatingPoint is deprecated, use AbstractFloat instead.\n", - "WARNING: Base.FloatingPoint is deprecated, use AbstractFloat instead.\n", - "WARNING: Base.FloatingPoint is deprecated, use AbstractFloat instead.\n", - "WARNING: Base.FloatingPoint is deprecated, use AbstractFloat instead.\n", - "WARNING: Base.FloatingPoint is deprecated, use AbstractFloat instead.\n", - "WARNING: Base.FloatingPoint is deprecated, use AbstractFloat instead.\n", - "WARNING: Base.FloatingPoint is deprecated, use AbstractFloat instead.\n", - "WARNING: Base.FloatingPoint is deprecated, use AbstractFloat instead.\n", - "WARNING: Base.FloatingPoint is deprecated, use AbstractFloat instead.\n", - "WARNING: Base.FloatingPoint is deprecated, use AbstractFloat 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", - "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.FloatingPoint is deprecated, use AbstractFloat instead.\n", - "in concrete_minimum at /Users/tom/.julia/v0.4/Showoff/src/Showoff.jl:50\n", - "WARNING: Base.FloatingPoint is deprecated, use AbstractFloat instead.\n", - "in concrete_minimum at /Users/tom/.julia/v0.4/Showoff/src/Showoff.jl:50\n", - "WARNING: Base.FloatingPoint is deprecated, use AbstractFloat instead.\n", - "in concrete_maximum at /Users/tom/.julia/v0.4/Showoff/src/Showoff.jl:72\n", - "WARNING: Base.FloatingPoint is deprecated, use AbstractFloat instead.\n", - "in concrete_maximum at /Users/tom/.julia/v0.4/Showoff/src/Showoff.jl:72\n" + "\n" ] } ], @@ -228,7 +68,7 @@ ], "metadata": { "kernelspec": { - "display_name": "Julia 0.4.0-rc2", + "display_name": "Julia 0.4.0-rc1", "language": "julia", "name": "julia-0.4" }, diff --git a/src/backends/gadfly.jl b/src/backends/gadfly.jl index 6ab34bc2..2a5a960d 100644 --- a/src/backends/gadfly.jl +++ b/src/backends/gadfly.jl @@ -273,7 +273,7 @@ function replaceType(vec, val) push!(vec, val) end -function addTicksGuide(gplt, ticks, isx::Bool) +function addGadflyTicksGuide(gplt, ticks, isx::Bool) ticks == :auto && return ttype = ticksType(ticks) if ttype == :ticks @@ -283,22 +283,29 @@ function addTicksGuide(gplt, ticks, isx::Bool) gtype = isx ? Gadfly.Guide.xticks : Gadfly.Guide.yticks replaceType(gplt.guides, gtype(ticks = collect(ticks[1]))) - # TODO add xtick_label function (given tick, return label??) to gplt.ascetics - # probably want to add to gplt.mapping! + # TODO add xtick_label function (given tick, return label??) + # Scale.x_discrete(; labels=nothing, levels=nothing, order=nothing) + filterGadflyScale(gplt, isx) + gfunc = isx ? Gadfly.Scale.x_discrete : Gadfly.Scale.y_discrete + labelmap = Dict(zip(ticks...)) + labelfunc = val -> labelmap[val] + push!(gplt.scales, gfunc(levels = tickvals, labels = labelfunc)) else error("Invalid input for $(isx ? "xticks" : "yticks"): ", ticks) end end -isContinuousScale(scale, isx::Bool) = isa(scale, Gadfly.Scale.ContinuousScale) && scale.vars[1] == (isx ? :x : :y) +# isContinuousScale(scale, isx::Bool) = isa(scale, Gadfly.Scale.ContinuousScale) && scale.vars[1] == (isx ? :x : :y) +filterGadflyScale(gplt, isx::Bool) = filter!(scale -> scale.vars[1] == (isx ? :x : :y), gplt.scales) -function addLimitsScale(gplt, lims, isx::Bool) +function addGadflyLimitsScale(gplt, lims, isx::Bool) lims == :auto && return ltype = limsType(lims) if ltype == :limits # remove any existing scales, then add a new one + filterGadflyScale(gplt, isx) gfunc = isx ? Gadfly.Scale.x_continuous : Gadfly.Scale.y_continuous - filter!(scale -> !isContinuousScale(scale,isx), gplt.scales) + # filter!(scale -> !isContinuousScale(scale,isx), gplt.scales) push!(gplt.scales, gfunc(minvalue = min(lims...), maxvalue = max(lims...))) else error("Invalid input for $(isx ? "xlims" : "ylims"): ", lims) @@ -338,10 +345,10 @@ function updateGadflyGuides(gplt, d::Dict) haskey(d, :title) && findGuideAndSet(gplt, Gadfly.Guide.title, d[:title]) haskey(d, :xlabel) && findGuideAndSet(gplt, Gadfly.Guide.xlabel, d[:xlabel]) haskey(d, :ylabel) && findGuideAndSet(gplt, Gadfly.Guide.ylabel, d[:ylabel]) - haskey(d, :xlims) && addLimitsScale(gplt, d[:xlims], true) - haskey(d, :ylims) && addLimitsScale(gplt, d[:ylims], false) - haskey(d, :xticks) && addTicksGuide(gplt, d[:xticks], true) - haskey(d, :yticks) && addTicksGuide(gplt, d[:yticks], false) + haskey(d, :xlims) && addGadflyLimitsScale(gplt, d[:xlims], true) + haskey(d, :ylims) && addGadflyLimitsScale(gplt, d[:ylims], false) + haskey(d, :xticks) && addGadflyTicksGuide(gplt, d[:xticks], true) + haskey(d, :yticks) && addGadflyTicksGuide(gplt, d[:yticks], false) end function updatePlotItems(plt::Plot{GadflyPackage}, d::Dict) diff --git a/src/backends/pyplot.jl b/src/backends/pyplot.jl index fea8e4ec..1fbb2406 100644 --- a/src/backends/pyplot.jl +++ b/src/backends/pyplot.jl @@ -266,8 +266,9 @@ function plot!(pkg::PyPlotPackage, plt::Plot; kw...) end +# ----------------------------------------------------------------- -function addLimitsScale(gplt, lims, isx::Bool) +function addPyPlotLims(lims, isx::Bool) lims == :auto && return ltype = limsType(lims) if ltype == :limits @@ -277,7 +278,7 @@ function addLimitsScale(gplt, lims, isx::Bool) end end -function addTicksGuide(gplt, ticks, isx::Bool) +function addPyPlotTicks(ticks, isx::Bool) ticks == :auto && return ttype = ticksType(ticks) if ttype == :ticks @@ -305,16 +306,16 @@ function updatePlotItems(plt::Plot{PyPlotPackage}, d::Dict) end # limits and ticks - haskey(d, :xlims) && addLimitsScale(fig, d[:xlims], true) - haskey(d, :ylims) && addLimitsScale(fig, d[:ylims], false) - haskey(d, :xticks) && addTicksGuide(fig, d[:xticks], true) - haskey(d, :yticks) && addTicksGuide(fig, d[:yticks], false) + haskey(d, :xlims) && addPyPlotLims(d[:xlims], true) + haskey(d, :ylims) && addPyPlotLims(d[:ylims], false) + haskey(d, :xticks) && addPyPlotTicks(d[:xticks], true) + haskey(d, :yticks) && addPyPlotTicks(d[:yticks], false) end -# ------------------------------- +# ----------------------------------------------------------------- function createPyPlotAnnotationObject(plt::Plot{PyPlotPackage}, x, y, val::AbstractString) ax = getLeftAxis(plt.o[1]) diff --git a/src/plot.jl b/src/plot.jl index 92aebd42..a4c3c063 100644 --- a/src/plot.jl +++ b/src/plot.jl @@ -104,7 +104,7 @@ function plot!(plt::Plot, args...; kw...) setTicksFromStringVector(d, di, :x, :xticks) setTicksFromStringVector(d, di, :y, :yticks) - @show di[:x] di[:y] + # @show di[:x] di[:y] # println("Plotting: ", di) plot!(plt.backend, plt; di...) @@ -130,21 +130,23 @@ end # -------------------------------------------------------------------- +# if x or y are a vector of strings, we should create a list of unique strings, +# and map x/y to be the index of the string... then set the x/y tick labels function setTicksFromStringVector(d::Dict, di::Dict, sym::Symbol, ticksym::Symbol) # if the x or y values are strings, set ticks to the unique values, and x/y to the indices of the ticks - @show sym di + # @show sym di v = di[sym] - @show v + # @show v isa(v, AbstractArray) || return T = eltype(v) - @show T + # @show T if T <: AbstractString || (!isempty(T.types) && all(x -> x <: AbstractString, T.types)) - @show sym ticksym di[sym] + # @show sym ticksym di[sym] ticks = unique(di[sym]) - @show ticks + # @show ticks di[sym] = Int[findnext(ticks, v, 1) for v in di[sym]] if !haskey(d, ticksym) || d[ticksym] == :auto