2017-03-20 9 views
1

私のパンダDataFrame results_printには画像である2次元配列があります。私はそうのようにそれらを印刷:Pythonのggplotオブジェクトをmatplotグリッドに追加するにはどうすればよいですか?

n_rows = results_print.shape[0] 
n_cols = results_print.shape[1] 
f, a = plt.subplots(n_cols, n_rows, figsize=(n_rows, n_cols)) 
methods = ['img', 'sm', 'rbd', 'ft', 'mbd', 'binary_sal', 'sal'] 
for r in range(n_rows): 
    for c, cn in zip(range(len(methods)), methods): 
     a[c][r].imshow(results_print.at[r,cn], cmap='gray') 

は、今私はPythonのggplotイメージオブジェクトを作成:

gg = ggplot(aes(x='pixels'), data=DataFrame({'pixels': results_print.at[6,'mbd'].flatten()})) + \ 
    geom_density(position='identity', stat='density') + \ 
    xlab('pixels') + \ 
    ylab('') + \ 
    ggtitle('Density of pixels') + \ 
    scale_y_log() 

私はmatplotlibのグリッドに要素としてggを追加することができますどのように?

答えて

1

解決策はまずggplotの部分を描画することだと思います。その後、plt.gcf()plt.gca()を介して軸を介してmatplotlibの図形オブジェクトを取得します。グリッドに収まるようにggplot軸のサイズを変更し、最後に残りのmatplotlibプロットをそのFigureに描画します。

enter image description here

import ggplot as gp 
import matplotlib.pyplot as plt 
import numpy as np 
# make ggplot 
g = gp.ggplot(gp.aes(x='carat', y='price'), data=gp.diamonds) 
g = g + gp.geom_point() 
g = g + gp.ylab(' ')+ gp.xlab(' ') 
g.make() 
# obtain figure from ggplot 
fig = plt.gcf() 
ax = plt.gca() 
# adjust some of the ggplot axes' parameters 
ax.set_title("ggplot plot") 
ax.set_xlabel("Some x label") 
ax.set_position([0.1, 0.55, 0.4, 0.4]) 

#plot the rest of the maplotlib plots 
for i in [2,3,4]: 
    ax2 = fig.add_subplot(2,2,i) 
    ax2.imshow(np.random.rand(23,23)) 
    ax2.set_title("matplotlib plot") 
plt.show() 
関連する問題