 So the package that we're going to look at in this lesson is GATFLY. It's a beautiful plotting library which is data aware. In other words, not only can you pass actual values in the form of arrays or matrices to be plotted, but you can also use data frames. So what are we going to get up to? We're going to just have a quick introduction to GATFLY. We're going to do a few simple plots just passing our own values. We're going to add some layers to our plots just building up various layers to add more information to our plots. We're going to use themes to change various aspects of themes. We're going to add titles and axes labels. I'm going to show you how to save plots. And then we're going to import a data frame, some database values. And with that we're going to do some box and whisker plots, histograms, violin plots, my favorite QQ plots, some scatter plots and vertical and horizontal lines. And finally we'll just do a few more examples just to showcase a few of the other things that GATFLY can do. So we start off by just importing the package there by using GATFLY. If you have not imported it, remember we are still here in Julia Box. If you haven't imported it, just use the pkg.add and then GATFLY. So simple plots. There we go. I'm going to create two arrays, column vectors if you want, of 100 values each. I'm going to add those values to two computer variables. And I'm going to call them x-vals and y-vals. You can call them whatever you want. And RAND is one of the built-in functions of Julia. And it's going to generate random values between 0 and 1. And I want 100 of those. I'm going to have 100 values between 0 and 1, inclusive, and 100 values between 0 and 1 for my second vector. And now we're going to invoke plot. So plot is a function of GATFLY. We've imported the GATFLY package, so we can just use the function plot. And I'm going to see on the x-axis equals my 100 x-values, please. And for every x-value plot, it's corresponding y-value on the y-axis. Now these x and y and its values, they are referred to as the aesthetics of the plot. Now let's run that. First time that we run that, it's going to take a while. We have not, of course, run this first block just to generate those numbers. There they are. We see the array of values. And let's do this bit. Let's plot those. It's going to take a while before it generates on the Julia Box side that plot for us. And it will render it to the screen. Let's have a look. And there we go, our first plot. We see the x-axis. We see the x-axis, the y-axis. And you see all those 100 dots, each with its own x and y coordinate. Now the x and y, as I mentioned, those are the aesthetics. And there's a geometry. And the geometry in this instance, it was a scatter plot, is our points. But GATFLY can infer the fact that we're using this geometry, which we call points. And you'll see here, I didn't even have to add it. I just said x and y. But I can add the geometry by the specifying it. And the key was there, geom for geometry dot point. And if I were to execute that line of code, we'll get exactly the same plot. If I hover over the plot, you see I can zoom in and zoom out of the plot. Very nice. And these grid lines appear on my plot as well. So we can not only pass the actual values, but we can perform some function on these values as well. And yeah, I'm going to sort my x values and then sort the 100 y values before I plot them. Of course, I've lost my initial correlation between the two. But just to show you that I can sort from, sort to go from the smallest to the largest value, from the smallest to the largest. Dot is now going to have a different x, y coordinate, but they are sorted from minimum to maximum value. So I can pass these functions to the values, to these aesthetics before I actually plot them. Now, let's create another set of values. I'm going to call them x values 2 and y values 2. And again, just a random function, random variables between 0 and 1 inclusive. And I want 15 of each. And then I'm going to plot x as x values 2. Why is the y values 2? I want a geometry dot point, but I add a second geometry. I want a line geometry as well. So both of these geometries are going to refer to these, the set of, of aesthetics. So let's run that block of code. And there we go. So it's done the points for me exactly the same points as we've had before. And it adds a line to them. Now, instead of just connecting the dots, I can, I can do this. Another geometry called John dot smooth. And so that is just going to create this almost polynomial graph in between representing all of these plots. And it is not clearly stated on the get fly website, but it does take a few methods. In this instance, instead of this polynomial line, which is just the default, I'm going to specify a linear model. Now look what happens here. It's going to use these squares, at least I think it does. And it's going to plot this linear model line for representing this, all these data points as this single line. So that is our introduction. And just to show you how get fly works, that it uses these aesthetics X and Y. Later on, we get we can to see that we can add third dimensions of data on two dimensional plots. Get fly is inherently a two dimensional plotting package, but we can add a third dimension by using color. If we introduce color, we can actually plot three dimensions on a graph or these three dimensions worth of data on a plot. We see the geometry and we can add more than one geometry on to each of these plots. In the next section, we're going to add some layers and play with themes and we can add a lot more to these plots.