2016-12-22 19 views
2

this questionに示すヒートマップを複製するには、matplotlibの代わりにBokehを使用します。私はかなりそれを得ることはできません。既存の例は私が間違っていることを理解する助けにはなりませんでした。私の謙虚な試みBokehでヒートマップを正しく作成する方法

from bokeh.io import output_notebook; output_notebook() 
from bokeh.charts import HeatMap, show 
from bokeh.palettes import RdYlGn6 
import pandas as pd 
import numpy as np 

nba = pd.read_csv(urlopen("http://datasets.flowingdata.com/ppg2008.csv"), index_col=0) 

# Normalize the data columns and sort. 
nba = (nba - nba.mean())/(nba.max() - nba.min()) 
nba.sort('PTS', inplace=True) 

score = [] 
for x in nba.apply(tuple): 
    score.extend(x) 

data = { 
    'players': list(nba.index) * len(nba.columns), 
    'metric': list(nba.columns) * len(nba.index), 
    'score': score, 
} 

hm = HeatMap(data, x='metric', y='players',values='score', title='Fruits', stat=None) 
show(hm) 

は、同様のタイトルにもかかわらず、thisは私の質問に答えていない、ということ

enter image description here

注意を与えます。これは、同じエラーではないと私はボケ0.12.3データmetricの生成は要素単位繰り返す

+0

データが正しく整列されていません。 「プレイヤー」と「メトリック」の両方をリストに沿って繰り返すと、要素の1つを要素ごとに繰り返す必要があります。 –

答えて

2

変更を使用していますし、それが正しいはずです:

'metric': [item for item in list(nba.columns) for i in range(len(nba.index))], 

だから、私のために動作するコード次のとおりである。

あなたはまだボケを使用してヒートマップを作成したい場合には
from bokeh.charts import HeatMap, show, output_file 
import pandas as pd, numpy as np 
from urllib2 import urlopen 

nba = pd.read_csv(urlopen("http://datasets.flowingdata.com/ppg2008.csv"), index_col=0) 

# Normalize the data columns and sort. 
nba = (nba - nba.mean())/(nba.max() - nba.min()) 
nba.sort_values(by = 'PTS', inplace=True) 

score = [] 
for x in nba.apply(tuple): 
    score.extend(x) 

data = { 
    'players': list(nba.index) * len(nba.columns), 
    'metric': [item for item in list(nba.columns) for i in range(len(nba.index))], 
    'score': score, 
} 

output_file('test.html') 
hm = HeatMap(data, x='metric', y='players',values='score', title='Fruits', stat=None) 
show(hm) 

enter image description here

+1

ああ、もちろん!ありがとう! :-)ちょうど助言として、 'list(nba.index)'は必要ありません。少なくともここでは動作しません。 –

3

:チャートモジュールはMORで削除されました最近のバージョン換言すれば、このコマンドは、ボケの新しいバージョンで動作しません:

from bokeh.charts import HeatMap 

それがエラーを与えるため:

ImportError: cannot import name 'charts' 

チャートを中止したよりbkchartsパッケージに移動した(さらなる基準in this answer)。 HoloviewsはまだBokehをサポートしていますが、いくつかの構文があります。

このような何かになりthis link about unemployment.pyの指示通りp.rectを()、使用しているボケでヒートマップを作成するためのソリューション:

p = figure() 
hm = p.rect(data, x='metric', y='players',values='score', title='Fruits', stat=None) 

はこのように見える結果が得られますenter image description here

関連する問題