2016-10-14 4 views
1

Pythonで大きな(パンダ)データフレームをヒートマップとして視覚化しようとしています。このデータフレームには、文字列( "Absent"または "Unknown")と浮動小数点の2種類の変数があります。Pythonプロット:文字列の場合固定色のデータフレームからのヒートマップ

ヒートマップに黒で「不在」、赤で「不明」のセルが表示され、残りのデータフレームがグリーンマップのフロートで通常のヒートマップとして表示されるようにします。

私はこれをExcelの条件付き書式設定で簡単に行うことができますが、matplotlib、seaborn、ggplotのいずれかでPythonでこれを行うためのオンラインヘルプはありません。私は何が欠けていますか?

ありがとうございます。

答えて

1

あなたは(12を参照してください)vminvmax以下と以上の値にカスタムカラーを適用するcmap_custom.set_under('red')cmap_custom.set_over('black')を使用することができます。

import numpy as np 
import matplotlib.pyplot as plt 
import mpl_toolkits.axes_grid1 as axes_grid1 
import pandas as pd 

# make a random DataFrame 
np.random.seed(1) 
arr = np.random.choice(['Absent', 'Unknown']+list(range(10)), size=(5,7)) 
df = pd.DataFrame(arr) 

# find the largest and smallest finite values 
finite_values = pd.to_numeric(list(set(np.unique(df.values)) 
            .difference(['Absent', 'Unknown']))) 
vmin, vmax = finite_values.min(), finite_values.max() 

# change Absent and Unknown to numeric values 
df2 = df.replace({'Absent': vmax+1, 'Unknown': vmin-1}) 
# make sure the values are numeric 
for col in df2: 
    df2[col] = pd.to_numeric(df2[col]) 

fig, ax = plt.subplots() 
cmap_custom = plt.get_cmap('Greens') 
cmap_custom.set_under('red') 
cmap_custom.set_over('black') 
im = plt.imshow(df2, interpolation='nearest', cmap = cmap_custom, 
      vmin=vmin, vmax=vmax) 
# add a colorbar (https://stackoverflow.com/a/18195921/190597) 
divider = axes_grid1.make_axes_locatable(ax) 
cax = divider.append_axes("right", size="5%", pad=0.05) 
plt.colorbar(im, cax=cax, extend='both') 
plt.show() 

DATAFRAME

In [117]: df 
Out[117]: 
     0  1 2  3 4  5  6 
0  3  9 6  7 9  3 Absent 
1 Absent Unknown 5  4 7  0  2 
2  3  0 2  9 8  0  2 
3  5  5 7 Unknown 5 Absent  4 
4  7  7 5  4 7 Unknown Absent 

なり

enter image description here

+0

ありがとうございました。私が必要としていたことを正確に行い、完璧に働いた。 – JRCX

関連する問題