Open andrechalom opened 6 years ago
Olás,
Uma possível solução é encapsular o script em um dispositivo de arquivo em um formato especifico de raster, png por exemplo, e fazermos o teste lógico no arquivo de imagem lido pelo pacote png. No caso de um png colorido, ele é lido como um array com as 2 primeiras dimensões representando a posição dos pixels (linha e colunas) e a 3 a escala RGB para cada pixel. Parece um formato simples para fazermos testes lógicos.
Veja o exemplo abaixo:
png("myplot.png") ## precisa abrir o dispositivo de arquivo antes do script
plot(1:10) rect(xleft=1, ybottom=5, xright=3, ytop=7, col="red") rect(xleft=1:5,ybottom=2:6, xright=(1:5)+4, ytop=(2:6)+2, col=1:5) points(1:10, 1:10, pch=16)
dev.off() ## fecha o dispositivo ativo para salvar o png no diretorio de trabalho
library(png)
img1 <- readPNG("myplot.png") str(img1)
correto! img2 <- readPNG("myplot.png") str(img2)
table(img1[,,1] == img2[,,]
Alexandre Adalardo de Oliveira Professor Doutor Universidade de São Paulo IB-Depto Ecologia http://labtrop.ib.usp.br http://ecologia.ib.usp.br/labtrop adalardo@usp.br
aleadalardo@gmail.com http://scholar.google.com.br/citations?user=O1gcrwIAAAAJ&hl=pt-BR
2018-04-24 20:57 GMT-03:00 Andre Chalom notifications@github.com:
É possível corrigir exercícios que pedem a geração de um gráfico? @raspereira https://github.com/raspereira sugeriu a função recordPlot(), preciso verificar.
— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/lageIBUSP/notaR-r/issues/6, or mute the thread https://github.com/notifications/unsubscribe-auth/AHRIdfnOCe4fwBpL3q80MF6LntJ0JBGyks5tr7v8gaJpZM4Til1R .
Olá pessoal, Interessante a sugestão do Alê, pois podemos testar itens específicos no grafico (cor p. ex.). Eu estou fazendo testes com a função recordPlot(). O legal dessa função é que ela salva em um objeto um gráfico feito na interface gráfica. No entanto a comparação de gráficos muito parecidos está falhando pelo menos para os histogramas. Enfim, vários caminhos estão surgindo... Veja exemplo abaixo: x<-rpois(1000, 5)boxplot(x)boxplot(x) # não saquei o porquê, mas tem que repetir o comando para funcionar!p <- recordPlot() boxplot(x)p.control<-recordPlot() identical(p, p.control)
x<-rpois(1000, 5)boxplot(x)p.control<-recordPlot() identical(p, p.control)
Rodrigo A. S. Pereira Depto de Biologia/FFCLRP-USP Av. Bandeirantes, 3900 14040-901 - Ribeirão Preto, SP Fone: +55 16 3315-4678 Fax: +55 16 3315-9101 http://sites.ffclrp.usp.br/ficus/
Em quarta-feira, 2 de maio de 2018 15:21:28 BRT, Alexandre Adalardo <notifications@github.com> escreveu:
Olás,
Uma possível solução é encapsular o script em um dispositivo de arquivo em um formato especifico de raster, png por exemplo, e fazermos o teste lógico no arquivo de imagem lido pelo pacote png. No caso de um png colorido, ele é lido como um array com as 2 primeiras dimensões representando a posição dos pixels (linha e colunas) e a 3 a escala RGB para cada pixel. Parece um formato simples para fazermos testes lógicos.
Veja o exemplo abaixo:
png("myplot.png") ## precisa abrir o dispositivo de arquivo antes do script
plot(1:10) rect(xleft=1, ybottom=5, xright=3, ytop=7, col="red") rect(xleft=1:5,ybottom=2:6, xright=(1:5)+4, ytop=(2:6)+2, col=1:5) points(1:10, 1:10, pch=16)
dev.off() ## fecha o dispositivo ativo para salvar o png no diretorio de trabalho
library(png)
img1 <- readPNG("myplot.png") str(img1)
correto! img2 <- readPNG("myplot.png") str(img2)
table(img1[,,1] == img2[,,]
Alexandre Adalardo de Oliveira Professor Doutor Universidade de São Paulo IB-Depto Ecologia http://labtrop.ib.usp.br http://ecologia.ib.usp.br/labtrop adalardo@usp.br
aleadalardo@gmail.com http://scholar.google.com.br/citations?user=O1gcrwIAAAAJ&hl=pt-BR
2018-04-24 20:57 GMT-03:00 Andre Chalom notifications@github.com:
É possível corrigir exercícios que pedem a geração de um gráfico? @raspereira https://github.com/raspereira sugeriu a função recordPlot(), preciso verificar.
— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/lageIBUSP/notaR-r/issues/6, or mute the thread https://github.com/notifications/unsubscribe-auth/AHRIdfnOCe4fwBpL3q80MF6LntJ0JBGyks5tr7v8gaJpZM4Til1R .
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or mute the thread.
Olá pessoal, Tenho uma dúvida e um problema. 1) Qual é a sequencia de execução das rotinas pelo notaR? Executa primeiro as "Precondições", depois a resposta do aluno e por último os "Testes"?
2) Estou testando a função p<-recordPlot(). Percebi que o objeto (p por ex.) criado quando o dispositivo gráfico tá fechado é diferente do objeto criado quando a janela gráfica já tá aberta. A solução é sempre fechar o dispositivo gráfico antes de fazer um novo gráfico. No entanto não estou conseguindo implementar isso no notaR (exercício 301.2).
Experimentei colocar fazer os gráficos "gabarito" na Precondição ou no Testes. Em ambos está havendo falhas. Alguém tem alguma dica de como resolver isso? Estou anexando o conjunto de dados do exercício. alunos2018.txt
Submeto o código resposta abaixo (fazendo um gráfico diferente do pedido) e o teste falha em detectar o erro:
alunos<-read.delim2("alunos2018.txt") hist(alunos$Peso) # Estou fazendo o grafico de Peso e não de Altura, como pedido pa<-recordPlot() dev.off()
Abraços,
Rodrigo
Oi Rodrigo,
Como respondi no seu email o Chalom pode ajudar mais com isso. De qq forma, os arquivos que fazem parte de condições devem se incluídos pela aba "Arquivos" no meu à direita do notaR. Eles ficam disponíveis para todos os exercícios. Acho que o png do "gabarito" deveria entrar aqui!
Abs A.
Alexandre Adalardo de Oliveira Professor Doutor Universidade de São Paulo IB-Depto Ecologia http://labtrop.ib.usp.br http://ecologia.ib.usp.br/labtrop adalardo@usp.br
aleadalardo@gmail.com http://scholar.google.com.br/citations?user=O1gcrwIAAAAJ&hl=pt-BR
Em 20 de maio de 2018 23:26, raspereira notifications@github.com escreveu:
Olá pessoal, Tenho uma dúvida e um problema.
1.
Qual é a sequencia de execução das rotinas pelo notaR? Executa primeiro as "Precondições", depois a resposta do aluno e por último os "Testes"? 2.
Estou testando a função p<-recordPlot(). Percebi que o objeto (p por ex.) criado quando o dispositivo gráfico tá fechado é diferente do objeto criado quando a janela gráfica já tá aberta. A solução é sempre fechar o dispositivo gráfico antes de fazer um novo gráfico. No entanto não estou conseguindo implementar isso no notaR (exercício 301.2).
Experimentei colocar fazer os gráficos "gabarito" na Precondição ou no Testes. Em ambos está havendo falhas. Alguém tem alguma dica de como resolver isso? Estou anexando o conjunto de dados do exercício. alunos2018.txt https://github.com/lageIBUSP/notaR-r/files/2021005/alunos2018.txt
Abraços,
Rodrigo
— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/lageIBUSP/notaR-r/issues/6#issuecomment-390536353, or mute the thread https://github.com/notifications/unsubscribe-auth/AHRIdYpVG_t4-VHFHwPiSqsYlAGmfz_Lks5t0iW_gaJpZM4Til1R .
É uma possibilidade interessante. Eu estava pensando em criar o gabarito na Precondição para não poluir os "Arquivos" com coisas que não sejam arquivos de dados originais. Se for possível criar nas precondições acho que fica mais flexível caso deseje substituir o arquivo de dados de um ano para o outro. Por ex. no exercício que quero fazer vou usar a altura e peso dos alunos da turma.
Abraços, rodrigo
Entendi. Nesse caso parece melhor. D qq forma vai precisar atualizar as pré-condições todos os anos para incluir dados da turma. Uma alternativa seja a pre-condicao ler direto de um arquivo do Google drive...
Em Ter, 22 de mai de 2018 17:58, raspereira notifications@github.com escreveu:
É uma possibilidade interessante. Eu estava pensando em criar o gabarito na Precondição para não poluir os "Arquivos" com coisas que não sejam arquivos de dados originais. Se for possível criar nas precondições acho que fica mais flexível caso deseje substituir o arquivo de dados de um ano para o outro. Por ex. no exercício que quero fazer vou usar a altura e peso dos alunos da turma.
Abraços, rodrigo
— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/lageIBUSP/notaR-r/issues/6#issuecomment-391138524, or mute the thread https://github.com/notifications/unsubscribe-auth/AHRIdaniH0j2sbGcqAiz3Qk-8TLRwa_Iks5t1Hv4gaJpZM4Til1R .
Oi, Rodrigo!
Qual é a sequencia de execução das rotinas pelo notaR? Executa primeiro as "Precondições", depois a resposta do aluno e por último os "Testes"?
Correto! Essa é a ordem atual, e a proposta é para continuarmos fazendo essa ordem.
Vi que vc subiu o arquivo alunos2018.txt para o servidor, e eu instalei a library de "png", agora deve dar pra vc continuar seus testes.
Abraços!
Oi @andrechalom @adalardo ,
Bingo, tá funcionando! Mas a função hist é mala. Por default ela coloca o nome do vetor como título do gráfico. Assim, o nome do arquivo gabarito e do aluno tem que ter nomes iguais ou o enunciado pedir para o aluno mudar o título (main=) do gráfico. A solução que optei é deixar o script do aluno sobrescrever o objeto de dados da Precondição...
Abraços e obrigado!
Achei por acaso esse pacote, talvez seja um bom começo!!
Rodrigo A. S. Pereira Depto de Biologia/FFCLRP-USP Av. Bandeirantes, 3900 14040-901 - Ribeirão Preto, SP Fone: +55 16 3315-4678 Fax: +55 16 3315-9101 http://sites.ffclrp.usp.br/ficus/
Em terça-feira, 28 de agosto de 2018 13:44:29 BRT, Andre Chalom <notifications@github.com> escreveu:
Achei por acaso esse pacote, talvez seja um bom começo!!
https://github.com/MangoTheCat/visualTest
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or mute the thread.
| | Livre de vírus. www.avast.com. |
É possível corrigir exercícios que pedem a geração de um gráfico? @raspereira sugeriu a função
recordPlot()
, preciso verificar.