Возможно ли использование HighcharteR в пакете OfficeR / RVG? - PullRequest
0 голосов
/ 03 сентября 2018

Я должен реализовать функцию загрузки в блестящем приложении. Это пример кода:

library(rvg)
library(ggplot2)
library(officer)
library(highcharts)
library(jpeg)
library(ggplot2)

font.add.google("Open Sans", "myfont")
showtext.auto()

data(diamonds)

data <- subset(diamonds, color %in% c("E", "F", "G") & cut %in% c("Ideal", "Premium", "Good"))

data$indicator <- ifelse(data$color %in% c("G" ), 1, 0)

colors_hc <- c("#7CB5EC", "#313131", "#F7A35C",
               "#90EE7E", "#7798BF", "#AAEEEE",
               "#FF0066", "#EEAAEE", "#55BF3B",
               "#DF5353", "#7798BF", "#AAEEEE")


theme_hc <- function(){
    theme(
        text                = element_text(family = "myfont", size = 12),
        title               = element_text(hjust = 0), 
        axis.title.x        = element_text(hjust = .5),
        axis.title.y        = element_text(hjust = .5),
        panel.grid.major.y  = element_line(color = 'gray', size = .3),
        panel.grid.minor.y  = element_blank(),
        panel.grid.major.x  = element_blank(),
        panel.grid.minor.x  = element_blank(),
        panel.border        = element_blank(),
        panel.background    = element_blank(),
        legend.position     = "bottom",
        legend.title        = element_blank()
    )
}


plot1 <- ggplot(data) +
    geom_bar(aes(color, fill = cut), position = "dodge", width = .4) +
    ggtitle("Another interesting title") +
    xlab("Cut") + ylab("Amount") +
    scale_y_continuous(labels = scales::comma) +
    scale_fill_manual(values = colors_hc) +
    theme_hc()


plot2 <- ggplot(data) +
    geom_bar(aes(color, fill = cut), position = "dodge", width = .4) +
    ggtitle("Another interesting title") +
    xlab("Cut") + ylab("Amount") +
    scale_y_continuous(labels = scales::comma) +
    scale_fill_manual(values = colors_hc) +
    theme_hc()


plot3 <- ggplot(data) +
    geom_bar(aes(color, fill = cut), position = "dodge", width = .4) +
    ggtitle("Another interesting title") +
    xlab("Cut") + ylab("Amount") +
    scale_y_continuous(labels = scales::comma) +
    scale_fill_manual(values = colors_hc) +
    theme_hc()


doc <- read_pptx()
doc <- add_slide(doc, layout = "Title and Content", master = "Office Theme")
doc <- doc %>%
    ph_with_text(type = "title", str = "Marktanteil bei x am Besten in Y") %>%
    ph_with_text(type = "ftr", str = "MP Dashboard Report") %>%
    ph_with_text(type = "dt", str = format(Sys.Date())) %>%
    ph_with_text(type = "sldNum", str = "Folie1")
doc <- ph_with_vg(doc, ggobj = plot1, type = "body")

doc <- add_slide(doc, layout = "Title and Content", master = "Office Theme")
doc <- doc %>%
    ph_with_text(type = "title", str = "Marktanteil bei x am Besten in Y") %>%
    ph_with_text(type = "ftr", str = "MP Dashboard Report") %>%
    ph_with_text(type = "dt", str = format(Sys.Date())) %>%
    ph_with_text(type = "sldNum", str = "Folie2")
    doc <- ph_with_vg(doc, ggobj = plot2, type = "body")

doc <- add_slide(doc, layout = "Title and Content", master = "Office Theme")
doc <- doc %>%
    ph_with_text(type = "title", str = "TV in Deutschland um 10% weniger wichtig als in D") %>%
    ph_with_text(type = "ftr", str = "MP Dashboard Report") %>%
    ph_with_text(type = "dt", str = format(Sys.Date())) %>%
    ph_with_text(type = "sldNum", str = "Folie2")
    doc <- ph_with_vg(doc, ggobj = plot3, type = "body")

print(doc, target = "C:/user/my_plot.pptx")


###

Для старших графиков также не работает использовать что-то вроде этого:

png("sample.png", 490, 350)
plot(x, y, pch=19, col=rgb(0.5, 0.5, 0.5, 0.5), cex=1.5)
abline(lm(y ~ x))
dev.off()

Кажется, что Highcharts использует особый вид объекта, который не конвертируется в R внутри самого R. В противном случае нормально работает загрузка графика через кнопку в R-Studio ...

Мое приложение использует высокие графики, но на самом деле не имеет смысла переписывать каждую диаграмму в код ggplot2. Кто-нибудь имеет опыт работы с этим?

...