There's a few parts to your question:
to immediately solve your error, you want to add a group = 1 argument to the geom_line() function
1a. This is because geom line allows you to draw multiple 'groups' of lines, which are disconnected to each other. In this initial case, all the points are in the same group and you want to connect them all by lines.
To plot your multiple groups, you want to first orient your data in a long format, which will let you work with ggplot far easier. To do this you want to include a line like:
tidyr::pivot_longer(data, -Date, values_to = "value_on_date", names_to = "region")
which will generate a long format of your data
you can then alter your code to something like
df %>%
tidyr::pivot_longer(-Date, values_to = "value_on_date", names_to = "region") %>%
ggplot( aes(Date, value_on_date)) +
geom_line(aes(group = region)) +
labs(x="Date", y="Value on date")
which will then show 3 lines, one for each region.
2a. Notable things in that code, notice that in geom_line, the group is now inside an aes() call, this is since the group will now change with the data, rather than being a constant, this is a common structure across all of ggplot.
2b. another principle in ggplot is that each row should be 1 observation, with all the associated detail. With the data you showed, each row was actually 3 bits of data, one for each region, which won't work well with ggplot.
2c. you can then extend this, by adding stuff like colour = region, into the aes() argument, to show which region is which more clearly
Hope this helps, and as stefan
said, including some minimal reproducible example of how to get to your session state helps anyone looking to answer your question.