2017-03-20 82 views
1

我的熊貓DataFrame results_print具有2-dim陣列,它們是圖像。我打印出來,像這樣:如何將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') 

現在,我創建了一個蟒蛇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() 

我如何可以添加gg爲元素,以我的matplotlib電網?

回答

1

我認爲解決辦法是先畫出ggplot部分。然後通過plt.gcf()和通過plt.gca()獲取matplotlib圖形對象。調整ggplot座標軸以適應網格,最後繪製其餘的matplotlib圖。

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()