2016-10-02 1 views
4

를 추가하고 나를 위해 미해결 남아있는 두 개의 질문이 동적으로 그래프의. 나는 (https://stackoverflow.com/questions/33522860/svgplot-error-in-shiny에서와 같이) 코드를 수행하면 그렇게하려고?R svgPanZoom 크기를 사용자 정의하고 로케이터에게 나는 현재 놀라운 패키지 svgPanZoom와 함께 반짝 응용 프로그램 일하고

library(shiny) 
library(svglite) 
library(svgPanZoom) 
library(ggplot2) 
library(plyr) 

data.df <- data.frame(Plant = c("Plant1", "Plant1", "Plant1", "Plant2", "Plant2", 
           "Plant2"), Type = c(1, 2, 3, 1, 2, 3), Axis1 = c(0.2, -0.4, 0.8, -0.2, -0.7, 
                       0.1), Axis2 = c(0.5, 0.3, -0.1, -0.3, -0.1, -0.8)) 

ui <- shinyUI(bootstrapPage(

    svgPanZoomOutput(outputId = "main_plot") 

)) 

server = shinyServer(function(input, output) { 
    output$main_plot <- renderSvgPanZoom({ 
    p <- ggplot(data.df, aes(x = Axis1, y = Axis2, shape = Plant, color = Type)) + geom_point(size = 5) 
    svgPanZoom(p, controlIconsEnabled = T, width = 10, height = 16) 
    }) 
}) 

runApp(list(ui=ui,server=server)) 

하지만 아무것도 :(당신이 아이디어를 가지고 있습니까 일어나지

가 할 수있을 수 있다면 (2) 당신은 알고 계십니까 (PlotOutput에서와 같이)이 코드에 로케이터를 넣으십시오.

주요 아이디어는 정사각형 시스템의 그림 (셀)을 그려보고 그 그림을 클릭하여 셀의 핵을 찾습니다. 때로는 셀이 아주 작은 사진이므로 사용자가 줌을해야 할 수도 있습니다 (svgPanZoom을 사용하는 이유입니다). 따라서 X는 내가 좀하고 싶습니다 D Y

을 주셔서 대단히 감사합니다 사용자가 내가 Cursor location after zoom using svg-pan-zoom에보고했다

줌을 사용하는 경우에도 전체 orthonormed 시스템의 사람들은 그러나 R

에서 일하지 않는 것 같다 당신의 아이디어!

좋은 일요일 저녁 되세요! 더 이상 귀하의 링크 나던 작업 :

+0

흥미로운 질문입니다. 나는 미해결 문제의 코드를 기초로 코드가 작동하지 않을 것이라는 관찰을해야합니다. 두 번째 질문에 관해서는 내가 무슨 뜻인지 알 겠지만 "locator"라는 단어의 정확한 정의를 명확히 할 수 있습니까? 마우스 포인터의 X, Y 좌표를 의미합니까? 따라서 누군가가 줌 버튼을 클릭하면 줌 버튼의 위치가됩니다 (보이는 이미지의 중심이 아닐 것입니다). –

+0

안녕하세요. 답변 주셔서 감사합니다. 첫 번째 질문의 경우 올바르게 실행되는 스크립트를 선택합니다. 문제는 너비와 높이 매개 변수를 변경해도 그래프의 치수가 동일하다는 것입니다. S 그러나 문서를 보면 함수가 제대로 작성된 것 같습니다. (패키지 도움말에서) svgPanZoom (svglite ::: inlineSVG (show (m) #은 svg 장치의 높이를 높이 = 10, 너비 = 16) 수동으로 조정해야 함) –

+0

두 번째 사항은 내 문제에 대한 설명에 더 명확하게 게시하려면, 지금 정말 더 이해할 수 있기를 바랍니다. :) –

답변

2

1)에 관하여. 하지만 놀라운 shinyjqui 패키지가 관심의 대상 일 수 있습니다. 함수를 ui에 추가 할 수 있습니다. 예를 들면 다음과 같습니다. jqui_resizabled(svgPanZoomOutput(outputId = "main_plot")). 출력의 왼쪽 하단에 작은 회색 기호가 있습니다.

작은 gif 예 (섹션 : 크기 조정 가능) 및 기타 흥미로운 기능은 여기 https://github.com/Yang-Tang/shinyjqui을 참조하십시오.

전체 코드는 읽을 것입니다 :

2의
library(shiny) 
library(svglite) 
library(svgPanZoom) 
library(ggplot2) 
library(plyr) 
library(shinyjqui) 

data.df <- data.frame(Plant = c("Plant1", "Plant1", "Plant1", "Plant2", "Plant2", 
           "Plant2"), Type = c(1, 2, 3, 1, 2, 3), Axis1 = c(0.2, -0.4, 0.8, -0.2, -0.7, 
                       0.1), Axis2 = c(0.5, 0.3, -0.1, -0.3, -0.1, -0.8)) 

ui <- shinyUI(bootstrapPage(

    jqui_resizabled(svgPanZoomOutput(outputId = "main_plot")) 

)) 

server = shinyServer(function(input, output) { 
    output$main_plot <- renderSvgPanZoom({ 
    p <- ggplot(data.df, aes(x = Axis1, y = Axis2, shape = Plant, color = Type)) + geom_point(size = 5) 
    svgPanZoom(p, controlIconsEnabled = T, width = 10, height = 16) 
    }) 
}) 

runApp(list(ui=ui,server=server)) 

) 내가 확신입니다. 하나는 클릭 리스너를 추가 할 수 있지만 오히려 못 생기는 일입니다. 어쩌면 smd는 더 좋은 방법을 안다.

+0

패키지는 다소 재미 있지만, ggplot의 문제는 동일하게 남아 있습니다.나는 폭을 변경하면서 svgPanZoomOutput으로 전체 너비를 채우는 방법을 얻기 위해 현상금을 시작했는데, 높이는 플롯에 전혀 영향을 미치지 않습니다. –

관련 문제