2017-03-20 13 views
1

내 팬더 ​​DataFrame results_print에는 이미지 인 2 차원 배열이 있습니다. 그래서처럼 인쇄 :어떻게 파이썬의 ggplot 객체를 matplot 그리드에 추가 할 수 있습니까?

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을 추가 할 수 있습니다

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 이미지 객체를 생성?

답변

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