2017-03-21 8 views
1

최종 사용자가 shiny로 빌드하고 배포 한 visNetwork 그래픽의 .png을 내보낼 수 있기를 바랍니다. 나는 renderVisNetwork 코드 끝에 visExport 줄을 사용하여이 작업을 수행 할 수 있지만 출력에 생성 된 단추 모양이 마음에 들지 않으며 단추 자체가 내 보낸 .png에 포함됩니다. .png 자체의 품질은 그다지 뛰어나지 않습니다. UI에서 downloadButton에 의해 생성 된 버튼 모양이 마음에 들지만 서버 쪽에서 downloadHandler과 관련된 문제가 발생합니다. 브라우저에서 실행되는 동안 다운로드 버튼을 클릭하고 다운로드 대화 상자를 표시하며 파일을 저장할 수 있지만 파일은 비어 있습니다 (파일 크기는 318 바이트). .pdf로 시도해도 작동하지 않습니다. 여기에 내 코드입니다 :shiny (R)에서 downloadHandler를 사용하여 visNetwork를 png로 내보내기하면 빈 파일이 생성됩니다.

ui.R :

downloadButton('ConDL', label='Download png') 

server.R : 내가 대신 반응성의 기능을 가진 객체를 생성 여기에 대해 주어진 조언을 따랐습니다

# Create network 
ConNet <- function(){ 
    visNetwork(Nodes(), Edges()) %>% 
    #all the other stuff to create the network which works fine 
} 

# Draw visualization - works fine 
output$ConNet <- renderVisNetwork({ 
    ConNet() 
})  

# Download png of visualization - no errors displayed in browser or 
# console when testing, but exports blank png 
output$ConDL <- downloadHandler(
    filename="Con.png", 
    content= function(file) { 
     png(file) 
     ConNet() 
     dev.off() 
    } 
) 

: Downloading png from Shiny (R). 이전 Conactive를 Connet으로 전환시키는 것은 효과가 없었습니다. 미리보기 창을 통해 실행하는 대신 브라우저 (Firefox)에서 앱을 열어두고 있습니다. 콘텐츠 섹션에서 print(ConNet())을 시도해도 도움이되지 않습니다. 그래서 나는 무엇이 실종되었는지 확신하지 못합니다.

보너스 네트워크 생성시 visInteraction으로 생성 된 탐색 버튼을 제외하도록 .png를 얻을 수 있다면 - 대화 형 부분에 유용하지만 정적 그래픽을 혼란스럽게합니다.

답변

1

문제를 이해하지 못합니다. 이것은 당신을 도울 수 download network from shiny API

+0

그래, 나는 그 링크를 얼마 전에 발견하고 궁극적으로 그 해결책에 정착했다. 내 보낸 그래픽은 실제로 훨씬 높은 품질이며 대화 형 버전에서는 필요하지 않지만 다운로드에 유용하거나 다운로드 버전에서 필요하지 않은 탐색 아이콘을 빼는 등의 제목을 추가하도록 코드를 수정할 수 있습니다. 유일한 단점은 .png 자체에서 여전히 작은 "Export as png"버튼을 얻지 만 다른 소프트웨어와 마찬가지로 충분히 쉽게자를 수 있다는 것입니다. – bcarothers

+0

나는 고품질의 네트워크를 내보내는 아주 간단한 해결책을 발견했다. 네트워크를 html 페이지에 저장하면이 파일을 열 수 있습니다. 그 후 "오른쪽 클릭"과 "이미지 저장 ...". 놀라 울 정도로 해상도가 좋을 수도 있습니다. visExport O_O. –

+0

하! 이 ^^^^ 진짜 대답입니다. 지옥, 나는 html로 먼저 저장할 필요조차 없다 - 앱 자체가 실행 중일 때 바로 마우스 오른쪽 버튼을 클릭하면 모든 불필요한 것들이 한 번에 제거된다. 최종 사용자가 이미지를 다운로드하기 위해 마우스 오른쪽 버튼을 클릭하도록 지시하는 UI의 코드 한 줄은 모든 것을 설정하기 위해 서버 쪽에서 60 줄 정도를 능가합니다. 감사! – bcarothers