Search code examples
rplotlysubplotflexdashboardgauge

How to plot plotly gauge charts next to each other?


It seems like plotly gauge charts are not compatible with subplot because I end up with two gauge charts on top of each other.

library(plotly)

fig1 <- plot_ly(
  domain = list(x = c(0, 1), y = c(0, 1)),
  value = 270,
  title = list(text = "Speed"),
  type = "indicator",
  mode = "gauge+number") 
fig1 <- fig1 %>%
  layout(margin = list(l=20,r=30))

fig1

fig2 <- plot_ly(
  domain = list(x = c(0, 1), y = c(0, 1)),
  value = 50,
  title = list(text = "Speed"),
  type = "indicator",
  mode = "gauge+number") 
fig2 <- fig2 %>%
  layout(margin = list(l=20,r=30))

fig2

fig <- subplot(fig1,fig2)
fig

Solution

  • The x and y values defined in the domain is overriding any other layout options.

    Use the x and y definitions to specify the gauge locations:

    library(plotly)
    
    fig1 <- plot_ly(
      domain = list(x = c(0, 0.45), y = c(0, 1)),
      value = 270,
      title = list(text = "Speed"),
      type = "indicator",
      mode = "gauge+number") 
    fig1 <- fig1 %>% layout(margin = list(l=20,r=30))
    
    fig2 <- plot_ly(
      domain = list(x = c(0.55, 1), y = c(0, 1)),
      value = 50,
      title = list(text = "Speed"),
      type = "indicator",
      mode = "gauge+number") 
    fig2 <- fig2 %>% layout(margin = list(l=20,r=30))
    
    fig <- subplot(fig1, fig2)
    fig
    

    enter image description here