Как показать WEB-пользователю сюжет (Графическое фото), который был создан сервером WEB-логики, написанным на R - PullRequest
0 голосов
/ 27 марта 2011

Я создаю веб-сайт, используя apache, PHP и R (язык программирования статистики) для построения Logic Server. Эта программа находится на том же самом сервере, что и Apache. Пользователь клиента использует веб-сайт для того, чтобы использовать приложение, которое мы создаем с помощью R. Это возможно с помощью R_modul, созданного для этой цели (чтобы R мог связываться с apache).

Вот ссылка на R_modul http://rapache.net/

Проблема:

Мы можем использовать PHP для отправки текста в виде кода R и получения взамен ответа R App в текстовой форме. Это то, что делает R_modul.

Но я не знаю, как вернуть графики (фотографии на графиках). Некоторые функции в R обеспечивают вывод в качестве вывода. Это то, что я хочу показать пользователю. Но я не знаю, как это сделать ...

Полагаю, мне нужно найти каталог кеш-памяти, который содержит график и возвращает его в виде картинки. Но я не уверен ... и если так, планы создаются по команде и выглядят бесконечно.

Ответы [ 3 ]

3 голосов
/ 27 марта 2011

@ Йони, пожалуйста, не кросс-пост!Мы уже ответили на аналогичный вопрос в списке рассылки RApache.Вы также должны попытаться дать точное описание вашей проблемы.

Насколько я понял, вам нужно получить изображение, созданное с помощью R на стороне сервера, чтобы отобразить его на стороне клиента (то есть вбраузер).Если это так, то здесь:

  • вам действительно не нужен PHP - вы можете разработать мощное веб-приложение на основе RApache с HTML / CSS / JavaScript и AJAX-вызовами R-скриптов (как это делал Jeroen Ooms)в его ggplot webapp ).
  • вы не возвращаете заговор "per se", но путь к файлу изображения заговора, как @daroczig уже ответил
  • , вы надеваетеВам не нужно сохранять изображения во временном каталоге / файле - вы можете оставить их на сервере для будущего использования (если это соответствует дизайну вашего приложения).Кстати, я не уверен, будет ли стратегия tempfile работать так, как задумано, поскольку RApache запускает новый сеанс при каждом HTTP-запросе.
  • вы можете проверить мой недавний проект на GitHub , поскольку он тесно связанна ваш вопрос.Обратите внимание, что он находится на ранней стадии разработки.
  • изучите AJAX!

PS

Если вы решили использовать brew, не устанавливайте директиву Apache <Directory> на папку, в которой хранятся изображения, поскольку RApache попытается обработать все файлы в каталоге с функцией brew.Используйте <FilesMatch> директиву Apache с регулярными выражениями, поскольку она гибкая.Назовите ваши файлы систематически (поставьте префикс или что-л.) И используйте AJAX.Вам не нужно brew, так как работу можно выполнить с sys.source.Попробуйте воздержаться от кода HTML + R / brew mash-up.Верните JSON и отмените сериализацию с помощью JavaScript.

3 голосов
/ 27 марта 2011

Вы можете сделать это без использования PHP или записи файла на сервер, создав объект R tempfile () для хранения графика, затем используя sendBin () для отображения Сюжет в браузере. Вот пример кода R:

setContentType("image/png")
t <- tempfile()
png(t,type="cairo")
plot(rnorm(100), col = "blue")
dev.off()
sendBin(readBin(t,'raw',n=file.info(t)$size))
unlink(t)
DONE

Вы можете сохранить это как например,"plot.R" в / var / www / R. Ваша конфигурация Apache ( например, /etc/apache2/conf.d/rapache.conf) должна выглядеть примерно так:

LoadModule R_module  /usr/lib/apache2/modules/mod_R.so

<Location "/R">
  ROutputErrors
  SetHandler r-script
  RHandler sys.source
</Location>
1 голос
/ 27 марта 2011

Просто сохраните график в (временном) файле из R на сервере и передайте это изображение клиенту.

Вас могут заинтересовать следующие темы в списке рассылки Rapache:

Базовый пример (с использованием Заварка ):

<html> 
<body> 
<%
filename <- paste(tempfile(tmpdir='/to/some/dir'), '.png', sep='')
png(filename)
plot(runif(10), runif(10)) 
dev.off() 
%> 
<img src="<%=filename%>"/> 
</body> 
</html> 

Изменить '/to/some/dir' В приведенном выше примере в каталог, который может быть прочитан веб-сервером и также доступен для записи R.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...