radar_chart exampleのmatplotlibと2つの関数を使用して、データフレームから直接レーダーチャートを作成できます。
データフレームを読み込む前に、matplotlibが提供する例のインポート、radar_factory
、unit_poly_verts
関数をコピーすることをお勧めします。明らかにpandas
も必要です。
あなたの輸入は次のようになります。あなたが唯一のhead
、tail
とwing
をしたいので
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つの寸法があるため三角形)を使用できます。
このようなチャートでは上記のコードの結果:
あなたがpolygon
するラインtheta = radar_factory(N, frame='circle')
でframe
パラメータを変更した場合、あなたはこのようなグラフを得る:
このアンディのおかげで! matplotlibを使って散布三角形プロットを作成できますか? – Altheman
@Altheman [はい](http://matplotlib.org/examples/pie_and_polar_charts/polar_scatter_demo.html)。この例はかなり基本的ですが、それは実行できることを示しています。 – Andy