(20 pontos) Use os dados abaixo para gerar os gráficos. Para o segundo gráfico (barras), use a escala logarítmica (log = “y”) e as seguintes cores: “#E6E6E6”, “#666666”. Além disso, os gráficos podem ser organizados com a função layout(). Ver exemplos do uso da função layout() em: https://stackoverflow.com/questions/38810854/how-to-use-layout-function-in-r e https://bookdown.org/ndphillips/YaRrr/arranging-plots-with-parmfrow-and-layo ut.html.
MRT_1F <-c(517.1468515630205, 85.13094142168089, 30.333207896694553, 12.694776264558937, 3.3041601673945418, 1.1823111717498882, 1.1892293502386786)
MRT_3F <-c(156.68929936163462, 11.540837783562276, 0.4512835621696538, 0.4509797929766453, 0.4502068233039181, 0.4496185276300172, 0.4543157082191288)
MRT_5F <-c(83.90319666471157, 0.3068151086494968, 0.30522314133037304, 0.3072588968084928, 0.30655265997285697, 0.3055812715727718, 0.3053297166713006)
MRT_10F <-c(29.55430642951759, 0.19832832665772515, 0.1971923924717474, 0.19796648905716516, 0.19615594370806338, 0.2034569237883263, 0.19617420889447737)
MRT_15F <-c(11.317736530583566, 0.167364215666193, 0.16172168266811013, 0.16701085329580515, 0.1598052657153692, 0.1645934043532696, 0.16216563797118075)
MRT_sem_F <-c(11.93430909937736, 0.6095414637034009, 0.6060645101029295, 0.612167181646899, 0.6146761002685637, 0.6096747087200697, 0.6125810476877268)
clock <- c(0.1, 0.5, 1, 1.5, 2, 2.5, 3)
Nome<-c("1 Fog","3 Fog","5 Fog","10 Fog","15 Fog","w/o Fog")
plot(clock,MRT_1F,type="o",pch=4,col="black",ylab="Response Time (sec)",xlab="Time between Things requests (seconds)",ylim=c(0,550),xlim=c(0,3))
lines(clock,MRT_3F, type = "o", pch=11,col = "yellow")
lines(clock,MRT_5F, type = "o", pch=1,col = "red")
lines(clock,MRT_10F, type = "o", pch=2,col = "blue")
lines(clock,MRT_15F, type = "o", pch=5,col = "purple")
lines(clock,MRT_sem_F, type = "o", pch=4,col = "green")
legend("topright",lwd=1,pch=c(4,11,1,2,5,4),col=c("black","yellow","red","blue","purple","green"),legend=Nome )
(20 pontos) Use os dados abaixo para gerar os gráficos. Para o segundo gráfico (barras), use a escala logarítmica (log = “y”) e as seguintes cores: “#E6E6E6”, “#666666”. Além disso, os gráficos podem ser organizados com a função layout(). Ver exemplos do uso da função layout() em: https://stackoverflow.com/questions/38810854/how-to-use-layout-function-in-r e https://bookdown.org/ndphillips/YaRrr/arranging-plots-with-parmfrow-and-layo ut.html.
MRT_1F <-c(517.1468515630205, 85.13094142168089, 30.333207896694553, 12.694776264558937, 3.3041601673945418, 1.1823111717498882, 1.1892293502386786)
MRT_3F <-c(156.68929936163462, 11.540837783562276, 0.4512835621696538, 0.4509797929766453, 0.4502068233039181, 0.4496185276300172, 0.4543157082191288)
MRT_5F <-c(83.90319666471157, 0.3068151086494968, 0.30522314133037304, 0.3072588968084928, 0.30655265997285697, 0.3055812715727718, 0.3053297166713006)
MRT_10F <-c(29.55430642951759, 0.19832832665772515, 0.1971923924717474, 0.19796648905716516, 0.19615594370806338, 0.2034569237883263, 0.19617420889447737)
MRT_15F <-c(11.317736530583566, 0.167364215666193, 0.16172168266811013, 0.16701085329580515, 0.1598052657153692, 0.1645934043532696, 0.16216563797118075)
MRT_sem_F <-c(11.93430909937736, 0.6095414637034009, 0.6060645101029295, 0.612167181646899, 0.6146761002685637, 0.6096747087200697, 0.6125810476877268)
clock <- c(0.1, 0.5, 1, 1.5, 2, 2.5, 3)
Nome<-c("1 Fog","3 Fog","5 Fog","10 Fog","15 Fog","w/o Fog")
MRT=matrix(ncol=7,nrow=6)
MRT[1,]=MRT_1F
MRT[2,]=MRT_3F
MRT[3,]=MRT_5F
MRT[4,]=MRT_10F
MRT[5,]=MRT_15F
MRT[6,]=MRT_sem_F
rownames(MRT)<-Nome
cores=c("#E6E6E6", "#666666")
layout(matrix(c(1,2,3,4,5,6),nrow=3,byrow=T))
for (i in 1:5){
barplot(MRT[c(6,i),],col=cores,xlab="Times between Things requests",ylab="Response time (s)",names.arg=clock,log="y",beside=T)
legend("topright",pch=c(15,15),col=cores,legend=rownames(MRT[c(6,i),]))
}
Obervação Questão 01.2: Quando gerados no “R” os gráficos de barras são totalmente compatíveis com o apresentado no arquivo pdf do exercício. No entanto, quando, quando no Markdown ficam um pouco diferente, inclusive a legenda fica estranha. Encaminho Tela do R, mostrando isso:
Tela de Execução no RStudio
(5 pontos) Para a tabela abaixo que classifica a qualidade de refeição de acordo com categorias de preços crie um gráfico de barras empilhadas. Também adicione título, nomes de eixos e legenda
M<-matrix(c(53.8,43.6,2.6,33.9,54.2,11.9,2.6,60.5,36.8,0,21.4,78.6),3,4)
RG<-c("Good", "Very Good", "Excellent")
P<-c("$10-19","$20-29","$30-39","$40-49")
cor<-c(15,5,9)
barplot(M,names.arg=P,ylim=c(0,150),col=cor,ylab="Quality Rating",xlab="Meal Price")
legend(x=1,y=150, pch=c(15,15,15), col=cor,legend=RG)
(5 pontos) Faça o histograma das temperaturas do mês de maio do dataset airquality. No entanto, primeiro converta as temperaturas para graus Celsius através da expressão °C = (°F − 32) / 1.8. Após isso, gere o histograma. Também adicione título, nomes de eixos, cor e curva de densidade
Aq<-dplyr::mutate(airquality,Celsius=(airquality$Temp-32) / 1.8)
T_Maio<-subset(x=Aq, subset=Month==5, select=Celsius)
cores<-c("blue","orange", "yellow","green","red","brown","pink","black","purple","grey")
hist(T_Maio$Celsius,main="Histograma de Temperaturas de Maio", xlab="Faixa de Temperaturas",ylab="Desnsidade",freq=F,col=cores,ylim=c(0,0.15),xlim=c(10,30))
lines(density(T_Maio$Celsius))
(5 pontos) Crie um gráfico de pizza com a porcentagem da tabela total de vendas por país. Use o dataset abaixo. Inclua a porcentagem de cada fatia, as cores das fatias e o nome do gráfico. Adicionalmente, use o comando legend() para incluir a legenda do gráfico. a) sales <- read.table(“https://training-course-material.com/images/8/8f/Sales.txt”,header=TRUE)
sales<-read.table("https://training-course-material.com/images/8/8f/Sales.txt",header=TRUE)
cores<-c("blue","orange", "yellow","green","red","pink")
pct<-round(100*(sales$SALES/sum(sales$SALES)))
pct<-paste(pct,"%",sep="")
show(pct)
## [1] "12%" "10%" "18%" "29%" "4%" "27%"
pie(sales$SALES,pct,col=cores,main="Total de Vendas por País")
legend("topright",legend=sales$COUNTRY,fill=cores)
(5 pontos) Utilize os dados de contagens de insetos em unidades experimentais agrícolas tratados com inseticidas diferentes disponíveis no R em InsectSprays e construa um boxplot sem a presença dos outliers para os 6 tipos de inseticidas. Coloque título e nomes de eixos adequados. Além disso, as caixas devem ser preenchidas com a cor “yellow”.
boxplot(count ~ spray, InsectSprays,col="Yellow",
xlab="Tipo de Inseticida",
ylab="Quantidade de Insetos",main="Contagem de Insetos Tratados por Inseticida",outline=F)
(20 pontos) Gere os gráficos abaixo a partir dos seguintes dados: monitoringCloudData_0.1.csv, monitoringCloudData_0.5.csv, monitoringCloudData_1.csv e monitoringCloudData_NONE.csv. Esses dados consistem de informações de monitoramento dos recursos de uma máquina virtual. Basicamente, é necessário gerar gráficos de linha do tempo de coleta dos recursos (currentTime) em relação a memória usada (usedMemory). Porém, é necessário ajustar a coluna “currentTime” para que o tempo fique contínuo e a coluna “usedMemory” para que todas as informações fiquemmegabytes. Por fim, use a função layout() para organizar os gráficos. Dica 1: use a função difftime() para calcular a diferença do tempo em horas. Dica 2: use os conceitos vistos na aula de string/regex para converter os dados na coluna “usedMemory” para apenas megabytes. Além disso, considere que um terabyte equivale a 1000000 megabytes e 1 gigabyte equivale a 1024 megabytes.
setwd('C:\\Users\\jerem\\Documents\\R_2022.1')
#Carregando Arquivos
x1<-read.csv('monitoringCloudData_0.1.csv')
x2<-read.csv('monitoringCloudData_0.5.csv')
x3<-read.csv('monitoringCloudData_1.csv')
x4<-read.csv('monitoringCloudData_NONE.csv')
#Função para Tornar o "Tempo" Contínuo
Tempo<-function(Datas){
#Entrar com Coluna do dataset
TT<-length(Datas)
v<-vector(length=TT)
v[1]<-0
for (i in 1:(TT-1)){
v[i+1]<-difftime(Datas[i+1],Datas[i])+v[i]
}
return(v)
}
#Aplicando Função de Tempo Contínuo
x1$Tempo<-Tempo(x1$currentTime)
x2$Tempo<-Tempo(x2$currentTime)
x3$Tempo<-Tempo(x3$currentTime)
x4$Tempo<-Tempo(x4$currentTime)
#Função Separar a unidade de medida dos dados (Ex: MB, TB, GB)
Separar<-function(Datas){
TT<-tidyr::separate(Datas,col="usedMemory",into=c("usedMemory_P1","usedMemory_P2"),sep=-2)
TT$usedMemory_P1<-as.numeric(TT$usedMemory_P1)
return(TT)
}
#Aplicando Função separar unidade de medida
x1<-Separar(x1)
x2<-Separar(x2)
x3<-Separar(x3)
x4<-Separar(x4)
#Função atribuição do valor à ordem de grandeza da unidade de medida
Contabilizar<-function(Datas){
#Entrar com Coluna do dataset
TT<-length(Datas)
v<-vector(length=TT)
for (i in 1:TT){
if (stringr::str_trim(Datas[i])=="MB"){
v[i]=1}
else if (stringr::str_trim(Datas[i])=="GB"){
v[i]=1024}
else if (stringr::str_trim(Datas[i])=="TB"){
v[i]=1000000}
}
return(v)
}
#Aplicando função atribuição à ordem de grandeza
x1$Fator<-Contabilizar(x1$usedMemory_P2)
x2$Fator<-Contabilizar(x2$usedMemory_P2)
x3$Fator<-Contabilizar(x3$usedMemory_P2)
x4$Fator<-Contabilizar(x4$usedMemory_P2)
#Calculado a Quantidade Total de Dados (Ex: 21 GB = 21 x 1024 = 21.540MB)
x1$Fator<-x1$Fator*x1$usedMemory_P1
x2$Fator<-x2$Fator*x2$usedMemory_P1
x3$Fator<-x3$Fator*x3$usedMemory_P1
x4$Fator<-x4$Fator*x4$usedMemory_P1
#função para gerar gráficos
Graf<-function(Tempo,Fator,numero){
if (numero==0){
m<-"Memory Analisys (None Workload)"}
else{
m<-paste("Memory Analisys (Workload of",numero,")")}
plot(Tempo,Fator,type="l",ylab="Used Memory (MB)", xlab="Time (hour)",main=m)
}
#Geração de Gráficos
layout(matrix(c(1,1,2,2,3,3,4,4),nrow=2,byrow=T))
Graf(x4$Tempo,x4$Fator,0)
Graf(x1$Tempo,x1$Fator,0.1)
Graf(x2$Tempo,x2$Fator,0.5)
Graf(x3$Tempo,x3$Fator,1)
(10 pontos) Filtrando os conteúdos com apenas UM país de origem (coluna “country”), utilize o Plotly para obter um gráfico de pizza dos 10 países com mais conteúdo na plataforma.
setwd('C:\\Users\\jerem\\Documents\\R_2022.1')
filme<-read.csv("netflix_titles.csv",na.strings = "")
country<-filme$country
TT<-length(country)
v<-vector()
ct<-1
for (i in 1:TT){
if (length(grep(",",country[i],value=T))==0 & is.na(country[i])==F){
v[ct]<-country[i]
ct<-ct+1}
}
S<-data.frame(country=v)
S1<-dplyr::group_by(S,country)
S1<-dplyr::summarise(S1,Quantidade=length(country))
S2<-dplyr::arrange(S1,desc(Quantidade))[1:10,]
plotly::plot_ly(data=S2,labels=~country,values=~Quantidade, type='pie')
(10 pontos) Considerando os 10 países descritos na questão anterior, utilize o Plotly para obter uma tabela com as colunas “País” e “Total de conteúdos”. Para tal tabela, é necessário que o cabeçalho esteja com o fundo da célula cinza e a letra em branco, e que todos os textos das células estejam @centralizados.
plotly::plot_ly(
type = 'table',
columnwidth = c(50, 50),
columnorder = c(0, 1),
header = list(
values = c("País","Total"),
align = c("center", "center"),
fill = list(color='grey'),
line = list(width = 1.5, color = 'black'),
font = list(family = "Arial", size = 12, color = c("white"))
),
cells = list(
values = rbind(S2$country, S2$Quantidade),
align = c("center", "center"),
line = list(width = 1.5, color = 'black'),
font = list(family = "Arial", size = 12, color = c("black"))
)
)
(10 pontos) Utilizando o Plotly, obtenha um gráfico de linha com pontos (como na imagem abaixo) contendo a quantidade de conteúdo por década do Netflix, onde o eixo X representa as décadas e o eixo Y a quantidade de conteúdo disponível na plataforma (coluna “release_year”). Use uma linha azul para representar as séries e uma linha amarela representando os filmes. (Obs: considerar como década o período que compreende os anos de XXX0 à XXX9, por exemplo, 2000 à 2009)
setwd('C:\\Users\\jerem\\Documents\\R_2022.1')
filme<-read.csv("netflix_titles.csv",na.strings = "")
#Função Separar Década
Decada<-function(Ano){
v=vector()
TT<-length(Ano)
Ano<-as.character(Ano)
for (i in 1:TT){
v[i]<-paste(substr(Ano[i],1,3),"0",sep="")
}
return(v)
}
filme$Decada<-Decada(filme$release_year)
filme$Decada<-as.numeric(filme$Decada)
#Cirando Data Frame de Filmes
Movies<-dplyr::group_by(filme,Decada)
Movies<-dplyr::filter(Movies,type=="Movie")
Movies<-dplyr::summarise(Movies,Movies=length(Decada))
#Criando Data Frame de Séries
TVShow<-dplyr::group_by(filme,Decada)
TVShow<-dplyr::filter(TVShow,type=="TV Show")
TVShow<-dplyr::summarise(TVShow,TVShow=length(Decada))
#Combinando Filme e Séries em Novo Data Frame
Combinado<-merge(x=Movies,y=TVShow,by.x="Decada",by.y="Decada",all=T)
#Trocando NA por zeros
Combinado$Movies[which(is.na(Combinado$Movies))]<-0
Combinado$TVShow[which(is.na(Combinado$TVShow))]<-0
#Gerando Gráficos
FIG<-plotly::plot_ly(Combinado, x = ~Decada,y = ~ TVShow,name="TV Series", type = 'scatter',mode = 'lines+markers',
line = list(color = 'blue',
width = 2), marker=list(color="blue"))
FIG<- plotly::add_trace(FIG, y = ~Movies,name="Movies", type = 'scatter',mode = 'lines+markers',
line = list(color = 'orange',
width = 2), marker=list(color="orange"))
FIG<-plotly::layout(FIG,title = 'Netflix',
xaxis = list(title = 'Década'),
yaxis = list (title = 'Qnd. Conteúdo'))
FIG
(10 pontos) Utilizando o Plotly, obtenha um gráfico que representa a quantidade de filmes lançados de um determinado gênero entre os anos de 2000 e 2010. Este gráfico deve ser de barras lado-a-lado (como na imagem abaixo), com cada barra representando a quantidade de filmes dos gêneros “Dramas”, “Action & Adventure” e “Comedies” lançados naquele determinadoano. (Obs: Para filmes com múltiplos gêneros, considerar apenas o primeiro descrito na coluna “listed_in”).
setwd('C:\\Users\\jerem\\Documents\\R_2022.1')
filme<-read.csv("netflix_titles.csv",na.strings = "")
Sel<-dplyr::filter(filme,release_year>2000 & release_year<2010)
#Função separar categorias
Categoria<-function(Data){
TT<-length(Data)
v<-vector()
for (i in 1:TT){
if (substr(stringr::str_trim(Data[i]),1,6)=="Dramas"){
v[i]<-"Dramas"}
else if (substr(stringr::str_trim(Data[i]),1,18)=="Action & Adventure"){
v[i]<-"Action_Adventure"}
else if (substr(stringr::str_trim(Data[i]),1,8)=="Comedies"){
v[i]<-"Comedies"}
else {v[i]<-"Outro"}
}
return(v)
}
Sel$release_year<-as.character(Sel$release_year)
#Aplicando função para categorizar
Sel$Categoria<-Categoria(Sel$listed_in)
#separando as categorias desejadas
Cat<-dplyr::filter(Sel,Categoria=="Comedies" | Categoria=="Action_Adventure" | Categoria=="Dramas")
Cat<-dplyr::select(Cat,release_year,Categoria)
#Quatificando por categoria
Cat<-dplyr::group_by(Cat,Categoria,release_year)
Cat<-unique(dplyr::mutate(Cat,Quantidade=length(Categoria)))
#Separando data frame em colunas de categorias desejadas
Cat<-tidyr::spread(Cat, key="Categoria",value="Quantidade")
#Trocando NA por zeros
Cat$Comedies[which(is.na(Cat$Comedies))]<-0
Cat$Action_Adventure[which(is.na(Cat$Action_Adventure))]<-0
Cat$Dramas[which(is.na(Cat$Dramas))]<-0
#Gráficos
FIG <- plotly::plot_ly(Cat, x = ~release_year, y = ~Dramas, type = 'bar', name = 'Drama',marker = list(color = 'blue'))
FIG <- plotly::add_trace(FIG,y = ~Action_Adventure, name = 'Ação e Aventura', marker = list(color = 'orange'))
FIG <- plotly::add_trace(FIG,y = ~Comedies, name = 'Comédia', marker = list(color = 'green'))
FIG<-plotly::layout(FIG,title = 'Netflix',
xaxis = list(title = 'Ano de Lançamento'),
yaxis = list (title = 'Qnt. de Lançamentos'))
FIG