投稿

1月, 2019の投稿を表示しています

せっかくだから 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 ...

PyPlot.jl と Plots.jl と Makie.jl の色

イメージ
幸か不幸か julia のグラフ用パッケージは、色々あって、どれも一長一短です。 いくつか組合せなどが必要になる場合に、色を揃えたいことがあります。 カラーパレットやカラーマップなどと呼ばれる勾配を付けた連続色を使っている場合は、ちょっと、苦労します。 できるだけ、統一した方法が良いですから、色の名前よりも RGB の値などで指定できると良いですね。 RGBなどで、指定する場合のお作法などを、少しまとめてみます。 julia で、色を使う場合は、ColorTypes.jl を呼び出すのが良いでしょう。 ここで、N0f8 という形式 "Normalized with 8 fractional bits, with 0 bits left for representing values higher than 1." を使用するために、FixedPointNumbers.jl も加えておく方が良いようです。 julia> using FixedPointNumbers, ColorTypes julia> RGB(1,1,1) RGB{N0f8}(1.0,1.0,1.0) これで、RGB() が動きます。 実際に plot してみましょう。 julia> using Plots julia> plot([1:10;], color=RGB(0.2,0.3,0.4)) julia> plot!([1:10;].+0.1, color=RGB(0.9,0.1,0.1)) julia> plot!([1:10;].+0.2, color=RGB(0.1,0.8,0.1)) こんな感じで、色指定ができます。 RGB() は、赤だけ、青だけなどが数字で取り出せます。 julia> red(RGB(0.1,0.2,0.3)) 0.1 これを利用すれば、PyPlot に色を持って行けます。 julia> using PyPlot julia> rgb_sequence(c::RGB) = (red(c), green(c), blue(c)) julia> PyPlot.plot([1:10;], color=rgb_sequen...