 Hi, my name is Max Korn. I'm the author of the forceplot package, which I'm here to present to you I'm an orthopedic surgeon and I'm also a researcher at Curran's case, dude And the forceplot package was one of my packages that generated during my PhD thesis and I'm very happy to be able to present it to you now So let's get started Let's put me to the side over there great So here's a very basic example We create a tibble data frame with some basic data to studies and some made-up values here Then we pipe that into the forceplot Where we provide the column name for the label text the mean the lower upper values So that we get this very basic not so pretty plot, but but it does the job so as you can see here and forceplot follows the Tideverse syntax With this is the native pipe That pipes into the forceplot the tibble and then you can easily specify the columns using the column names and you don't have to have quotation marks if we want to make it slightly prettier we can Pipe it forward once we've done the forceplot It doesn't actually plot until you call the print or the plot function on the returned object And You're able to Manipulate any way you want to so here you can see we add a header Which is study you can find it over there and now it's in the summary format. That means it Is output as bold We also can set some styles here we have Colour the lines as you can see they're no longer black and boring now they're slightly happier and blue If we move on to a more Complex example we have some metadata here forceplots are probably most popular in meta analysis, although I find them incredibly useful for any type of multiple Outcome output So here you can see that the same syntax You may notice that we no longer have The mean lower upper as we had there But this is because the metadata has the columns that are called mean lower and upper so it automatically maps them on to those values unless you Have provided something else here then here we have Some more columns for label text which is very common as you are all are familiar with so you can see we have the studies we have some Data the odds ratio and then we have the actual values here And we've here Specified a clip so that we don't have to see that all the these wide confidence interval can focus on the most important parts very important part when you Use plots is to try to focus on the message It's almost always impossible to show everything you need to choose what you want to focus your plot on You also see that we're now using the logarithmic scale as this is an odds ratio We have the same styles we had previously And here we have a slightly more complex header So this is two levels Two rows so you can see the first one here the stutter rows emptied and the study comes And then we have deaths and for the steroid group and deaths for placebo and then odds ratio So hopefully this is fairly intuitive. You could also just have two lines with this ad header And it would work just as well Now we also want to add some summary data And here's the comfort so we can append a row at the end both the ad header and a pen row Use the insert row Underneath so you can actually insert a row wherever you want Now here we add our estimates and then also the actual column values for for the text that we want to put here and We can Since this is a summary we set this simply to true and then we have this a nice diamond here as we're very familiar with from our meta analysis and We can make it even more readable here if you Have plenty of lines that can be hard to follow which studies especially if you have a very wide plot as we have here with Plenty of columns. We may want to have a zebra style to it So we can specify it here. This you can have several colors by default if you just provide a single color you will have White or no color at the first line and then you go to The color that you provided and then back and forth just a zebra But you can also provide three colors and it will rotate through those colors Then here we have added some lines and so automatically last lines here for the between the summary elements and the bottom line And that hopefully makes it slightly easier to see what what's important and what belongs where And you can also decorate the actual graph as we've done here. So we've put some Information here whether it's good or bad as sometimes it's not always obvious from the measurement and Here we can also If we find that the text is actually too small we can set the style of the text With the in this set style argument you have the text Graphic parameters You can see here we had also but we didn't provide the text parameter now with the text parameter We're able to Do some fancy stuff. So for instance here in the label you may wonder what what am I doing here? Well, it's very Simple basically I have a list of two. So every other element is applied to the list This is an empty graphical parameter. This is a slightly reddish and as you see this column and this column I have a red tint to them The same here for ticks And the labels so you can specify the size of The labels that you want you can increase them or do whatever you want with Sizes so that it's very important that your plots are readable to Your readers otherwise they get very frustrated You can find that we are also able to use expressions This was a feature I added early on perhaps not that useful. I Would recommend trying to keep with odds ratio hazard ratio, whatever estimate you're Using and not having a beta value. This is also slightly inconvenient from a Programmatic standpoint as this is the expression is hard to add attributes and Control for but if you want you can have math in your force plot as well now Usually the box size as you can see here the boxes kind of by default are It can be really small and they vary and they vary depending on the width of the confidence interval Sometimes I find that that's a little too much information. You already have the confidence intervals You don't want to have the reader thinking about what why is the box different size and I Usually set the box size to set size here as you see 0.2 in this case is always try a few different that seemed to work And then You have also the option of having multiple confidence intervals this data by the way is from one of my studies It's when we compared the swedish and Danish HIP cohorts One year after their surgery, so You can see here we have two Confidence intervals per row and to get that Output all you need to do is use the Deeplier group by argument and it will automatically generate for you this these groups And also automatically the legend Here's usually good to have a slightly smaller box size so that they don't overlap It's also something you need to usually try which one works in this example I've also added a slight new feature. So there's some functionality hidden That you're able to control the actual position of your text and the font and the italic and etc, etc And and as you see here the variable Header is aligned to the left here. We have aligned it at the center so you you can Add these helper functions if you look up to help there are several of these that can help you to manipulate the actual text And then we have the two here is how I defined the color of the boxes. So I've blew a red and they Have a border that is Dark gray and The colors added here. So as you can see blue red It's nice readable automatically falls into the legend just as expected. We've also added Vertices here so you can have vertices on your lines Sometimes you want to save the space up here. Don't want to have a legend there You have lots of empty space within the graph so you can move the legend into the graph here. We also Have a change of names Yes, it's the Swedish The Sweden and Denmark you see Swedes and Danes and the The legend position is specified here. So here you have the position in the graph. This is relative to the native Or that NPC position in the grid package So 0.85 is to the right zero is at the bottom and one is at the top and You have the background color and the border color That we can specify so that we can Make it nice and easy to spot Here you see that we've added some more features We have now two different styles of confidence intervals and So Sweden is the standard box while Denmark gets a Circle here and There are some built-in functions in the package and FP to draw normal confidence interval and the circle confidence interval And when you have two of these in groups, they will automatically render for each group And Here you see also that the colors that we Provide and you may have noticed that we have different line types for the confidence interval Here this is dashed. This is type 2 and this is solid Also a way to separate the groups and make it more visually easy to read And We can also modify the ticks so if you remember here This this is auto-generated ticks if we want to have our own ticks we can Do like this we define our sequence of ticks then we can Here specify an attribute of which labels were interested in or we want to output They see we pick every other one here and then You just provide that in the x-ticks argument here so It's hopefully more readable We can also help the reader by Adding these vertical extra lines We have the zero line here, which is strong and easy to find and then you have these two Or three lines here, which we have specified here now we do that in the decorate graph helper function Sometimes you have a non-inferior to study then it can be useful to have a span so here for instance we set Area between the zero point zero twenty five Round zero zero so so there's not a single line for the zero, but it's actually a box here Although it mostly perhaps looks like two lines practices the box and Then you have also the option of generating your For example directly from a model sometimes You have generated your own Model and you want to quickly have a look at it Here's an example we Create some data we add Some column labels for the columns that we've generated as x1 gets first variable x2 second X3 I've left without any label just to show you how it appears here. So here you can see The label appears here automatically and this one has the column name and then we Just use the rms function this case for building a cox and Here's the cox regression. We piped that into the G reg force plot regression object function which converts this model into a full force plot and then you can Do all the stuff that I've already shown you how to do you can add the colors and the zebra style and all of that Good to know is the package is Currently as I'm recording this at the version 3.11 and I use semantic versioning. So whenever I change the first number this one Have a lookout for any breaking changes that may break your code Hopefully I won't be doing many of those but sometimes you realize that you've done a Bad choice of design in the beginning and you want to go back and change And so yeah, that's what I indicate with the major version minor version. I've added new features Patch just fixed bugs. So the last number And that's it. Thank you. Hope The force is clear now for you guys. So good luck and thank you