In order to get a line for each event, you can add an additional field for the row number and chart by that | makeresults
| eval event="y=1,2,3,4,5,6,7,8,9,10|y=2,3,4,5,6,7,8,9,10,11|y=3,4,5,6,7,8,9,10,11,12|y=4,5,6,7,8,9,10,11,12,13"
| makemv delim="|" event
| mvexpand event
| streamstats count as row
| fields row, event
| rex field=event "y=(?<y>.*)"
| makemv delim="," y
| eval size=mvcount(y)
| eval index=mvrange(0, size, 1)
| eval xy=mvzip(index, y)
| mvexpand xy
| rex field=xy "(?<x>[^,]),(?<y>.*)"
| fields x,y,row
| chart values(y) as y by x, row To explain what is going on: Create some dummy data (obviously, you don't need to do this) | makeresults
| eval event="y=1,2,3,4,5,6,7,8,9,10|y=2,3,4,5,6,7,8,9,10,11|y=3,4,5,6,7,8,9,10,11,12|y=4,5,6,7,8,9,10,11,12,13"
| makemv delim="|" event
| mvexpand event event is a field that represents your data. Add a row number: | streamstats count as row
| fields row, event Create an array from the event data: | rex field=event "y=(?<y>.*)"
| makemv delim="," y Create an array of indexes (based on the size of array y): | eval size=mvcount(y)
| eval index=mvrange(0, size, 1) Zip the index and value together, and create an event for each: | eval xy=mvzip(index, y)
| mvexpand xy Split the index and value again and keep just the index, value and original row number | rex field=xy "(?<x>[^,]),(?<y>.*)"
| fields x,y,row Now, visualise y(x) for each row | chart values(y) as y by x, row
... View more