To filter the data to the reasonable number of lines, we can use dplyr's filter() here.

But, it seems not so handy. For example, what if we want to change the threshold in predicate (max(value) > 20) and highlight other series as well?
It's a bit tiresome to type all the code above again every time we replace 20 with some other value.

Besides, considering one of the main purposes of visualization is to get the overview of a data, it may not be good to simply filter out the unmatched data because the plot loose its context then.

Geoms

gghighlight() can highlight almost every geoms. Here are some examples.

Bar

gghighlight() can highlight bars.

Are you wondering if this is really highlighted? Yes, it is.
But, the unhighlighted bars are all overwritten by the highlighted bars.
This seems not so useful, until you see the fecetted version:

p + facet_wrap(~ Species)

Point

As is explained in Anatomy of gghighlight, lines and points typically have different semantics (group-wise or not). But, in most cases, you don't need to be careful about the difference with gghighlight() because it automatically picks the right way of calculation.