せっかくだから Makie.jl で Flowcytometry の疑似データを3次元プロットしてみよう。
Makie.jl が、なかなか楽しいのです。「julia で、flowcytometry のデータを plot する」のデータを3次元に拡張して plot してみましょう。
インストールについては、@cometscome_phys さんの Juliaで綺麗なプロットを作る:Makie.jlのインストールと使い方 を見て下さい。
ぐりぐり回して、観察できるので楽しいです。
scatter(data, color=A_col) のところは、初めは自分の環境では、30秒以上かかります。2回目以降は、1秒かからず描画します。10^5 個のデータがありますが、かなり軽快に動きます。
using Makie, StatsBase, Distributions, ColorTypes selection = rand(1:31000,100000); data = vcat( rand(Normal(),10000,2), rand(Normal(3,0.8),10000,2), rand(Normal(-2,2),10000,2).+[0 2], rand(TDist(10),1000,2) )[selection,:]; z_data = vcat( rand(Normal(),10000), rand(Normal(1,1),10000), rand(Normal(1,1),3000).+4, rand(Normal(1,1),7000), rand(TDist(10),1000) )[selection]; data=hcat(data, z_data); # 色の指定をする関数です。 function Array_col(data::Array, col_map_name=:viridis::Symbol) col_map = to_colormap(:viridis, 64); A_col = [col_map[64] for i in 1:size(data,1)] z = round.(data[:,3].*10) .- minimum(round.(data[:,3].*10)) step = quantile(z, 0.95)/64 # 条件に合う色を col_map[i] に書き変えていきます。 for i in 1:64 A_col[step.*(i-1).<=z.< step*i] .= col_map[i] end return A_col end A_col = Array_col(data); scatter(data, color=A_col)
viridis の配色で、z軸の値で色を付けています。
おしまい。