Faça todos os ticks aparecerem no eixo usando R plotly
Aug 25 2020
Eu escrevi um código para fazer subplots com scatterplots usando meus dados. Aqui está um gráfico:
Isso é horas no eixo x. Como você pode ver, nem todos eles aparecem no eixo x. Como posso fazer com que todas as 24 horas fiquem no eixo? Mesmo se, por exemplo, no dataframe não houver valor para 23 horas, eu quero que seja no eixo x. Como fazer isso?
Aqui está o meu código:
plot <- function(df) {
subplotList <- list()
for(metric in unique(df$metrics)){ subplotList[[metric]] <- df[df$metrics == metric,] %>%
plot_ly(
x = ~ hr,
y = ~ actual,
name = ~ paste(metrics, " - ", time_pos),
colors = ~ time_pos,
hoverinfo = "text",
hovertemplate = paste(
"<b>%{text}</b><br>",
"%{xaxis.title.text}: %{x:+.1f}<br>",
"%{yaxis.title.text}: %{y:+.1f}<br>",
"<extra></extra>"
),
type = "scatter",
mode = "lines+markers",
marker = list(
size = 7,
color = "white",
line = list(width = 1.5)
),
width = 700,
height = 620
) %>% layout(autosize = T,legend = list(font = list(size = 8)))
}
subplot(subplotList, nrows = length(subplotList), margin = 0.05)
}
Respostas
stefan Aug 25 2020 at 12:44
Isso pode ser feito por layoutmeio do atributo xaxiscomo tal. Os tiques ou quebras podem ser definidos através tickvalsdos rótulos dos tiques através de ticktext.
Isso é ilustrado usando alguns dados aleatórios no exemplo reproduzível abaixo:
library(plotly)
set.seed(42)
d <- data.frame(
x = sort(sample(24, 15)),
y = 1:15 + runif(15),
z = 1:15 + runif(15)
)
plot_ly(d) %>%
add_trace(x = ~x, y = ~y, type = "scatter", mode = "lines+markers") %>%
add_trace(x = ~x, y = ~z, type = "scatter", mode = "lines+markers") %>%
layout(xaxis = list(tickvals = 1:24, ticktext = paste0(1:24, "h")))
O que significa um erro “Não é possível encontrar o símbolo” ou “Não é possível resolver o símbolo”?