में एक्स और वाई स्केल समान (इसलिए स्क्वायर प्लॉट) रखें, मैंने एक प्लॉट बनाया है जिसमें एक्स और वाई सीमाएं हैं, एक्स और वाई टिक्स के लिए समान पैमाने है, इसलिए वास्तविक साजिश की गारंटी पूरी तरह से वर्ग है। , अब मैं इस हस्तांतरण करने के लिए प्रयास कर रहा हूँggplotly
library(ggplot2)
library(RColorBrewer)
set.seed(1)
x = abs(rnorm(30))
y = abs(rnorm(30))
value = runif(30, 1, 30)
myData <- data.frame(x=x, y=y, value=value)
cutList = c(5, 10, 15, 20, 25)
purples <- brewer.pal(length(cutList)+1, "Purples")
myData$valueColor <- cut(myData$value, breaks=c(0, cutList, 30), labels=rev(purples))
sp <- ggplot(myData, aes(x=x, y=y, fill=valueColor)) + geom_polygon(stat="identity") + scale_fill_manual(labels = as.character(c(0, cutList)), values = levels(myData$valueColor), name = "Value") + coord_fixed(xlim = c(0, 2.5), ylim = c(0, 2.5))
हालांकि: एक पौराणिक कथा भी साथ शामिल, कोड के नीचे स्थिर साजिश (एसपी वस्तु) ही पूरी तरह से वर्ग रखने के लिए भी जब खिड़की जिसमें यह स्थिति में है पुनः पैमाना है लगता है स्थिर साजिश (एसपी) ggplotly() के माध्यम से एक इंटरैक्टिव प्लॉट (आईपी) में एक चमकदार ऐप में इस्तेमाल किया जा सकता है। अब मुझे पता है कि इंटरैक्टिव प्लॉट (आईपी) अब वर्ग के आकार का नहीं है। मेगावाट इस दिखाने के लिए नीचे है:
ui.R
library(shinydashboard)
library(shiny)
library(plotly)
library(ggplot2)
library(RColorBrewer)
sidebar <- dashboardSidebar(
width = 180,
hr(),
sidebarMenu(id="tabs",
menuItem("Example plot", tabName="exPlot", selected=TRUE)
)
)
body <- dashboardBody(
tabItems(
tabItem(tabName = "exPlot",
fluidRow(
column(width = 8,
box(width = NULL, plotlyOutput("exPlot"), collapsible = FALSE, background = "black", title = "Example plot", status = "primary", solidHeader = TRUE))))))
dashboardPage(
dashboardHeader(title = "Title", titleWidth = 180),
sidebar,
body
)
server.R
library(shinydashboard)
library(shiny)
library(plotly)
library(ggplot2)
library(RColorBrewer)
set.seed(1)
x = abs(rnorm(30))
y = abs(rnorm(30))
value = runif(30, 1, 30)
myData <- data.frame(x=x, y=y, value=value)
cutList = c(5, 10, 15, 20, 25)
purples <- brewer.pal(length(cutList)+1, "Purples")
myData$valueColor <- cut(myData$value, breaks=c(0, cutList, 30), labels=rev(purples))
# Static plot
sp <- ggplot(myData, aes(x=x, y=y, fill=valueColor)) + geom_polygon(stat="identity") + scale_fill_manual(labels = as.character(c(0, cutList)), values = levels(myData$valueColor), name = "Value") + coord_fixed(xlim = c(0, 2.5), ylim = c(0, 2.5))
# Interactive plot
ip <- ggplotly(sp, height = 400)
shinyServer(function(input, output, session){
output$exPlot <- renderPlotly({
ip
})
})
ऐसा लगता है वहाँ पर एक अंतर्निहित/स्पष्ट समाधान नहीं हो सकता है इस बार (Keep aspect ratio when using ggplotly)। मैंने HTMLwidget.resize ऑब्जेक्ट के बारे में भी पढ़ा है जो इस तरह की समस्या को हल करने में मदद कर सकता है (https://github.com/ropensci/plotly/pull/223/files#r47425101), लेकिन मैं वर्तमान समस्या के लिए इस तरह के वाक्यविन्यास को लागू करने में असफल रहा।
किसी भी सलाह की सराहना की जाएगी!
यह मैं मदद की चमकदार में एक स्थिर साजिश के लिए पहलू अनुपात ठीक करने के लिए: http://spartanideas.msu.edu/2016/09/09/formatting-in-a-shiny-app/ मुझे शक कि इंटरैक्टिव प्लॉट के लिए एक समान समाधान है, क्योंकि साजिश चौड़ाई की जानकारी सत्र $ क्लाइंटडेटा ऑब्जेक्ट में अनुपलब्ध है। – Robert
क्या आपके एक्स और वाई-अक्ष में हमेशा समान श्रेणियां होती हैं? –
@MaximilianPeters मुझे खेद है कि मैंने इसे निर्दिष्ट नहीं किया था। नहीं, उनके पास हमेशा समान श्रेणियां नहीं होती हैं। – LanneR