2017-12-18 6 views
0

Wie ändert man Breite und Höhe in ggplotly?Wie ändert man Breite und Höhe in gplotly? Gibt es einfache Methoden, um die Breite und Höhe zu ändern?

wenn wir ggplot verwenden, kann es ggsave

ggsave(filename = "foo300.png", ggplot(mtcars, aes(x=wt, y=mpg)) + 
      geom_point(size=2, shape=23) + theme_bw(base_size = 10), 
     width = 5, height = 4, dpi = 300, units = "in", device='png') 

verwenden Ich verwende

htmltools::browsable(gg[[i]]) 

htmltools::save_html(gg[[i]],path) 

ODER

htmlwidgets::saveWidget(print(gg[[i]]), path) 

Diagramm zu drucken und HTML-Format speichern, aber die Grafik ist zu klein und einige Wörter überlappen sich, aber ich möchte eine große Schrift, also hoffe ich, die Größe des Graphen zu ändern.

Ich weiß plolty, die diese verwenden können, um die Breite und Höhe zu ändern.

library(plotly) 
m <- list(
    l = 50, 
    r = 50, 
    b = 100, 
    t = 100, 
    pad = 4 
) 
p <- plot_ly(x = seq(0, 8), y = seq(0, 8)) %>% 
    layout(autosize = F, width = 500, height = 500, margin = m) 

Dies ist mein Beispieldatensatz.

d1 <- 
    data.frame(col_one = c(1, 2, 3, 3), 
      col_two = c("aa", "bb", "aa", "bb")) 
d2 <- 
    data.frame(col_one = c(1, 1, 1, 6), 
      col_two = c("bb", "aa", "aa", "bb")) 
d3 <- 
    data.frame(col_one = c(7, 1, 1, 4), 
      col_two = c("cc", "aa", "bb", "bb")) 
my.list <- list(d1, d2, d3) 

f <- function(table) { 
    table <- mapply(function(data, count) { 
    sql <- 
     sqldf(
     paste0(
      "select *,count(col_one) as count from data where col_one = ", 
      count, 
      " group by col_one,col_two" 
     ) 
    ) 
    }, my.list, 1, 
    SIMPLIFY = FALSE) 
    print(table) 

    return (table) 
} 


f(table = my.list) 

f2 <- function(table) { 
    num <- length(table) 
    chart <- vector(num, mode = "list") 
    plotly <- vector(num, mode = "list") 

    for (i in 1:length(table)) { 
    chart[[i]] <- ggplot(data = table[[i]], 
         aes(x = col_two, 
          y = count, 
          fill = col_two)) + 
     geom_bar(stat = "identity", width = 0.3) 

    #print(chart[[2]]) 

    plotly[[i]] <- ggplotly(chart[[i]]) 

    } 
    return(plotly) 
} 
f2(f(table = my.list)) 

save <- function (gg) { 
    num <- length(gg) 
    print_gg <- vector(num, mode = "list") 
    dir <- "~/test/aa" 

    for (i in 1:length(gg)) { 
    path <- paste0(dir, i) 

    htmltools::browsable(gg[[i]]) 
    htmltools::save_html(gg[[i]],path) 

    #htmlwidgets::saveWidget(print(gg[[i]]), path) 
    } 
} 

save(f2(f(table = my.list))) 

Ich habe gesucht auch diesen Code aber ich wollte nur die Breite und Höhe ändern. Muss ich das Widget zuerst kisten? Gibt es einfache Methoden, um die Breite und Höhe zu ändern?

htmlwidgets::createWidget(
    "sigma", 
    x, 
    width = width, 
    height = height, 
    sizingPolicy = htmlwidgets::sizingPolicy(
    viewer.padding = 0, 
    viewer.paneHeight = 500, 
    browser.fill = TRUE 
) 
) 

Wenn ich ggplot zu ggplotly in der Grafik ändern, wo ich die Breite oder Höhe hinzufügen sollte? Gibt es einfache Methoden, um die Breite und Höhe zu ändern?

Antwort

0

Ich bin nicht ganz sicher, das ist, was Sie wollen, aber hier ist mein nehmen:

mit Ihrem Beispiel erstellen Sie eine ggplot2 Grafik und schalten Sie ihn dann in ein plotly Objekt.

gg <- ggplot(mtcars, aes(x=wt, y=mpg)) + 
      geom_point(size=2, shape=23) + theme_bw(base_size = 10) 

g <- ggplotly(gg) 

Um die Größe Ihrer Grafik zu ändern, gehen Sie wie Sie in der Regel mit plotly tun würde.

m <- list(
    l = 50, 
    r = 50, 
    b = 100, 
    t = 100, 
    pad = 4 
) 

h <- g %>% 
layout(autosize = F, width = 500, height = 500, margin = m) 

und dann können Sie als HTML-Dokument speichern:

htmltools::save_html(h,"index.html")