class: inverse, center, middle # A figure is worth a thousand words ## Data visualization in second language research ### Guilherme D. Garcia <img src="ncl.png" alt="Newcastle University" style="width:7%"> #### Newcastle University <br> #### University of Southampton, March 2022 --- class: inverse, center, middle # Why figures matter --- # Why figures matter .pull-left[ ## Research stages 1. To <span style="color:FireBrick">***explore***</span> our own data 2. To <span style="color:FireBrick">***define***</span> the appropriate analysis 3. To <span style="color:FireBrick">***communicate***</span> our findings effectively ## Rules of thumb - Be visually clear - Don't oversimplify the data - Find the "sweet spot" of information content ] .pull-right[ <img src="garcia_slides_cllear_files/figure-html/unnamed-chunk-1-1.svg" style="display: block; margin: auto;" /> ] --- # Our goal today .pull-left[ - Go over a simple study on **feedback** - Explore patterns - Assess the stats - Report findings ## Files - Slides at <a href = "http://guilhermegarcia.github.io" target = "_blank">`guilhermegarcia.github.io`</a> - We will use some hypothetical data - Download the data at <a href = "http://osf.io/hpt4g" target = "_blank">`http://osf.io/hpt4g`</a> - File name: `dataFiles.zip` - Our data `\(\rightarrow\)` `feedback.csv` ] .pull-right[ <p style="text-align:center;"><img src="cover.jpeg" alt="Data viz and analysis in SLR" style="width:50%"></p> ] --- # Our data ## Some data wrangling first - Once we load our data, we can see it has a **wide format** - That means a single variable (task item) spans across **multiple columns** - This is a problem for plotting and analyzing the data <div style="border: 1px solid #ddd; padding: 0px; overflow-y: scroll; height:200px; overflow-x: scroll; width:900px; margin-left: auto; margin-right: auto;" class="table"><table> <caption>Wide format</caption> <thead> <tr> <th style="text-align:left;position: sticky; top:0; background-color: #FFFFFF;"> ID </th> <th style="text-align:left;position: sticky; top:0; background-color: #FFFFFF;"> L1 </th> <th style="text-align:right;position: sticky; top:0; background-color: #FFFFFF;"> Age </th> <th style="text-align:right;position: sticky; top:0; background-color: #FFFFFF;"> AgeExp </th> <th style="text-align:left;position: sticky; top:0; background-color: #FFFFFF;"> Sex </th> <th style="text-align:left;position: sticky; top:0; background-color: #FFFFFF;"> Feedback </th> <th style="text-align:right;position: sticky; top:0; background-color: #FFFFFF;"> Hours </th> <th style="text-align:right;position: sticky; top:0; background-color: #FFFFFF;"> task_A1 </th> <th style="text-align:right;position: sticky; top:0; background-color: #FFFFFF;"> task_A2 </th> <th style="text-align:right;position: sticky; top:0; background-color: #FFFFFF;"> task_A3 </th> <th style="text-align:right;position: sticky; top:0; background-color: #FFFFFF;"> task_A4 </th> <th style="text-align:right;position: sticky; top:0; background-color: #FFFFFF;"> task_A5 </th> <th style="text-align:right;position: sticky; top:0; background-color: #FFFFFF;"> task_B1 </th> <th style="text-align:right;position: sticky; top:0; background-color: #FFFFFF;"> task_B2 </th> <th style="text-align:right;position: sticky; top:0; background-color: #FFFFFF;"> task_B3 </th> <th style="text-align:right;position: sticky; top:0; background-color: #FFFFFF;"> task_B4 </th> <th style="text-align:right;position: sticky; top:0; background-color: #FFFFFF;"> task_B5 </th> </tr> </thead> <tbody> <tr> <td style="text-align:left;"> Learner_1 </td> <td style="text-align:left;"> Japanese </td> <td style="text-align:right;"> 38 </td> <td style="text-align:right;"> 9 </td> <td style="text-align:left;"> Female </td> <td style="text-align:left;"> Explicit correction </td> <td style="text-align:right;"> 8.1 </td> <td style="text-align:right;"> 71.0 </td> <td style="text-align:right;"> 61.5 </td> <td style="text-align:right;"> 62.8 </td> <td style="text-align:right;"> 77.5 </td> <td style="text-align:right;"> 83.5 </td> <td style="text-align:right;"> 47.0 </td> <td style="text-align:right;"> 72.2 </td> <td style="text-align:right;"> 68.2 </td> <td style="text-align:right;"> 72.9 </td> <td style="text-align:right;"> 78.3 </td> </tr> <tr> <td style="text-align:left;"> Learner_2 </td> <td style="text-align:left;"> Japanese </td> <td style="text-align:right;"> 32 </td> <td style="text-align:right;"> 10 </td> <td style="text-align:left;"> Female </td> <td style="text-align:left;"> Explicit correction </td> <td style="text-align:right;"> 10.6 </td> <td style="text-align:right;"> 65.3 </td> <td style="text-align:right;"> 77.2 </td> <td style="text-align:right;"> 80.4 </td> <td style="text-align:right;"> 85.7 </td> <td style="text-align:right;"> 80.3 </td> <td style="text-align:right;"> 73.1 </td> <td style="text-align:right;"> 67.9 </td> <td style="text-align:right;"> 70.8 </td> <td style="text-align:right;"> 83.3 </td> <td style="text-align:right;"> 94.0 </td> </tr> </tbody> </table></div> - What we need is a table where each column represents a variable (`tidy format`) - We can easily accomplish that using the `pivot_longer()` function in R from the <mark>`tidyverse`</mark> package --- # Our tidy data ```r dLong = d %>% * pivot_longer(names_to = "Task", * values_to = "Score", * cols = task_A1:task_B5) %>% mutate(Task = str_sub(Task, start = -2L, end = -1L ), Item = str_sub(Task, start = -1L, end = -1L), Task = str_sub(Task, start = -2L, end = -2L)) %>% select(ID:Task, Item, Score) ``` <table> <caption>Long format (tidy data)</caption> <thead> <tr> <th style="text-align:left;"> ID </th> <th style="text-align:left;"> L1 </th> <th style="text-align:right;"> Age </th> <th style="text-align:right;"> AgeExp </th> <th style="text-align:left;"> Sex </th> <th style="text-align:left;"> Feedback </th> <th style="text-align:right;"> Hours </th> <th style="text-align:left;"> Task </th> <th style="text-align:left;"> Item </th> <th style="text-align:right;"> Score </th> </tr> </thead> <tbody> <tr> <td style="text-align:left;"> Learner_1 </td> <td style="text-align:left;"> Japanese </td> <td style="text-align:right;"> 38 </td> <td style="text-align:right;"> 9 </td> <td style="text-align:left;"> Female </td> <td style="text-align:left;"> Explicit correction </td> <td style="text-align:right;"> 8.1 </td> <td style="text-align:left;"> A </td> <td style="text-align:left;"> 1 </td> <td style="text-align:right;"> 71.0 </td> </tr> <tr> <td style="text-align:left;"> Learner_1 </td> <td style="text-align:left;"> Japanese </td> <td style="text-align:right;"> 38 </td> <td style="text-align:right;"> 9 </td> <td style="text-align:left;"> Female </td> <td style="text-align:left;"> Explicit correction </td> <td style="text-align:right;"> 8.1 </td> <td style="text-align:left;"> A </td> <td style="text-align:left;"> 2 </td> <td style="text-align:right;"> 61.5 </td> </tr> <tr> <td style="text-align:left;"> Learner_1 </td> <td style="text-align:left;"> Japanese </td> <td style="text-align:right;"> 38 </td> <td style="text-align:right;"> 9 </td> <td style="text-align:left;"> Female </td> <td style="text-align:left;"> Explicit correction </td> <td style="text-align:right;"> 8.1 </td> <td style="text-align:left;"> A </td> <td style="text-align:left;"> 3 </td> <td style="text-align:right;"> 62.8 </td> </tr> <tr> <td style="text-align:left;"> Learner_1 </td> <td style="text-align:left;"> Japanese </td> <td style="text-align:right;"> 38 </td> <td style="text-align:right;"> 9 </td> <td style="text-align:left;"> Female </td> <td style="text-align:left;"> Explicit correction </td> <td style="text-align:right;"> 8.1 </td> <td style="text-align:left;"> A </td> <td style="text-align:left;"> 4 </td> <td style="text-align:right;"> 77.5 </td> </tr> <tr> <td style="text-align:left;"> Learner_1 </td> <td style="text-align:left;"> Japanese </td> <td style="text-align:right;"> 38 </td> <td style="text-align:right;"> 9 </td> <td style="text-align:left;"> Female </td> <td style="text-align:left;"> Explicit correction </td> <td style="text-align:right;"> 8.1 </td> <td style="text-align:left;"> A </td> <td style="text-align:left;"> 5 </td> <td style="text-align:right;"> 83.5 </td> </tr> </tbody> </table> --- # Data structure .pull-left[ - 2 tasks, each with 5 items - Each item has a score ] .pull-right[ - 60 learners of English L2 - 3 native languages (Japanese, Italian, German) ] ## Our focus .pull-left[ - Is there an effect of `[var]` on `Score`? - `[var]` needs to be theoretically informed ] .pull-right[ - **`L1`, `Hours`, and `Feedback`** - They will be our **main predictors** ] <br> <table> <caption>Long format (tidy data)</caption> <thead> <tr> <th style="text-align:left;"> ID </th> <th style="text-align:left;"> L1 </th> <th style="text-align:right;"> Age </th> <th style="text-align:right;"> AgeExp </th> <th style="text-align:left;"> Sex </th> <th style="text-align:left;"> Feedback </th> <th style="text-align:right;"> Hours </th> <th style="text-align:left;"> Task </th> <th style="text-align:left;"> Item </th> <th style="text-align:right;"> Score </th> </tr> </thead> <tbody> <tr> <td style="text-align:left;"> Learner_1 </td> <td style="text-align:left;"> Japanese </td> <td style="text-align:right;"> 38 </td> <td style="text-align:right;"> 9 </td> <td style="text-align:left;"> Female </td> <td style="text-align:left;"> Explicit correction </td> <td style="text-align:right;"> 8.1 </td> <td style="text-align:left;"> A </td> <td style="text-align:left;"> 1 </td> <td style="text-align:right;"> 71.0 </td> </tr> <tr> <td style="text-align:left;"> Learner_1 </td> <td style="text-align:left;"> Japanese </td> <td style="text-align:right;"> 38 </td> <td style="text-align:right;"> 9 </td> <td style="text-align:left;"> Female </td> <td style="text-align:left;"> Explicit correction </td> <td style="text-align:right;"> 8.1 </td> <td style="text-align:left;"> A </td> <td style="text-align:left;"> 2 </td> <td style="text-align:right;"> 61.5 </td> </tr> <tr> <td style="text-align:left;"> Learner_1 </td> <td style="text-align:left;"> Japanese </td> <td style="text-align:right;"> 38 </td> <td style="text-align:right;"> 9 </td> <td style="text-align:left;"> Female </td> <td style="text-align:left;"> Explicit correction </td> <td style="text-align:right;"> 8.1 </td> <td style="text-align:left;"> A </td> <td style="text-align:left;"> 3 </td> <td style="text-align:right;"> 62.8 </td> </tr> </tbody> </table> --- class: inverse, center, middle # Efficiency in data visualization --- # Data visualization 😞 - Here's an **inefficient** figure: only one variable is shown (`Feedback`) - Only averages are displayed; no uncertainty around the mean (error bars) .pull-left[ <img src="garcia_slides_cllear_files/figure-html/unnamed-chunk-6-1.svg" style="display: block; margin: auto;" /> ] .pull-right[ <img src="garcia_slides_cllear_files/figure-html/unnamed-chunk-7-1.svg" style="display: block; margin: auto;" /> ] --- # Data visualization 😕 - This is better, but notice how `Feedback` looks drastically different now - Here we're showing the standard errors (SEs) from the means .pull-left[ <img src="garcia_slides_cllear_files/figure-html/unnamed-chunk-8-1.svg" style="display: block; margin: auto;" /> ] .pull-right[ <img src="garcia_slides_cllear_files/figure-html/unnamed-chunk-9-1.svg" style="display: block; margin: auto;" /> ] --- # Data visualization 🥰 - This is even better, as box plots give us more information - We now have medians and data dispersion as well as means and SEs .pull-left[ <img src="garcia_slides_cllear_files/figure-html/unnamed-chunk-10-1.svg" style="display: block; margin: auto;" /> ] .pull-right[ <img src="garcia_slides_cllear_files/figure-html/unnamed-chunk-11-1.svg" style="display: block; margin: auto;" /> ] --- # Data visualization 😍 - Now we also have information on `Task` (no apparent interaction with `Feedback`) - This allows us to inspect the effects of two variables on `Score` .pull-left[ <img src="garcia_slides_cllear_files/figure-html/unnamed-chunk-12-1.svg" style="display: block; margin: auto;" /> ] .pull-right[ <img src="garcia_slides_cllear_files/figure-html/unnamed-chunk-13-1.svg" style="display: block; margin: auto;" /> ] --- # Data visualization 🤯 - Now we add information on the `L1` (means): no clear effect (text now hides means and SEs) - Total variables: `Score ~ Feedback + Task + L1` (all predictors are **categorical** here) .pull-left[ <img src="garcia_slides_cllear_files/figure-html/unnamed-chunk-14-1.svg" style="display: block; margin: auto;" /> ] .pull-right[ <img src="garcia_slides_cllear_files/figure-html/unnamed-chunk-15-1.svg" style="display: block; margin: auto;" /> ] --- # Data visualization 🤒 - Here we see individual data points (too much information) - Total variables: `Score ~ Feedback + Task + L1 + ID` .pull-left[ <img src="garcia_slides_cllear_files/figure-html/unnamed-chunk-16-1.svg" style="display: block; margin: auto;" /> ] .pull-right[ <img src="garcia_slides_cllear_files/figure-html/unnamed-chunk-17-1.svg" style="display: block; margin: auto;" /> ] --- class: inverse, center, middle # Which variables to focus on? --- # Selecting variables - We can use **classification trees** as *one* method to check which variables matter overall - `Score ~ L1 + Sex + Hours + Feedback + Task` using `ctree()` from <mark>`party`</mark> <img src="garcia_slides_cllear_files/figure-html/unnamed-chunk-18-1.svg" style="display: block; margin: auto;" /> --- # Zooming in on our key variables - How does `Hours` affect `Score`? More hours `\(\rightarrow\)` better scores - What if we add `Feedback`? `Recast` seems to be better than `Explicit correction`, but **not always** .pull-left[ <img src="garcia_slides_cllear_files/figure-html/unnamed-chunk-19-1.svg" style="display: block; margin: auto;" /> ] .pull-right[ <img src="garcia_slides_cllear_files/figure-html/unnamed-chunk-20-1.svg" style="display: block; margin: auto;" /> ] - Now we have a better sense of what to include in our analysis ??? - Notice that points aren't colored - That would be too cluttered; no clear visual separation with this data --- class: inverse, center, middle # Statistical analysis --- # Running our mixed-effects model - Our tree suggests that `Hours` and `Feedback` matter, so let's focus on them - Let's run our statistical model now using `lmer()` from <mark>`lme4`</mark> - Model: **`Score ~ Hours * Feedback + (1 | ID) + (1 | Item)`** <table style="border-collapse:collapse; border:none;"> <tr> <th style="border-top: double; text-align:center; font-style:normal; font-weight:bold; padding:0.2cm; text-align:left; "> </th> <th colspan="3" style="border-top: double; text-align:center; font-style:normal; font-weight:bold; padding:0.2cm; ">Score</th> </tr> <tr> <td style=" text-align:center; border-bottom:1px solid; font-style:italic; font-weight:normal; text-align:left; ">Predictors</td> <td style=" text-align:center; border-bottom:1px solid; font-style:italic; font-weight:normal; ">Estimates</td> <td style=" text-align:center; border-bottom:1px solid; font-style:italic; font-weight:normal; ">CI</td> <td style=" text-align:center; border-bottom:1px solid; font-style:italic; font-weight:normal; ">p</td> </tr> <tr> <td style=" padding:0.2cm; text-align:left; vertical-align:top; text-align:left; ">(Intercept)</td> <td style=" padding:0.2cm; text-align:left; vertical-align:top; text-align:center; ">60.28</td> <td style=" padding:0.2cm; text-align:left; vertical-align:top; text-align:center; ">51.75 – 68.80</td> <td style=" padding:0.2cm; text-align:left; vertical-align:top; text-align:center; "><strong><0.001</strong></td> </tr> <tr> <td style=" padding:0.2cm; text-align:left; vertical-align:top; text-align:left; ">Hours</td> <td style=" padding:0.2cm; text-align:left; vertical-align:top; text-align:center; ">1.27</td> <td style=" padding:0.2cm; text-align:left; vertical-align:top; text-align:center; ">0.79 – 1.76</td> <td style=" padding:0.2cm; text-align:left; vertical-align:top; text-align:center; "><strong><0.001</strong></td> </tr> <tr> <td style=" padding:0.2cm; text-align:left; vertical-align:top; text-align:left; ">Feedback [Recast]</td> <td style=" padding:0.2cm; text-align:left; vertical-align:top; text-align:center; ">9.28</td> <td style=" padding:0.2cm; text-align:left; vertical-align:top; text-align:center; ">2.60 – 15.97</td> <td style=" padding:0.2cm; text-align:left; vertical-align:top; text-align:center; "><strong>0.007</strong></td> </tr> <tr> <td style=" padding:0.2cm; text-align:left; vertical-align:top; text-align:left; ">Hours * Feedback [Recast]</td> <td style=" padding:0.2cm; text-align:left; vertical-align:top; text-align:center; ">-0.65</td> <td style=" padding:0.2cm; text-align:left; vertical-align:top; text-align:center; ">-1.29 – -0.02</td> <td style=" padding:0.2cm; text-align:left; vertical-align:top; text-align:center; "><strong>0.042</strong></td> </tr> <tr> <td style=" padding:0.2cm; text-align:left; vertical-align:top; text-align:left; padding-top:0.1cm; padding-bottom:0.1cm; border-top:1px solid;">Observations</td> <td style=" padding:0.2cm; text-align:left; vertical-align:top; padding-top:0.1cm; padding-bottom:0.1cm; text-align:left; border-top:1px solid;" colspan="3">600</td> </tr> <tr> <td style=" padding:0.2cm; text-align:left; vertical-align:top; text-align:left; padding-top:0.1cm; padding-bottom:0.1cm;">Marginal R<sup>2</sup> / Conditional R<sup>2</sup></td> <td style=" padding:0.2cm; text-align:left; vertical-align:top; padding-top:0.1cm; padding-bottom:0.1cm; text-align:left;" colspan="3">0.075 / 0.725</td> </tr> </table> <br> - We have significant effects for all our terms, **BUT** <span style = "color:red">**can't**</span> directly compare `Hours` and `Feedback` --- # Running our mixed-effects model - Here's the same model with both variables on the same scale - We can easily rescale variables using `rescale()` from <mark>`arm`</mark> <table style="border-collapse:collapse; border:none;"> <tr> <th style="border-top: double; text-align:center; font-style:normal; font-weight:bold; padding:0.2cm; text-align:left; "> </th> <th colspan="3" style="border-top: double; text-align:center; font-style:normal; font-weight:bold; padding:0.2cm; ">Score</th> </tr> <tr> <td style=" text-align:center; border-bottom:1px solid; font-style:italic; font-weight:normal; text-align:left; ">Predictors</td> <td style=" text-align:center; border-bottom:1px solid; font-style:italic; font-weight:normal; ">Estimates</td> <td style=" text-align:center; border-bottom:1px solid; font-style:italic; font-weight:normal; ">CI</td> <td style=" text-align:center; border-bottom:1px solid; font-style:italic; font-weight:normal; ">p</td> </tr> <tr> <td style=" padding:0.2cm; text-align:left; vertical-align:top; text-align:left; ">(Intercept)</td> <td style=" padding:0.2cm; text-align:left; vertical-align:top; text-align:center; ">73.42</td> <td style=" padding:0.2cm; text-align:left; vertical-align:top; text-align:center; ">66.45 – 80.38</td> <td style=" padding:0.2cm; text-align:left; vertical-align:top; text-align:center; "><strong><0.001</strong></td> </tr> <tr> <td style=" padding:0.2cm; text-align:left; vertical-align:top; text-align:left; ">Hours (std)</td> <td style=" padding:0.2cm; text-align:left; vertical-align:top; text-align:center; ">6.47</td> <td style=" padding:0.2cm; text-align:left; vertical-align:top; text-align:center; ">4.00 – 8.95</td> <td style=" padding:0.2cm; text-align:left; vertical-align:top; text-align:center; "><strong><0.001</strong></td> </tr> <tr> <td style=" padding:0.2cm; text-align:left; vertical-align:top; text-align:left; ">Feedback [Recast]</td> <td style=" padding:0.2cm; text-align:left; vertical-align:top; text-align:center; ">2.52</td> <td style=" padding:0.2cm; text-align:left; vertical-align:top; text-align:center; ">0.94 – 4.10</td> <td style=" padding:0.2cm; text-align:left; vertical-align:top; text-align:center; "><strong>0.002</strong></td> </tr> <tr> <td style=" padding:0.2cm; text-align:left; vertical-align:top; text-align:left; ">Hours (std) * Feedback<br>[Recast]</td> <td style=" padding:0.2cm; text-align:left; vertical-align:top; text-align:center; ">-3.33</td> <td style=" padding:0.2cm; text-align:left; vertical-align:top; text-align:center; ">-6.54 – -0.12</td> <td style=" padding:0.2cm; text-align:left; vertical-align:top; text-align:center; "><strong>0.042</strong></td> </tr> <tr> <td style=" padding:0.2cm; text-align:left; vertical-align:top; text-align:left; padding-top:0.1cm; padding-bottom:0.1cm; border-top:1px solid;">Observations</td> <td style=" padding:0.2cm; text-align:left; vertical-align:top; padding-top:0.1cm; padding-bottom:0.1cm; text-align:left; border-top:1px solid;" colspan="3">600</td> </tr> <tr> <td style=" padding:0.2cm; text-align:left; vertical-align:top; text-align:left; padding-top:0.1cm; padding-bottom:0.1cm;">Marginal R<sup>2</sup> / Conditional R<sup>2</sup></td> <td style=" padding:0.2cm; text-align:left; vertical-align:top; padding-top:0.1cm; padding-bottom:0.1cm; text-align:left;" colspan="3">0.075 / 0.725</td> </tr> </table> <br> - Now we see that `Hours` actually matters more than `Feedback` type --- # Visualizing the interaction - Back to our figure. Notice that each participant has 10 points in the figure (2 tasks `\(\times\)` 5 items) - It may be better if each point represents the *average* score of each participant across all 10 items <img src="garcia_slides_cllear_files/figure-html/unnamed-chunk-23-1.svg" style="display: block; margin: auto;" /> --- # Visualizing the interaction - Now, each point = grand average of each participant - Notice how participants' averages are clustered around our trend lines <img src="garcia_slides_cllear_files/figure-html/unnamed-chunk-24-1.svg" style="display: block; margin: auto;" /> --- # Visualizing our model output - It's very easy to plot our model with `plot_model()` from `sjPlot`: ```r *plot_model(model.std, show.values = T) + labs(title = NULL) + theme_classic() + theme(text = element_text(size = 20)) + geom_hline(yintercept = 0, linetype = "dashed") ``` <img src="garcia_slides_cllear_files/figure-html/unnamed-chunk-25-1.svg" style="display: block; margin: auto;" /> --- # Two key figures .pull-left[ - Our data: both variables of interest <img src="garcia_slides_cllear_files/figure-html/unnamed-chunk-26-1.svg" style="display: block; margin: auto;" /> ] .pull-right[ - Our model: estimates and confidence intervals <br> <img src="garcia_slides_cllear_files/figure-html/unnamed-chunk-27-1.svg" style="display: block; margin: auto;" /> ] --- class: inverse, center, middle # Summary --- # Take-home message 📝 - Figures help us and readers understand data patterns - This is especially true when examining **interactions** - They also provide an intuitive way to report model estimates ## Dos and Don'ts ❗️ - Maximize efficiency by balancing information and clarity - Have clear labels and remove anything that is *unnecessary* - Use colors and shapes to maximize **function** (or improve accessibility with `ggpattern`) - "Align" figures and statistical analysis: they should complement each other - Figures should always have **good resolution** --- class: inverse, center, middle # Extras: Bayes; interactive plots --- # Same model, but now using Bayes - Here, visualization is **even more important**, since estimates are distributions - The areas below show the **posterior distribution** of all estimates - Means and 95% highest density intervals (HDI) are also provided <br> <img src="garcia_slides_cllear_files/figure-html/unnamed-chunk-28-1.svg" style="display: block; margin: auto;" /> --- # Interactive figures - There are different options in R; <mark>`plotly`</mark> is a great one <div align = "center"> <iframe src="plotly.html" scrolling="no" seamless="seamless" align="center" frameBorder="0" height="400" width="60%"></iframe> </div> - This can be useful **if** interactivity serves a purpose --- class: inverse, center, middle # Thank you! ### Questions 💭 #### `guilhermegarcia.github.io/CLLEAR/garcia_slides_cllear`