せっかくだから 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軸の値で色を付けています。

おしまい。

B! LINE