personalizar - Escala y tamaño de la trama en RStudio brillante
personalizar ejes en r (2)
La respuesta de @Ram funciona muy bien para la utilidad de trazado base
.
Solo para expandir para otros transeúntes, para hacer esto con ggplot:
p <- ggplot(data, aes(x = x, y = y)) + geom_point()
p <- p + theme(axis.text = element_text(size = 20)) # tweak size = n until content
print(p)
Al menos algo para ese efecto, dependiendo de lo que quieras. Consulte esta pregunta para obtener la idea básica, aunque consulte la documentación actual de ggplot2 0.9.3 acerca de la configuración de las opciones de texto: puede especificar el texto del eje, el texto de la leyenda, el texto de la tira facet_grid, etc.
Desde la pregunta SO anterior, la especificación ha cambiado de opts([option] = theme_text(size = n))
a theme([option] = element_text(size = n))
. Probablemente cambie nuevamente ... así que solo encuentra la página actual de prueba / tema / opciones para ggplot2
.
ui.R
un poco más sobre la base del seguimiento de @ Ram y creo que entiendo cómo ui.R
y server.R
interactúo configurando diferentes opciones y mirando el Inspect element
en Chromium.
ui.R establece el área de trazado disponible que uno puede rellenar y server.R define el tamaño de trazado.
-
ui.R:
ancho = 100%,server.R
: sin opciones establecidas
-
ui.R:
ancho = 100%,server.R
: ancho = 800, alto = 600
-
ui.R:
ancho = 50%,server.R
: ancho = 800, alto = 600
-
ui.R:
ancho = 200%,server.R
: ancho = 800, alto = 600
El último era todo lo que necesitaba ver para responder la pregunta definitivamente. Si replicas la configuración, verás que el área de trazado <div>
es de hecho el 200% del ancho de la pantalla y crea una barra de desplazamiento horizontal en el navegador ... sin embargo, la imagen sigue en su tamaño fijo.
Sin embargo, puede generar una imagen más grande que el área de trazado (en píxeles) y luego ui.R
mediante ui.R
y especificar una opción de width = n %
.
Entonces ... No puedo crear una imagen más pequeña en píxeles (lo que crea un tamaño de texto más grande en relación con la gráfica general) y luego agrandarla para que tenga un texto más grande. De hecho, uno necesita crear un gráfico del tamaño del área de la trama (o más grande) y escalar el texto a la satisfacción a través del comando plot (o ggplot).
Tampoco se puede especificar, al menos en este momento, un% para el ancho en server.R
, presumiblemente porque pasa las opciones de altura / ancho al comando png()
para generar la imagen. Obtendrá un error al intentar hacer eso (pero valió la pena intentarlo).
No estoy de acuerdo con que especificar las opciones de tamaño de texto sea una ruta más fácil que la que estaba buscando, pero al menos tengo algo que funciona. Hago todo el tiempo "trampas" para documentos LaTeX con pdf("file.pdf", width = 8, height = 6)
, creo mi diagrama y luego lo pdf("file.pdf", width = 8, height = 6)
quiera cuando lo incluyo en el archivo .tex . Mucho más simple, en mi opinión, que futzing con el theme(axis.text = element_text(size = x))
para cada parcela.
Relacionado, pero solo habla sobre el espacio de trazado asignado en general, no cómo establecer directamente el tamaño de la imagen de trazado y luego escalarlo para llenar el espacio deseado
Estoy creando una aplicación web brillante y me gustaría establecer el tamaño de la trama y la escala. Lo que quiero decir con eso es que estoy buscando una forma de establecer un alto / ancho finito para mi trazado, y luego escalar esa imagen de tamaño de conjunto al área mainPanel( plotOutput ())
.
Toma esto como un ejemplo / situación análoga fuera de shiny
.
x <- 1:10
y <- x^2
png("~/Desktop/small.png", width = 600, height = 400)
plot(x, y)
dev.off()
png("~/Desktop/big.png", width = 1200, height = 800)
plot(x, y)
dev.off()
No puedo subir imágenes a SO y establecer un tamaño, por lo que incluiré una captura de pantalla del navegador de cada una utilizando el siguiente html:
<img src="file:///home/jwhendy/Desktop/file.png" width = "800px" />
Esta es una captura de pantalla de ancho completo en mi laptop de 1600 x 900 px.
Pequeña
Grande
Me gustaría controlar el tamaño de la imagen en sí, ya que las leyendas de ggplot2
cuando uso opciones como colour = var
y size = var
son bastante pequeñas. Tenga en cuenta la dificultad de leer etiquetas de ejes para una imagen más grande también. Me doy cuenta de que puedo entrar en una situación en la que el tamaño de la imagen no se escale bien debido a píxeles limitados, pero creo que al menos tengo espacio para viajar antes de encontrarme con eso.
¿Alguna sugerencia? Hasta ahora he intentado jugar con lo siguiente, pero sin suerte:
ui.R
shinyUI(pageWithSidebar(
headerPanel("Title"),
sidebarPanel(),
mainPanel(
plotOutput(outputId = "main_plot", width = "100%"))
))
servidor.R
shinyServer(function(input, output) {
x <- 1:10
y <- x^2
output$main_plot <- renderPlot({
plot(x, y) }, height = 400, width = 600 )
} )
Parece que las opciones de alto / ancho especificadas en server.R
anulan lo que he establecido en la sección ui.R
de ui.R
¿Hay alguna manera de mantener el tamaño de la imagen de trazado más pequeño para mantener la legibilidad mientras se llena el área de mainPanel
deseada?
No estoy seguro de si esto le da completamente lo que desea, pero esto es lo que funcionó para mí.
Las opciones especificadas en Server.R
tuvieron efecto. (Solo dibujé dos gráficos de diferentes tamaños cada uno.) También tomé la sugerencia de @Manetheran e hice cex y cex.axis en parámetros. Parecen estar trabajando.
A continuación se muestra el código de la aplicación completa, más una captura de pantalla.
###UI.R
shinyUI(pageWithSidebar(
headerPanel("Title"),
sidebarPanel(
sliderInput(inputId = "opt.cex",
label = "Point Size (cex)",
min = 0, max = 2, step = 0.25, value = 1),
sliderInput(inputId = "opt.cexaxis",
label = "Axis Text Size (cex.axis)",
min = 0, max = 2, step = 0.25, value = 1)
),
mainPanel(
plotOutput(outputId = "main_plot", width = "100%"),
plotOutput(outputId = "main_plot2", width = "100%")
)
))
###Server.R
shinyServer(function(input, output) {
x <- 1:10
y <- x^2
output$main_plot <- renderPlot({
plot(x, y)}, height = 200, width = 300)
output$main_plot2 <- renderPlot({
plot(x, y, cex=input$opt.cex, cex.lab=input$opt.cexaxis) }, height = 400, width = 600 )
} )
Actualizar re. la opción Ancho = 100% en UI.R
Sí, en mi caso definitivamente hace la diferencia. En las dos líneas a continuación, new_main_plot y new_main_plot2 son idénticos, pero se representaron con diferentes tamaños. Entonces, la opción de width
tiene efecto.
mainPanel(
plotOutput(outputId = "new_main_plot", width = "100%"),
plotOutput(outputId = "new_main_plot2", width = "25%")
)
Espero que ayude.