top of page

Line Graph with Two IVs


ds = dataset you are currently using.

DV = dependent variable of interest

IV = independent variable of interest


Subject = name of subject number column 

XYXY = dummy name for a variable, matrix, or data frame into which you are moving information.

2x2 line charts require several steps. For ease of comprehension I will list them, and then list the code below.

(Step 1) Make sure your IVs are set to be "factors". Load "psych" library, and then use the "describeBy" function to extract means for each condition

(Step 2) "describeBy" combines the two IVs names. Split them and assign the names you would like to use in your figure

(Step 3) Create the Figure

Also note: The names you give to your levels of your IV will appear on the Figure. You should make them appropriate in your data set before starting.

___Step 1_____________________

ds$IV1 <- as.factor(ds$IV1)

ds$IV2 <- as.factor(ds$IV2)



group = ds$IV1 : ds$IV2,
mat = TRUE,
type = 2,
digits = 2)


___Step 2_____________________

XYXY$IV1_Name <-sub("[:].*", "", XYXY$group1)   
XYXY$IV2_Name <-sub(".*[:]", "", XYXY$group1)


(a) "IV1_Name" is the name you want to give to the IV. It will appear on the figure

(b) group1 is the name that "describeBy" will give to the column with your IVs

(c)   "[:].*", ""    is an example of regular expression. It means "take everything after the colon and replace it with nothing." 


___Step 3_____________________


ggplot(XYXY, aes(group=IV1_Name, y=mean, x=IV2_Name))+


geom_point(aes(shape=IV1_Name), size = 3)+


geom_errorbar(aes (ymin = mean - se, ymax = mean + se, width = .2))+


ylab("Dependent Variable Description")



(a) "mean" and "se" should be column names in XYXY. If you renamed them, then change accordingly.

(b) "geom_line(aes(linetype=..." forces the lines to vary by group, and "geom_point(aes(shape=..." forces the dot markers to vary by group. Omit the "aes(XXX)" portion as desired. Alternatively, you might set "aes(color=IV1_Name)" in either to cause the difference to be in terms of color.

(c) "coord_cartesian" allows you to set the minimum and maximum values of the y-axis.

(d) "ylab" allows you to add a description of your DV, in place of the column name from XYXY


bottom of page