2017-05-03 60 views
3

是否可以添加一個datashader圖像到一組matplotlib子圖?添加datashader圖像到matplotlib子圖

作爲具體的例子,

import numpy as np 
import pandas as pd 
import matplotlib.pylab as plt 

import datashader as ds 
import datashader.transfer_functions as tf 
from datashader.utils import export_image 

from functools import partial 

background = "white" 
export = partial(export_image, background = background, export_path="export") 

N = 10000 
df = pd.DataFrame(np.random.random((N, 3)), columns = ['x','y', 'z']) 

f, ax = plt.subplots(2, 2) 
ax_r = ax.ravel() 

ax_r[0].scatter(df['x'], df['y'], df['z'].mean()) 
ax_r[1].hist(df['x']) 
ax_r[2].hist(df['y']) 
ax_r[3].plot(df['z']) 

cvs = ds.Canvas(plot_width=100, plot_height=100) 
agg = cvs.points(df, 'x', 'y', ds.mean('z')) 
a = export(tf.shade(agg, cmap=['lightblue', 'darkblue'], how='eq_hist'), 'test') 

我在哪裏有兩個兩個陣列matplotlib副區的並想更換[0,0]情節ax_r[0]與datashader圖像a上述示例。這是可能的,如果是的話,如何?

謝謝!

+1

看一看在這個公關線程:https://github.com/bokeh/datashader/pull/200(如果我有更多的時間我會寫一個答案。) –

+1

@ StevenC.Howell謝謝!我試着在Github的回購庫裏尋找類似的東西,但空白。我很欣賞這個鏈接。 –

+2

我自己並不是一個matplotlib用戶(除[[]](https://anaconda.org/jbednar/census-hv-mpl/notebook)[HoloViews](https://anaconda.org/jbednar/holoviews_datashader/notebook )),但如果任何人有時間完成[PR 200](https://github.com/bokeh/datashader/pull/200)中所述的DSArtist類,我很樂意接受它作爲已發佈的東西用數據採集器... –

回答

4

截至目前[2017年5月]完成向Matplotlib子圖中添加數據查看器圖像的最佳方法是使用鏈接到上面的pull request。它定義了一個DSArtist類。假設DSArtist類存在,代碼如下:

N = 10000 
df = pd.DataFrame(np.random.random((N, 3)), columns = ['x','y', 'z']) 

f, ax = plt.subplots(2, 2) 
ax_r = ax.ravel() 

da = DSArtist(ax_r[0], df, 'x', 'y', ds.mean('z'), norm = mcolors.LogNorm()) 
ax_r[0].add_artist(da) 

ax_r[1].hist(df['x']) 
ax_r[2].hist(df['y']) 
ax_r[3].plot(df['z']) 

plt.tight_layout() 
plt.show() 
+0

@ StevenC.Howell我認爲這是一個最小的工作示例。再次感謝您指引我朝着正確的方向發展。 –