plotly / plotly/plotly.R

Layout displays blank or axis overlap using dual axis graphs

Open
#2,075 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
R
Stars
2.7k
Forks
641
PR merge metrics
No merged PRs in 30d

Description

I have two dual yaxis plots that I'm trying to combine with plotly's layout function. Both plots work fine independently, but when combined some aspects are blank and the axis of the two graphs are combined on one graph. What do I need to do to get them to display properly, one on top of the other.

#my data
times.winter<- data.frame(radtime = c(0.0,0.26,0.52,0.78,1.05,1.31,1.57,1.83,2.09,2.36,2.62,2.88,3.14,3.4,3.66,3.93,4.19,4.45,4.71,4.97,5.23,5.50,5.76,6.02), 
mean.Ts2 = c(11.2,11.0,10.8,10.7,10.5,10.4,10.3,10.4,10.5,10.7,11.0,11.3,11.6,11.9,12.1,12.1,12.2,12.3,12.3,12.3,12.1,12.0,11.8,11.7,11.5), 
activity = c(1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4), 
time = c(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23))

times.summer<- data.frame(radtime = c(0.0,0.26,0.52,0.78,1.05,1.31,1.57,1.83,2.09,2.36,2.62,2.88,3.14,3.4,3.66,3.93,4.19,4.45,4.71,4.97,5.23,5.50,5.76,6.02), 
mean.Ts2 = c(17.1,16.9,16.7,16.6,16.4,16.3,16.3,16.3,16.4,16.6,16.8,17.1,17.3,17.5,17.7,17.8,17.8,17.8,17.7,17.6,17.5,17.4,17.3,17.1), 
activity = c(1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4), 
time = c(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23))

library(plotly)
Fig1<-plot_ly(times.winter) %>%
  add_bars(x = ~Time, y = ~activity, type = "bar", 
           marker = list(color = c("#999999","#999999","#999999","#999999","#999999","#999999",
                         "#999999","#999999","#999999","#999999","#999999","#999999",
                         "#999999","#999999","#4b0092","#999999","#999999","#999999",
                         "#999999","#999999","#999999","#999999","#999999","#999999"))) %>%
  add_lines(x = ~Time, y = ~mean.Ts2, yaxis = "y2", line = list(color = c("#E69F00"), width = 6)) %>%
  layout(xaxis = list(title = "Time",tick0 =0, dtick = 6),
         yaxis = list(showline = TRUE, side = "left", 
                      title = "Number Active",
                      showgrid = F),  
         yaxis2 = list(showline = TRUE,
                       tickfont = list(color = "#E69F00"),
                       dtick=0.5,
                       overlaying = "y",
                       side = "right",
                       title = "Soil Temperature °C",
                       color = "#E69F00",
                       range = list(10,13),
                       showgrid = F), 
         showlegend = FALSE,  
         margin = list(pad = 0, b = 50, l = 50, r = 50))

Fig2<-plot_ly(times.summer) %>%
  add_bars(x = ~Time, y = ~activity, type = "bar", 
           marker = list(color = c("#999999","#999999","#999999","#999999","#999999","#999999","#999999",
                                   "#999999","#999999","#999999","#999999","#4b0092","#999999",
                                   "#999999","#999999","#999999","#999999","#999999","#999999",
                                   "#999999","#999999","#999999","#999999","#999999"))) %>%
  add_lines(x = ~Time, y = ~mean.Ts2, yaxis = "y2", line = list(color = c("#E69F00"), width = 6)) %>%
  layout(xaxis = list(title = "Time",tick0 =0, dtick = 6),
         yaxis = list(showline = TRUE, side = "left", 
                      title = "Number Active",
                      showgrid = F),  
         yaxis2 = list(showline = TRUE,
                       tickfont = list(color = "#E69F00"),
                       dtick=0.5,
                       overlaying = "y",
                       side = "right",
                       title = "Soil Temperature °C",
                       color = "#E69F00",
                       range = list(16,18),
                       showgrid = F), 
         showlegend = FALSE,  
         margin = list(pad = 0, b = 50, l = 50, r = 50))
library(processx)
Fig1
Fig2
fig <- subplot(Fig1, Fig2, nrows = 2) %>% 
  layout(title = '')
fig

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the Fig1 and Fig2 definitions, then inspect the subplot(Fig1, Fig2, nrows = 2) call and its final layout. Run the example as provided and compare the combined result with each standalone figure; done means both plots render one above the other with their dual y-axes kept distinct.

Written by the indexing model from the issue text.

Assessment

Tech stack
r
Domain
data-visualization
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
38/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.