I do not know what your data look like, so I invented some.
I would reshape the data so the column names become one column and the values are in one column.
I used several print statements in the code to show how the data change during the process.
#Invent some data
DF <- data.frame(AA = 1:4, BB = 2:5, CC = 3:6, DD = 4:7)
row.names(DF) = c("alpha", "beta", "gamma", "delta")
DF
#> AA BB CC DD
#> alpha 1 2 3 4
#> beta 2 3 4 5
#> gamma 3 4 5 6
#> delta 4 5 6 7
library(tibble)
library(ggplot2)
library(tidyr)
DF <- rownames_to_column(DF, var = "Xval")
DF
#> Xval AA BB CC DD
#> 1 alpha 1 2 3 4
#> 2 beta 2 3 4 5
#> 3 gamma 3 4 5 6
#> 4 delta 4 5 6 7
DF <- DF %>% pivot_longer(cols = AA:DD, names_to = "Source", values_to = "Value")
DF
#> # A tibble: 16 x 3
#> Xval Source Value
#> <chr> <chr> <int>
#> 1 alpha AA 1
#> 2 alpha BB 2
#> 3 alpha CC 3
#> 4 alpha DD 4
#> 5 beta AA 2
#> 6 beta BB 3
#> 7 beta CC 4
#> 8 beta DD 5
#> 9 gamma AA 3
#> 10 gamma BB 4
#> 11 gamma CC 5
#> 12 gamma DD 6
#> 13 delta AA 4
#> 14 delta BB 5
#> 15 delta CC 6
#> 16 delta DD 7
#Set the order of the Xval values if you do not want them in alphabetical order
DF$Xval <- factor(DF$Xval, levels = c("alpha", "beta", "gamma", "delta"))
ggplot(DF, aes(Xval, Value, color = Source, group = Source)) +
geom_point() + geom_line()

Created on 2020-07-31 by the reprex package (v0.3.0)