Matemática
Curvas para função exponencial versus logaritmo (EM13MAT401, EM13MAT402)
library(plotly)
<- seq(1, 10, length.out = 10)
x_values <- exp(x_values) # Função exponencial
y_exp <- log(x_values) # Função logarítmica
y_log
<- plot_ly(x = x_values, y = y_exp, type = 'scatter', mode = 'markers+lines', name = 'Exponencial') %>%
exp_plot layout(title = "Função Exponencial", xaxis = list(title = 'X'), yaxis = list(title = 'Y Exp'))
<- plot_ly(x = x_values, y = y_log, type = 'scatter', mode = 'markers+lines', name = 'Logarítmica') %>%
log_plot layout(title = "Função Logarítmica", xaxis = list(title = 'X'), yaxis = list(title = 'Y Log'))
# Combinar os gráficos
subplot(exp_plot, log_plot, nrows = 1) %>%
layout(title = "Exponencial vs Logarítmica", clickmode = 'event+select')
Sugestões:
Experimente modificar o gráfico, usando/substituindo alternativamente os comandos abaixo no trecho de código:
Funções de 1o, 2o., e 3o. grau (EM13MAT301, EM13MAT302)
library(plotly)
# Função para gerar polinômios de 1º, 2º e 3º grau
<- function(degree) {
generate_data <- seq(-5, 5, length.out = 100)
x <- if (degree == 1) 2 * x + 1 else if (degree == 2) x^2 - 3 * x + 2 else x^3 - 2 * x^2 + x - 1
y list(x = x, y = y)
}
plot_ly() %>%
add_trace(x = generate_data(1)$x, y = generate_data(1)$y, mode = 'lines') %>%
layout(
title = 'Polinômio de 1º a 3º Grau',
sliders = list(list(
steps = lapply(1:3, function(degree) {
list(label = degree, method = "restyle",
args = list(list(y = list(generate_data(degree)$y))))
})
)) )
Sugestões:
Experimente modificar o gráfico, usando/substituindo alternativamente, os comandos abaixo no trecho de código:
Seno e Cosseno (EM13MAT409, EM13CIF301)
library(plotly)
# Valores de x
<- seq(0, 2 * pi, length.out = 100)
x
plot_ly() %>%
add_trace(x = x, y = sin(x), mode = 'lines', name = 'Seno') %>%
add_trace(x = x, y = cos(x), mode = 'lines', name = 'Cosseno') %>%
layout(
title = 'Comparação: Seno e Cosseno',
xaxis = list(title = 'Ângulo (radianos)'),
yaxis = list(title = 'Valor'),
showlegend = TRUE
)
Sugestões:
Experimente modificar o gráfico, usando/substituindo alternativamente os comandos abaixo no trecho de código:
Tendência central: média e mediana (EM13MAT306, EM13MAT305)
library(plotly)
# Dados de exemplo
set.seed(123)
<- rnorm(100, mean = 50, sd = 10)
dados
# Estatísticas
<- mean(dados)
media_val <- median(dados)
mediana_val
plot_ly() %>%
add_trace(x = dados, type = 'histogram', name = 'Distribuição', opacity = 0.6) %>%
add_trace(x = c(media_val, media_val), y = c(0, 15), mode = 'lines', name = 'Média', line = list(color = 'red')) %>%
add_trace(x = c(mediana_val, mediana_val), y = c(0, 15), mode = 'lines', name = 'Mediana', line = list(color = 'blue')) %>%
layout(title = 'Tendência Central',
xaxis = list(title = 'Valores'),
yaxis = list(title = 'Frequência'),
showlegend = TRUE)
Sugestões:
Experimente modificar o gráfico, usando/substituindo alternativamente os comandos abaixo no trecho de código:
Comparação de área superficial e volume de uma esfera (EM13MT05)
library(plotly)
plot_ly() %>%
add_trace(x = 1:10, y = 4 * pi * (1:10)^2, mode = 'lines+markers', name = 'Superfície') %>%
add_trace(x = 1:10, y = (4/3) * pi * (1:10)^3, mode = 'lines+markers', name = 'Volume') %>%
layout(
title = 'Superfície e Volume de uma Esfera',
xaxis = list(title = 'Raio'),
yaxis = list(title = 'Valor')
)
Sugestões:
Experimente modificar o gráfico, usando/substituindo alternativamente os comandos abaixo no trecho de código:
= 1:100
x = 1:100 # aumenta o no. de pontos em 10 vezes y
Função Seno e ajuste de parâmetros (EM13MAT403, EM13MAT406, EM13MAT408)
# Instalar os pacotes necessários
# install.packages("plotly")
library(plotly)
# Geração de dados
<- seq(0, 2 * pi, length.out = 500)
x
# Função para gerar y com base no parâmetro a
<- function(a, x) {
func return(a * sin(x))
}
# Valores do parâmetro 'a' que irão variar
<- seq(0.5, 3, length.out = 30)
a_values
# Criando um data frame com todos os valores de a e x para plotar
<- data.frame(
data x = rep(x, times = length(a_values)),
y = unlist(lapply(a_values, function(a) func(a, x))),
a = rep(a_values, each = length(x))
)
# Criando o gráfico interativo com animação
plot_ly(data,
x = ~x,
y = ~y,
frame = ~a,
type = 'scatter',
mode = 'lines') %>%
layout(
title = "Variação da função y = a * sin(x) com diferentes valores de a",
xaxis = list(title = "x"),
yaxis = list(title = "y", range = c(-3, 3))
)
Sugestões:
Experimente modificar o gráfico, usando/substituindo alternativamente os comandos abaixo no trecho de código:
Regressão linear (EM13MT10)
library(plotly)
<- function(ruido_func) {
dados set.seed(123)
<- seq(0, 5, length.out = 50)
x <- 2 * x + 5 + rnorm(50, 0, ruido_func)
desvio <- predict(lm(desvio ~ x), data.frame(x = x))
y_esperado list(x = x, desvio = desvio, y_esperado = y_esperado)
}
plot_ly() %>%
add_trace(x = dados(1)$x, y = dados(1)$desvio, mode = 'markers', type = "scatter", name = "Dados") %>%
add_trace(x = dados(1)$x, y = dados(1)$y_esperado, mode = 'lines', type = "scatter", name = "Linha de Regressão") %>%
layout(
title = 'Regressão Linear',
xaxis = list(title = 'X'), yaxis = list(title = 'Y'),
sliders = list(list(
currentvalue = list(prefix = "Desvio: "),
steps = lapply(seq(0, 5, 1), function(sd_value) {
list(label = as.character(sd_value),
args = list(list(y = list(dados(sd_value)$desvio, dados(sd_value)$y_esperado))))
})
)) )
Sugestões:
Experimente modificar o gráfico, usando/substituindo alternativamente os comandos abaixo no trecho de código:
= 50 # aumenta o no. de pontos pra visualizar melhor o espalhamento
lenght.out
lapply(seq(0, 50, 1) # aumenta o no. de desvios-padrão, para se visualizar o valor de sua influência no espalhamento dos pontos (veja que acima de 3 desvios-padrão o espalhamento fica muito grande, e com pouca alteração).
lapply(seq(0, 3, 0.1) # altera o controle deslizante, pra se visualizar o espalhamento de forma mais suave até o valor de 3 desvios-padrão