如何使用plots.jl根据z中的值为(x,y)散点图着色?

如何使用plots.jl根据z中的值为(x,y)散点图着色?,plot,visualization,julia,plots.jl,Plot,Visualization,Julia,Plots.jl,使用Julia中的Plots.jl包,我可以使用各种后端根据两个向量x和y k = 100 x = rand(k) y = rand(k) scatter(x, y) 我找不到有关如何根据某个长度kvectorz给它们上色的信息。你是怎么做到的?我想如果你把k定义为颜色符号的向量,这会起作用:散射(x,y,markercolors=k),但它似乎不起作用。但是,一次添加一个将导致以下情况,如本例所示: using Plots xs = rand(10) ys = rand(10) ks =

使用Julia中的Plots.jl包,我可以使用各种后端根据两个向量
x
y

k = 100
x = rand(k)
y = rand(k)
scatter(x, y)

我找不到有关如何根据某个长度
k
vector
z
给它们上色的信息。你是怎么做到的?

我想如果你把
k
定义为颜色符号的向量,这会起作用:
散射(x,y,markercolors=k)
,但它似乎不起作用。但是,一次添加一个将导致以下情况,如本例所示:

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

以下方法将比jverzani的好得多(您不希望为每个数据点创建新的序列)。绘图可以使用一些额外的爱来手动定义颜色向量,但是现在渐变得到了很好的支持,所以你可以利用它

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 = repeat( [0,0.5,1], 10) # sample from the gradient, cycling through: 0, 0.5, 1
       )

< P>如果向量Z中的元素是分类的而不是连续的值,那么您可能需要考虑使用<代码>组< /COD>参数进行绘图调用如下:

using Plots

# visualize x and y colouring points based on category z
scatter(x, y, group=z)

当我在[86]中加载时,在从第4行[内联代码]开始的表达式中尝试以下操作时出现错误:LoadError:PyError(:PyObject_调用)TypeError('scatter()至少接受2个参数(1个给定)')from/home/lara/.julia/v0.4/PyCall/src/exception.jl:81 in PyCall at/home/lara/.julia/v0.4/PyCall/src/PyCall.jl:360 in scatter at/home/lara/.julia/v0.4/PyPlot/src/PyPlot.jl:460