Как открыть график ggplot/plotly в браузере из сценария оболочки

Я хотел бы сделать сценарий R bash, который создает график ggplot/plotly при его запуске

У меня есть следующий сценарий, который работает в интерактивном режиме с использованием littler.

#!/usr/bin/env r

library(plotly)
set.seed(955)
# Make some noisily increasing data
dat <- data.frame(cond = rep(c("A", "B"), each=10),
                  xvar = 1:20 + rnorm(20,sd=3),
                  yvar = 1:20 + rnorm(20,sd=3))

p <- ggplot(dat, aes(x=xvar, y=yvar)) +
    geom_point(shape=1)      # Use hollow circles

p <- ggplotly(p)

message("before plot")
p
message("after plot")

После того, как я сделаю файл исполняемым (chmod +x) и беги, я вижу сообщения before plot а также after plot, но ни один браузер не открывает сюжет.

Как я могу открыть сюжет из моего сценария?

Контекст

Может показаться странным, что я делаю сценарий для построения графика в bash. Причина, по которой я хотел бы это сделать, заключается в том, что в конечном итоге я хотел бы передать аргументы командной строки этому сценарию и получить всплывающий сюжет.

1 ответ

Решение

Это не стопроцентное желание, к которому я стремился, но, похоже, все работает нормально. Я использую минимальное приложение cli sxiv ( подойдет любое средство просмотра изображений), чтобы открыть изображение после сохранения. Ниже представлен полный сценарий.

#!/usr/bin/env r

library(ggplot2)

base_dir <- getwd()
full_dif <- paste0(base_dir,"/p.jpg")

set.seed(955)
# Make some noisily increasing data
dat <- data.frame(cond = rep(c("A", "B"), each=10),
                  xvar = 1:20 + rnorm(20,sd=3),
                  yvar = 1:20 + rnorm(20,sd=3))

p <- ggplot(dat, aes(x=xvar, y=yvar)) +
    geom_point(shape=1)      # Use hollow circles

ggsave(plot = p, filename = "p.jpg")

system_string <- paste0("/usr/bin/sxiv", " ", full_dif)

message("before plot")

system(system_string)

message("after plot")
Другие вопросы по тегам