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

Я хотел бы создать скрипт 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, но ни один браузер не открывает график.

Как мне открыть график из моего скрипта?

Context

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

1 Ответ

0 голосов
/ 29 октября 2019

Это не 100% желание, которого я добивался, но, похоже, все в порядке. Я использую минимальное приложение 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")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...