2017-11-24 3 views
1

this answer을 조사 할 때 ggimage 패키지에서 geom_image()을 통해 이미지 스트립을 그렸지만 작동하지 못했습니다. geom_image()은 이미지 종횡비를 수정하며이를 수행하는 것을 방지하는 방법 (또는 가능한지 여부)을 모르겠습니다. size 단위를 측정하는 것이 나에게 명확하지 않습니다. 코드가 어떻게 작동하는지에 관계없이 ggplot2 좌표계와 관계없이 npc 좌표가 0에서 1로 실행 중입니까? 여기 이미지 가로 세로 비율을 유지하기 위해 ggimage 패키지의 geom_image()를 사용할 수 있습니까?

내가 사용하는 코드입니다 :

require(ggimage) 
df_img <- data.frame(phase = c("Interphase", "Prophase", "Metaphase", "Anaphase", "Telophase"), 
        image = c("http://www.microbehunter.com/wp/wp-content/uploads/2009/lily_interphase.jpg", 
           "http://www.microbehunter.com/wp/wp-content/uploads/2009/lily_prophase.jpg", 
           "http://www.microbehunter.com/wp/wp-content/uploads/2009/lily_metaphase2.jpg", 
           "http://www.microbehunter.com/wp/wp-content/uploads/2009/lily_anaphase2.jpg", 
           "http://www.microbehunter.com/wp/wp-content/uploads/2009/lily_telophase.jpg")) 
df_img$phase <- factor(df_img$phase, levels=df_img$phase) 

ggplot(df_img, aes(x = phase, y = 0, image = image)) + geom_image(size = 0.18) 

그리고이 결과 이미지입니다 :

enter image description here

:

enter image description here

이 이미지가 어떻게 보일지입니다

참고 : 이것은 대기열입니다. 특히 ggimage의 동작에 관한 다른 방법을 사용하여 올바른 이미지를 생성하는 방법을 알고 있습니다. cowplot의 draw_image()을 사용합니다.

답변

2
ggplot(df_img, aes(x = phase, y = 0.25, image = image)) + 
    geom_image(size = 0.5, by="height")+ 
    scale_size_identity() 

하나의 폭 또는 높이와 현재 소자 유지 종횡비로서 by가 지정된 크기가 매핑 된 데이터 공간에 NPC로 해석하면

enter image description here

을 생산할 예정 (크기 변경 후). 크기가 Inf 인 경우 그림이 전체 패널을 채우기 위해 늘어납니다.

+0

재 : URL에서 읽기 이미지 : 나는 두 가지 접근 방식은 장점을 가지고 생각합니다. 동일한 이미지를 여러 번 그려야하는 점 대신에 이미지를 사용하려면 매번 나쁜 이미지를 다시 읽어야합니다. 그러나 플롯에 몇 개의 이미지 만 추가하는 경우에는 값을 이미지 파일에 매핑하는 별도의 눈금을 설정하도록 사용자에게 요청하는 것은 지나치게 복잡해 보입니다. –

+0

"크기 변경 후"에 대한 귀하의 진술서는 제 질문에 대한 대답이 "아니오"라는 것을 의미합니다. 따라서 저는 앞으로 나아가서 대답을 받아 들일 것입니다. –

0

오히려 "원시"솔루션 :

p <- ggplot(df_img, aes(x = phase, y = 0, image = image)) + 
    geom_image(size = 0.18) + coord_fixed() 

g <- ggplotGrob(p) 
for (k in 1:length(g$grobs[[6]]$children[[3]]$children)) { 
    g$grobs[[6]]$children[[3]]$children[[k]]$height <- unit(0.8,"native") 
} 
library(grid) 
grid.draw(g) 

enter image description here