2016-02-01 2 views

Répondre

3

La méthode suivante sera beaucoup mieux que celle des jverzani (vous ne voulez pas créer une nouvelle série pour chaque point de données). Les graphiques pourraient utiliser un peu plus d'amour pour définir manuellement les vecteurs de couleur, mais pour l'instant les dégradés sont assez bien supportés, donc vous pouvez en profiter.

using Plots 
pyplot(size=(400,200), legend=false) # set backend and set some session defaults 

scatter(rand(30), 
     m = ColorGradient([:red,:green,:blue]), # colors are defined by a gradient 
     zcolor = repmat([0,0.5,1],10) # sample from the gradient, cycling through: 0, 0.5, 1 
     ) 

enter image description here

+0

je reçois une erreur lorsque je tente ceci: ChargeErreur: PyError (: PyObject_Call) TypeError ('dispersion() prend au moins 2 arguments (1 donnée) ») pendant le chargement dans [86], dans l'expression à partir de la ligne 4 [code inline] de /home/lara/.julia/v0.4/PyCall/src/exception.jl:81 en pycall à /home/lara/.julia/v0.4/PyCall/src/PyCall.jl:360 dans scatter à /home/lara/.julia/v0.4/PyPlot/src/PyPlot.jl:46 0 – lara

2

Je l'aurais pensé si vous avez défini k comme un vecteur de symboles de couleur cela fonctionnerait: scatter(x, y, markercolors=k), mais il ne semble pas. Cependant, les ajouter un à la fois sera, comme le montre cet exemple:

using Plots 

xs = rand(10) 
ys = rand(10) 
ks = randbool(10) + 1 # 1 or 2 
mcols = [:red, :blue] # together, mcols[ks] is the `k` in the question 

p = scatter(xs[ks .== 1], ys[ks .== 1], markercolor=mcols[1]) 
for k = 2:length(mcols) 
    scatter!(xs[ks .== k], ys[ks .== k], markercolor=mcols[k]) 
end 
p