使用R绘制所有刻度线

问题描述

我编写了一个代码,使用我的数据对散点图进行了细分。这是一张图:

enter image description here

这是x轴上的小时数。如您所见,并非全部都出现在x轴上。我怎样才能使24小时都处在轴心上?即使例如在数据框中没有23点的值,我也希望它在x轴上。该怎么做?

这是我的代码:

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)
}

解决方法

可以在layout中通过属性xaxis来实现,就像这样。滴答或中断可以通过tickvals进行设置,滴答标签可以通过ticktext进行设置。

在下面的可重现示例中,使用一些随机数据对此进行了说明:

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,mode = "lines+markers") %>% 
  layout(xaxis = list(tickvals = 1:24,ticktext = paste0(1:24,"h")))

enter image description here

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...