 So the first thing that you might notice here is that despite having 131 observations in our data set, we're not seeing 131 points represented on our graph. And the reason for that is because our two variables here, number of members and number of items, only take on whole number of values. Okay, number of members represents the number of members in the household, number of items represents the number of items in the household. So you're only going to have whole numbers. You're not going to have one and a half people in a house or one and a half televisions. So consequently, there are not going to be any values, any points located at these kind of intermediate values. And the problem with this is that while there might be kind of higher concentrations or densities of values around certain coordinates, so maybe a lot of houses have four members and five items, we're not going to see how many households actually share those values because they're all kind of stacked one on top of the other. So fortunately, R has some kind of clever workarounds for this to where we can actually see the density kind of tease apart these different values around these coordinate pairs and gain more of that kind of nuance where see where the points are actually concentrating. So we're actually going to share three different methods for doing this beginning with jitter. So go ahead and create a new title header, call it jitter. And because we're going to be using the same kind of foundational code from from before, we'll just go ahead and copy that from above. Okay, and in order to get a jitter plot instead of a normal scatter plot, all you do is you change the geometric function here at the bottom, change geom point with geom jitter. And I'll explain to you what jitter is doing after we go ahead and run it. So you see when we run this that now we're seeing more of this kind of cloud point cloud effect. So what's happened is that this jitter function has introduced a little bit of randomness to the values in these points. Okay, so instead of having the kind of actual data represented of, you know, five and five, for instance, it's going to add just a little bit of randomness and allow this value to take on something like a 4.95 and a 5.25, let's say. Okay, the amount of randomness that's allowed is a default value. If you want to know what the default setting is, you can use the question mark geom jitter. Remember that this this question mark just pulls up the documentation for that function. If you're to run this, that documentation comes up here and it will tell you the default values. So if we go here now for looking at this width and height setting, this tells you the amount of vertical and horizontal jitter, okay, the randomness. And it says that if we don't specify this, this defaults to 40% of the resolution of the data. Okay, so this is allowing quite a bit of randomness to be added to the data. If you want to further constrain that, so this less jitter, so they're more tightly concentrated around their true values, you can actually just add these additional optional arguments to further reign this in. Okay, the way that we would do this is to specify the width and the height. So I'll go ahead and set these instead of to 40%, we'll set these to 20%. So we'll run this again now with those further arguments. And now you can see that our points are not allowed to stray quite as far from their true values, and they're more tightly packed around the true values. So a quick side note here is that anytime you use the geom jitter function, this uses a random number generator to introduce that randomness. So the consequence of that is anytime you run this block of code, it's going to rerun that random number generator and create a slightly different set of values. You can see this kind of by, you know, picking out one set of points and just watching how they shift as you rerun. Okay, so this might not be ideal if you're presenting, for instance, a report or something where it's important that, you know, a person who's viewing your report, that their results look exactly the same as yours. So the way to work around that is to use the set seed function. What this does is basically takes the code below it, just make sure that it runs exactly the way it does the first time. So it kind of locks in the specific values that that random number generator creates. Okay, so inside the parentheses, you set the seed to a specific value, and then anytime you run this line of code, it's going to remember whatever the output is for that specific kind of seed setting. If later on you were doing this again, you could just create, you could use the same function with a different value, and it's going to kind of take a snapshot of the values created in that little section of code. Okay.