2017-03-20 42 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()