使用Bokeh输出Pandas DataFrame的Seaborn热图图表

时间:2016-11-13 13:38:25

标签: python heatmap seaborn bokeh

我试图绘制Seaborn热图图表并使用Bokeh输出。

以下是我绘制图表的方式:

In [1]: import pandas as pd
   ...: import seaborn as sns
   ...: 
   ...: df = pd.DataFrame([['item1',1,2,3,4,'SEPT'],
   ...:                    ['item2',5,6,7,8,'OCT'],
   ...:                    ['item3',9,10,11,12,'SEPT'],
   ...:                    ['item1',13,14,15,16,'OCT'],
   ...:                    ['item2',17,18,19,20,'SEPT'],
   ...:                    ['item3',21,22,23,24,'OCT']],
   ...:                    columns = ['itemName','metric1',
   ...:                    'metric2','metric3','metric4','Month'])
   ...: df
Out[1]: 
  itemName  metric1  metric2  metric3  metric4 Month
0    item1        1        2        3        4  SEPT
1    item2        5        6        7        8   OCT
2    item3        9       10       11       12  SEPT
3    item1       13       14       15       16   OCT
4    item2       17       18       19       20  SEPT
5    item3       21       22       23       24   OCT

In [2]: df1 = df.pivot(index='itemName',columns='Month',values='metric1')
   ...: 
   ...: df1
Out[2]: 
Month     OCT  SEPT
itemName           
item1      13     1
item2       5    17
item3      21     9

In [3]: sns.heatmap(df1, annot=True)
Out[3]: <matplotlib.axes._subplots.AxesSubplot at 0x2a3836cc2b0>

Resulting image

到目前为止,这么好。然后我尝试使用Bokeh输出图表,使用example作为基础:

In [4]: from bokeh import mpl
   ...: from bokeh.plotting import output_file, show

In [5]: output_file("seaborn_heatmap.html", title="seaborn heatmap example")

In [6]: show(mpl.to_bokeh())
WARNING:C:\Users\<Username>\Anaconda3\lib\site-packages\bokeh\core\validation\check.py:W-1001 (NO_DATA_RENDERERS): Plot has no data renderers: Plot, ViewModel:Plot, ref _id: b78fd176-bffd-4fd0-9b7c-a169d299f541

这会产生一个空图表。我做错了什么?

P.S。使用Bokeh的原因是我想使用下拉列表或类似的东西在动态热映射的不同值源之间切换。但是,我对所使用的任何库都没有太深入的投入,所以如果你能建议一个可以更轻松地进行交互式热图的免费替代方案,我很乐意调查它。

1 个答案:

答案 0 :(得分:0)

您所要求的内容不受支持,并且不存在。 Bokeh或Matplotlib中没有将Matplotlib输出转换为Bokeh输出的功能部件。因此,此问题的答案是:

  

您要的是不可能的。

(作为Bokeh的共同创建者和首席维护者长达5年以上),对于用户来说,清楚明确地知道没有将MPL转换为Bokeh的“魔术子弹”非常重要。 错误信息

生成散景输出的唯一选择是直接使用本机散景API,例如bokeh.plotting API。