Hoje vou dar uma dica de como usar a linguagem R para criar uma aplicação web simples, com upload e um plot de um gráfico. Com essa aplicação, o usuário pode enviar um arquivo texto comum, selecionar o separador dos campos do arquivo, digitar os rótulos dos eixos e depois criar o gráfico, que é então mostrado na página.
Primeiramente, você deve instalar e configurar o rApache na sua máquina.
Agora, segue o nosso programa:
# simples_rApache.R # script para criar gráficos simples usando rApache # 19/07/2012 # Leandro Lima - @lelimat setContentType("text/html") cat('<html><head><title>Simple plot</title></head>\n') cat('<body><H1>Simple plot</H1>\n') cat('<form enctype=multipart/form-data method=POST action="">\n') cat('Arquivo: <input type=file name=arquivo><br />\n') cat('<select name=separador>\n') cat('<option value=" ">Separador</option>\n') cat('<option value=",">vírgula (,)</option>\n') cat('<option value=";">ponto-e-vírgula (;)</option>\n') cat('<option value=" ">espaço ( )</option>\n') cat('</select><br />') cat('Rotulo eixo x: <input type=text name=rotulo_eixo_x value="">') cat('Rotulo eixo y: <input type=text name=rotulo_eixo_y value="">') cat('<input type=submit name=Plotar>') cat("<hr>\n") # Verificando se algum arquivo foi enviado if (!is.null(FILES)){ separador <- POST$separador # Lendo o arquivo temporário criado durante o upload arquivo <- read.table(FILES$arquivo$tmp_name, sep=separador) # Rótulos dos eixos x e y rotulo_eixo_x <- try(as.character(POST$rotulo_eixo_x)) rotulo_eixo_y <- try(as.character(POST$rotulo_eixo_y)) # Criação do plot, na mesma pasta do script png("/var/www/tmp/plot.png") plot(arquivo, xlab=rotulo_eixo_x, ylab=rotulo_eixo_y) dev.off(); # Mostrando imagem cat(paste("<img src=\"/tmp/plot.png\">\n",sep='')) } cat("</body></html>\n") DONE
A página vai ser mostrada assim. |
E esse é um exemplo de gráfico gerado para o arquivo de entrada abaixo (separado por espaços). |
Arquivo plot.txt
1 1
2 4
3 9
4 16
5 25