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-layout.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)
Resposta:
q1.xlab <- "Time bewtween Things requests"
q1.ylab <- "Response time"
q1.g1.pch <- c(4, 11, 1, 2, 5, 4)
q1.g1.col <- c("black", "yellow", "red", "blue", "purple", "green")
q1.g1.legend <- c("1 Fog", "3 Fogs", "5 Fogs","10 Fogs","15 Fogs","w/o Fog")
plot(clock, MRT_1F, type="o", pch=q1.g1.pch[1], xlab=paste(q1.xlab,"(seconds)"), ylab=paste(q1.ylab,"(sec.)"))
lines(clock, y=MRT_3F, type="o", col=q1.g1.col[2], pch=q1.g1.pch[2])
lines(clock, y=MRT_5F, type="o", col=q1.g1.col[3], pch=q1.g1.pch[3])
lines(clock, y=MRT_10F, type="o", col=q1.g1.col[4], pch=q1.g1.pch[4])
lines(clock, y=MRT_15F, type="o", col=q1.g1.col[5], pch=q1.g1.pch[5])
lines(clock, y=MRT_sem_F, type="o", col=q1.g1.col[6], pch=q1.g1.pch[6])
legend("topright", pch = q1.g1.pch, col = q1.g1.col, legend = q1.g1.legend)
q1.g2to6.col <- c("#E6E6E6", "#666666")
q1.g2to6.xlab <- q1.xlab
q1.g2to6.ylab <- paste(q1.ylab, "(s)")
par(mfrow=c(3, 2), mar= c(4, 4, 2, 0))
q1.g2.legend=c("w/o Fog", "1 Fog")
barplot(matrix(c(rbind(MRT_sem_F, MRT_1F)), nrow=2, ncol=length(clock)), names.arg=clock, xlab=q1.g2to6.xlab, ylab=q1.g2to6.ylab, col=q1.g2to6.col, beside=T, log="y")
legend("topright", fill=q1.g2to6.col, legend=q1.g2.legend)
q1.g3.legend=c("w/o Fog", "3 Fogs")
barplot(matrix(c(rbind(MRT_sem_F, MRT_3F)), nrow=2, ncol=length(clock)), names.arg=clock, xlab=q1.g2to6.xlab, ylab=q1.g2to6.ylab, col=q1.g2to6.col, beside=T, log="y")
legend("topright", fill=q1.g2to6.col, legend=q1.g3.legend)
q1.g4.legend=c("w/o Fog", "5 Fogs")
barplot(matrix(c(rbind(MRT_sem_F, MRT_5F)), nrow=2, ncol=length(clock)), names.arg=clock, xlab=q1.g2to6.xlab, ylab=q1.g2to6.ylab, col=q1.g2to6.col, beside=T, log="y")
legend("topright", fill=q1.g2to6.col, legend=q1.g4.legend)
q1.g5.legend=c("w/o Fog", "10 Fogs")
barplot(matrix(c(rbind(MRT_sem_F, MRT_10F)), nrow=2, ncol=length(clock)), names.arg=clock, xlab=q1.g2to6.xlab, ylab=q1.g2to6.ylab, col=q1.g2to6.col, beside=T, log="y")
legend("topright", fill=q1.g2to6.col, legend=q1.g5.legend)
q1.g6.legend=c("w/o Fog", "15 Fogs")
barplot(matrix(c(rbind(MRT_sem_F, MRT_15F)), nrow=2, ncol=length(clock)), names.arg=clock, xlab=q1.g2to6.xlab, ylab=q1.g2to6.ylab, col=q1.g2to6.col, beside=T, log="y")
legend("topright", fill=q1.g2to6.col, legend=q1.g6.legend)
Resposta:
q2.good <- c(53.8, 33.9, 2.6, 0)
q2.veryGood <- c(43.6, 52.2, 60.5, 21.4)
q2.excellent <- c(2.6, 11.9, 36.8, 78.6)
q2.names <- c("$10-19", "$20-29", "$30-39", "$40-49")
q2.col <- rainbow(3)
q2.legend <- c("Good", "Very Good", "Excellent")
q2.data <- matrix(c(q2.good, q2.veryGood, q2.excellent), nrow=length(q2.legend), byrow=T)
par(mar = c(5, 4, 4, 2) + 0.1)
barplot(q2.data, names.arg=q2.names, main="Rating by Meal Price", xlab="Meal Price", ylab="Quality Rating", col= q2.col)
add_legend("topright", inset=c(0.083,0.03), fill=q2.col, legend=q2.legend, cex=0.8, bty="n")
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.
Resposta:
q3.data <- (filter(airquality, Month==5)$Temp-32)/1.8
hist(q3.data, col="gray", probability=T, main="Histogram of Temperature", xlab="Temperature (ºC)", ylab="Density")
lines(density(q3.data))
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.
sales <- read.table("https://training-course-material.com/images/8/8f/Sales.txt",header=TRUE)
Resposta:
q4.data <- sales$SALES
q4.labels <- paste(round(q4.data/sum(q4.data)*100), "%", sep="")
q4.legend <- sales$COUNTRY
q4.col <- rainbow(length(q4.data))
pie(q4.data, labels=q4.labels, col=q4.col, main="Vendas por país")
legend("topright",legend=q4.legend, fill=q4.col)
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”
Resposta:
boxplot(count ~ spray, data=InsectSprays, main="Insetos por tipo de inseticida", col="yellow", outline=F, ylab="Quantidade de insetos", xlab="Tipo de inseticida")
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 fiquem megabytes. 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.
Resposta:
q6.data.none <- q6.loadAndPrep("./data/monitoringCloudData_NONE.csv")
q6.data.01 <- q6.loadAndPrep("./data/monitoringCloudData_0.1.csv")
q6.data.05 <- q6.loadAndPrep("./data/monitoringCloudData_0.5.csv")
q6.data.1 <- q6.loadAndPrep("./data/monitoringCloudData_1.csv")
par(mfrow=c(2, 2))
plot(q6.data.none, type="s", main="Memory Analisys (None Workload)", xlab="Time (hour)", ylab="Used Memory (MB)")
plot(q6.data.01, type="s", main="Memory Analisys (Workload of 0.1)", xlab="Time (hour)", ylab="Used Memory (MB)", ylim=c(0, 3500))
plot(q6.data.05, type="s", main="Memory Analisys (Workload of 0.5)", xlab="Time (hour)", ylab="Used Memory (MB)", ylim=c(0, 1200))
plot(q6.data.1, type="s", main="Memory Analisys (Workload of 1)", xlab="Time (hour)", ylab="Used Memory (MB)")
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.
Resposta:
q7.data <- netflix_df %>%
filter(str_count(country, ",") == 0) %>%
group_by(country) %>%
summarise(movie_count = n()) %>%
arrange(desc(movie_count)) %>%
head(10)
plot_ly(
q7.data,
labels=~country,
values=~movie_count,
type="pie"
)
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.
Resposta:
plot_ly(
type = 'table',
columnwidth = c(100, 100),
columnorder = c(0, 1),
header = list(
values = c("País","Total de conteúdos"),
align = c("center", "center"),
line = list(width = 1, color = 'black'),
fill = list(color = c("grey", "grey")),
font = list(family = "Arial", size = 14, color = "white")
),
cells = list(
values = rbind(diamonds$cut, diamonds$price),
align = c("center", "center"),
line = list(color = "black", width = 1),
font = list(family = "Arial", size = 12, color = c("black"))
))
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.
Resposta:
q9.data <- netflix_df %>%
mutate(release_decade = paste(floor(release_year/10), "0", sep="")) %>%
group_by(release_decade, type) %>%
summarise(count = n())
## `summarise()` has grouped output by 'release_decade'. You can override using
## the `.groups` argument.
show(q9.data)
## # A tibble: 18 × 3
## # Groups: release_decade [10]
## release_decade type count
## <chr> <chr> <int>
## 1 1920 TV Show 1
## 2 1940 Movie 13
## 3 1940 TV Show 1
## 4 1950 Movie 11
## 5 1960 Movie 22
## 6 1960 TV Show 3
## 7 1970 Movie 63
## 8 1970 TV Show 4
## 9 1980 Movie 99
## 10 1980 TV Show 7
## 11 1990 Movie 194
## 12 1990 TV Show 31
## 13 2000 Movie 601
## 14 2000 TV Show 127
## 15 2010 Movie 3951
## 16 2010 TV Show 1760
## 17 2020 Movie 423
## 18 2020 TV Show 476
q9.data <- q9.data %>%
pivot_wider(names_from = type, values_from = count, values_fill = 0)
colnames(q9.data) <- c("release_decade", "movie_count", "show_count")
show(q9.data)
## # A tibble: 10 × 3
## # Groups: release_decade [10]
## release_decade movie_count show_count
## <chr> <int> <int>
## 1 1920 1 0
## 2 1940 1 13
## 3 1950 0 11
## 4 1960 3 22
## 5 1970 4 63
## 6 1980 7 99
## 7 1990 31 194
## 8 2000 127 601
## 9 2010 1760 3951
## 10 2020 476 423
plot_ly(
as.data.frame(q9.data),
x=~release_decade,
y=~show_count,
name="TV Series",
mode="lines",
type="scatter"
) %>%
add_trace(y=~movie_count, name="Movies", mode="lines") %>%
layout(xaxis = list(title = 'Década'),
yaxis = list(title = 'Qnd. Conteúdo'), legend = list(title=list(text='<b> Tipo de conteúdo </b>')))