The adapted "gnuplot only" version for your case might look like this.
fcol is the filter column number, myKey your keyword, and dcol the data column number. It's not clear to me whether you want 3 lines in 1 graph, or 3 lines in 3 graphs on 1 canvas (multiplot, like example below), or the graph in 1 file on disk or maybe distributed on 3 files on disk.
Code:
### split data by keyword for each plot
reset session
$Data <<EOD
X Axis Plot Y Axis
2000 plot1 1.2
2000 plot2 4.6
2000 plot3 5.7
3000 plot1 5.8
3000 plot2 7.5
3000 plot3 8.3
EOD
myFilter(fcol,myKey,dcol) = strcol(fcol) eq myKey ? column(dcol) : NaN
set datafile missing NaN
set key top left
set multiplot layout 3,1
do for [i=1:3] {
myKey = sprintf("plot%d",i)
set title myKey
plot $Data u 1:(myFilter(2,myKey,3)) w lp pt 7 lc i title myKey
}
unset multiplot
### end of code
Result:

Addition: (all lines in one plot)
If you have regular file pattern in your rows, e.g. 1,2,3,1,2,3,1,2,3,... or 1,1,1,2,2,2,3,3,3,... you possibly could also work with every, check help every.
However, this filtering with the ternary operator should work for all cases, including random 1,3,2,2,3,1,1,2,3,... sequences.
Code:
### split data by keyword
reset session
$Data <<EOD
X Axis Plot Y Axis
2000 plot1 1.2
2000 plot2 4.6
2000 plot3 5.7
3000 plot1 5.8
3000 plot2 7.5
3000 plot3 8.3
EOD
myFilter(fcol,myKey,dcol) = strcol(fcol) eq myKey ? column(dcol) : NaN
set datafile missing NaN
set key top left
myKey(i) = sprintf("plot%d",i)
set title "Plot 1,2,3"
plot for [i=1:3] $Data u 1:(myFilter(2,myKey(i),3)) w lp pt 7 lc i title myKey(i)
### end of code
Result:
