2015-12-14 7 views
10

ggplot2 में तत्वों का आकार अलग से निर्दिष्ट किया गया है। जब आकृति का आकार बदल जाता है, तो तत्व, उदाहरण के लिए किंवदंती नहीं बदलती है। चमकदार में यह समस्या हो सकती है जब आउटपुट ggplot2 के आकार ब्राउज़र विंडो के साथ बदलते हैं। नीचे एक डमी चमकदार ऐप और विभिन्न ब्राउज़र विंडो आकार पर दो आउटपुट आंकड़े का कोड है। छोटी सी आकृति बदसूरत है क्योंकि इसकी किंवदंती का हिस्सा बंद कर दिया गया है।ggplot2 और चमकदार: आकृति आकार के साथ किंवदंती के आकार को कैसे स्केल करें?

क्या चमकदार आकार को चित्र आकार के साथ सीधे ggplot2 में स्केल करने के लिए कोई तरीका है बिना आंकड़े को चमकदार ऐप्स के लिए छवि फ़ाइल के रूप में सहेजने के बिना?

library(shiny) 
library(ggplot2) 

ui <- fluidPage(
    br(), br(), br(), 
    plotOutput("test", height = "auto") 
) 

server <- function(input, output, session) { 
    output$test <- renderPlot(
     height = function() { 
      0.8 * session$clientData$output_test_width 
     }, 
     expr = { 
      aaa <- ggplot(mtcars, aes(wt, mpg, color = cyl)) + 
       geom_point() + 
       theme(legend.position = c(0.9, 0.9)) 
      print(aaa) 
     } 
    ) 
} 

shinyApp(ui, server) 

एक बड़ा ब्राउज़र विंडो में आंकड़ा अच्छा लग रहा है: enter image description here

लेकिन छोटे ब्राउज़र विंडो में, कथा के शीर्ष दिखाई नहीं देता:

enter image description here

उत्तर

8

यहाँ एक है पौराणिक कथाओं के शीर्ष पर लंगरने का तरीका ताकि वह साजिश क्षेत्र के शीर्ष से भाग न सके। आप ggplot theme पर legend.justification(0.5, 1) जोड़ें। पहला मूल्य पौराणिक कथाओं की एक्स स्थिति को केंद्रित करता है। दूसरा मूल्य पौराणिक कथाओं की वाई स्थिति "शीर्ष औचित्य" देता है। (आप पहले मूल्य के लिए 0.5 से 1 को बदलकर किंवदंती को सही-सही ठहरा सकते हैं, जो कि एक समस्या है, तो ग्राफ के दाहिने किनारे से चलने से पौराणिक कथा को बनाए रखेगा।) यह सापेक्ष आकार के मुद्दे को हल नहीं करता है, लेकिन पूर्ण किंवदंती हमेशा दिखाई देगी और उसी स्थान पर होगी।

server <- function(input, output, session) { 
    output$test <- renderPlot(
    height = function() { 
     0.8 * session$clientData$output_test_width 
    }, 
    expr = { 
     aaa <- ggplot(mtcars, aes(wt, mpg, color = cyl)) + 
     geom_point() + 
     theme(legend.position = c(0.9, 0.98), 
       legend.justification=c(0.5, 1)) 
     print(aaa) 
    } 
) 
} 

नीचे मैंने "छोटी" और "बड़ी" ब्राउज़र विंडो में जो दिखता है उसकी छवियां डाली हैं।

enter image description here

enter image description here

+0

धन्यवाद। यह आंकड़ा बहुत बेहतर बनाता है। –

संबंधित मुद्दे