2013-10-07 5 views
1

png/jpeg 형식의 'n'이미지와 2 차원 (x, y)의 해당 좌표 'n'을 제공합니다.이 그림을 단일 좌표의 주어진 좌표에 표시하고 싶습니다. 이미지가 너무 크다면 주어진 좌표에서 더 작은 크기의 버전으로 그려 보는 것이 이상적입니다. R에서 어떻게 그런 음모를 얻을 수 있습니까?R의 주어진 좌표에서 어떻게 이미지를 그릴 수 있습니까?

enter image description here

+1

페이지를 '원리 증명 예제를 제공 – baptiste

+0

@baptiste을 rasterImage' 나는 2d에서 음모를 그릴 필요가있다. 좌표. rasterImage위한 인자가 4 : (좌측 X 위치의 \t 벡터 (또는 스칼라) xleft 하단 Y 위치 ybottom \t 벡터 (또는 스칼라) xright \t 벡터 (또는 스칼라)의.. 오른쪽 x 위치 ytop \t 맨 위 y 위치의 벡터 (또는 스칼라). 어떻게 이해해야하고 내 질문에 대한 해결책으로 적합합니까? – PraneethVepakomma

답변

5
xy <- data.frame(x=runif(10, 0, 100), y=runif(10, 0, 100)) 

require(png) 
img <- readPNG(system.file("img", "Rlogo.png", package="png")) 

thumbnails <- function(x, y, images, width = 0.1*diff(range(x)), 
         height = 0.1*diff(range(y))){ 

    images <- replicate(length(x), images, simplify=FALSE) 
    stopifnot(length(x) == length(y)) 

    for (ii in seq_along(x)){ 
    rasterImage(images[[ii]], xleft=x[ii] - 0.5*width, 
       ybottom= y[ii] - 0.5*height, 
       xright=x[ii] + 0.5*width, 
       ytop= y[ii] + 0.5*height, interpolate=FALSE) 
    } 
} 

plot(xy, t="n") 
thumbnails(xy[,1], xy[,2], img) 

enter image description here

+0

img가 다른 이미지의 목록 인 경우 다음 행을 주석 처리해야합니다. images <- replicate (length (x), images, simplify = FALSE) – val

+0

어떻게 10 개의 다른 목록을 지정하겠습니까? 10 개 좌표와 일치하는 특정 위치의 이미지? – user2964644

4

ms.image 기능과 함께 my.symbols 기능 (모두 TeachingDemos 패키지부터) 될 수

이러한 플롯이 어떻게 보일지의 예

는 아래 주어진 이미지로 플롯하는 데 사용됩니다. 여기에

은 예입니다

library(png) 

flag.list <- lapply(list.files('flags/',pattern='png$', full=TRUE), 
    function(x) readPNG(x)) 

library(TeachingDemos) 

ms.flags <- function(ind,...) { 

    tmp <- array(0, dim=c(150,150,4)) 
    tmp[ 26:125, , 1:3] <- flag.list[[ind]] 
    tmp[ 26:125, , 4 ] <- 1 

    ms.image(tmp,...) 
} 

x <- rnorm(50) 
y <- rnorm(50) 

my.symbols(x,y, symb = ms.flags, ind=1:50, symb.plots=TRUE, 
    add=FALSE, xlim=c(-3,3), ylim=c(-3,3), inches=0.75) 

enter image description here

+0

나는 이것을 시도하고있다. 그러나 나는 flag.list [[ind]]에 오류가있다 : 범위 밖의 첨자 "와 나는 그 flag.list가"List of 0 "임을 안다. 나는 그것을 얻지 못하고있는 것 같다. 이미지들? – val

+0

@val, 이미지를 읽으려면 어떻게하셨습니까? 이미지를 다운로드 했습니까? 어떤 폴더가 작업 디렉토리와 관련되어 있습니까? –

+0

나는이 이미지를 얻기 위해 imgfiles <- list.files (getwd(), pattern = "* - scaled.png")를 사용했다. 위의 허용 된 답변의 코드를 사용하여 여기에 내 대답을 게시하는 것을 끝냈습니다 -이 http://stackoverflow.com/questions/37150889/r-plotting-thumbnails-that-are-in-a-list-on-a-을 참조하십시오. 산포도 – val

2

ggflags package

library(ggflags) 
set.seed(1234) 
d <- data.frame(x=rnorm(50), y=rnorm(50), 
       country=sample(c("ar","fr", "nz", "gb", "es", "ca"), 50, TRUE), 
       stringsAsFactors = FALSE) 
ggplot(d, aes(x=x, y=y, country=country, size=x)) + 
    geom_flag() + 
    scale_country() 

관련 문제