Julia 我可以将颜色渐变中的特定值指定给标记吗?

Julia 我可以将颜色渐变中的特定值指定给标记吗?,julia,plots.jl,Julia,Plots.jl,对于这个超级基本的问题,我深表歉意,但我在绘图方面并没有经验,而且很多关于Julia绘图的文档假定我拥有比我更多的知识 我正在创建一个散点图,使用Plots,其中每个标记都是基于空间位置绘制的,我希望通过每个标记持有的值的大小来缩放颜色。我创建了如下颜色渐变: C(g::ColorGradient) = RGB[g[z] for z = LinRange(0,1,M)] g = :inferno cgrad(g,[0.01,0.99]) |> C M与标记的数量有关,这样我就可以根据标记

对于这个超级基本的问题,我深表歉意,但我在绘图方面并没有经验,而且很多关于Julia绘图的文档假定我拥有比我更多的知识

我正在创建一个散点图,使用Plots,其中每个标记都是基于空间位置绘制的,我希望通过每个标记持有的值的大小来缩放颜色。我创建了如下颜色渐变:

C(g::ColorGradient) = RGB[g[z] for z = LinRange(0,1,M)]
g = :inferno
cgrad(g,[0.01,0.99]) |> C
M与标记的数量有关,这样我就可以根据标记的数量创建一个合适的颜色比例

我假设我正在创建某种结构,根据0.01到0.99的值,从这个渐变中指定一种颜色。然而,我想我不明白结构C是什么。当我指定color=C(v),其中v介于0和1.00之间时,我得到一个错误,表示C不接受Float64类型

有没有一种方法可以根据渐变值为标记指定某种颜色?我将每个位置的所有值存储在另一个数组中

更新:我还尝试将索引转换为C。我将值转换为范围为1-99的Int64,并尝试设置color=C[v],但C也不采用Int64类型

更新2:好的,所以我意识到我的问题是我不理解|>功能,所以我重写了代码,使其看起来像:

C(g::ColorGradient) = RGB[g[z] for z = LinRange(0,1,M)]
g = :inferno
myGrad = (cgrad(g,[0.00,1.00]) |> C)
现在我可以索引到我的颜色渐变!但是,我仍然有一个问题,设置颜色等于myGradient数组中存储的值

for i = 1:M
    X,Y = find_coords(i,pd)
    colors = myGrad[c_index[i]]
    outline = rand(Float64,3)
    plt = plot!(X,Y,colors, markerstrokecolor = outline)
end
当我在REPL中输入myGrad[c_index[I]]时,它会打印一种颜色。然而,我从上面的代码中得到一个错误

“无法将RGB{Float64}转换为用于打印的系列数据”

如果按以下方式更改绘图线,则会得到一个稍有不同的错误:

plt = plot!(X,Y,markercolor = colors, markerstrokecolor = outline)
错误:LoadError:MethodError:没有与绘图颜色匹配的方法(::Float64)


因此,出于某种原因,我无法将此颜色存储为绘图的颜色变量。

这里有一些不同的问题。首先,如果要创建散点图,可能应该使用
散点
。这里似乎也没有必要在循环中绘制东西,尽管很难说清楚,因为您的代码不是最小工作示例(MWE),因为它依赖于代码中其他地方定义的东西

下面是一个如何工作的示例:

using Plots

# Create a discrete color gradient with 20 points
my_colors = [cgrad(:inferno, [0.01, 0.99])[z] for z ∈ range(0.0, 1.0, length = 20)]

# Draw some random data points
x, y = sort(rand(100)), rand(100)
# Assign a color between 1 and 20 on the color grid to each point
z = sort(rand(1:20, 100))

# Plot
scatter(x, y, color = my_colors[z], markerstrokecolor = "white", label = "", 
            markersize = [10 for _ ∈ 1:100])
给出:


啊,是的,对不起!我应该把它关上,因为我让它工作了。这是一个循环,因为它绘制了不同的标记社区。每个标记社区都应该有相同的关联颜色,但我想在不同社区之间热映射颜色。循环的每次迭代都会从大小为N的总数据集中绘制一个大小为M的社区。感谢您花时间回复,我非常感谢:)!