2017-01-10 5 views
0

私は次のようなデータがあります。これは、100sの遺伝子座を持つデータセットの例です。パンダに3値プロットを作成する

loci  head(%)  tail(%)  wing(%) 
1   20   40   40 
2   10   50   40 
3   12   48   40 
4   22   38   40 

三角形の3つの点を作る頭部、尾部、および羽根で、これらの三元プロットを作成したいと考えています。三角形の辺はパーセンテージを表します。私はパンダを使ってこれをやり始めますか?あらゆる指針が有用であろう。

答えて

1

radar_chart exampleのmatplotlibと2つの関数を使用して、データフレームから直接レーダーチャートを作成できます。

データフレームを読み込む前に、matplotlibが提供する例のインポート、radar_factoryunit_poly_verts関数をコピーすることをお勧めします。明らかにpandasも必要です。

あなたの輸入は次のようになります。あなたが唯一のheadtailwingをしたいので

import matplotlib.pyplot as plt 
from matplotlib.path import Path 
from matplotlib.spines import Spine 
from matplotlib.projections.polar import PolarAxes 
from matplotlib.projections import register_projection 
import pandas as pd 
import numpy as np 

、およびlociがインデックスであるように見え、私はuser_col="loci"で設定したデータをインポートしました。これは、データフレームは、インポート時に次のようになります意味:

 head(%) tail(%) wing(%) 
loci 
1   20  40  40 
2   10  50  40 
3   12  48  40 
4   22  38  40 

最後に、あなたは例のコードと同様に動作する関数を作成したいのですが、代わりにデータフレームを読み込みます。以下のコードはそれを行うべきであり、'__main__'ブロックのコードに基づいています。私は、この例のために必要とされていないコードの一部を剥がし、色unhardcoded:

def nColors(k=2, cmap='spectral'): 
    if type(cmap) == str: 
     cm = plt.get_cmap(cmap) 
     colors = [cm(1.*i/(k-1)) for i in range(k)] 
    elif cmap==None: 
     colors = ['k'] 
    else: 
     colors = cmap 
    return colors 

def plot_radar(data): 
    N = data.shape[1] 
    theta = radar_factory(N, frame='circle') 

    spoke_labels = data.columns.tolist() 
    fig = plt.figure(figsize=(9, 9)) 
    fig.subplots_adjust(wspace=0.25, hspace=0.20, top=0.85, bottom=0.05) 

    ax = fig.add_subplot(111, projection='radar') 

    colors = nColors(len(data), cmap='spectral') 

    for i, (index, d) in enumerate(data.iterrows()): 
     ax.plot(theta, d.tolist(), color=colors[i]) 
     ax.fill(theta, d.tolist(), facecolor=colors[i], alpha=0.25) 

    ax.set_varlabels(spoke_labels) 
    plt.show() 

この関数を呼び出しをし、あなたのデータフレームを渡す:

plot_radar(df) 

は、このコードはspectralを使用しています2番目のパラメータとしてcolors = nColors(len(data))行に有効なカラーマップを渡すことで変更できます。

円または多角形(この場合は3つの寸法があるため三角形)を使用できます。

このようなチャートでは上記のコードの結果:

Circle Plot

あなたがpolygonするラインtheta = radar_factory(N, frame='circle')frameパラメータを変更した場合、あなたはこのようなグラフを得る:

Polygon Chart

+0

このアンディのおかげで! matplotlibを使って散布三角形プロットを作成できますか? – Altheman

+1

@Altheman [はい](http://matplotlib.org/examples/pie_and_polar_charts/polar_scatter_demo.html)。この例はかなり基本的ですが、それは実行できることを示しています。 – Andy

関連する問題