Load & Plot multiple .txt to Common Graph

Hi All,

I'm looking to load and display multiple 2 column .txt files to one graph. So far I've figured out a procedure of my own that easily loads .txt files to a wave using LoadWave and have found another procedure by Drhodstein that does the same in a nicer fashion. However I haven't been able to append these multiple waves to a single graph. It seems this should be an easy thing but I can seem to find a way to make it work primarily because each iteration of LoadWave overwrites the previous.

My code:
Function RamanGraph()

       Variable refNum, k
    String message = "Select one or more files"
    String outputPaths
    String fileFilters = "Delimited Text (*.txt):.txt;"
    fileFilters += "All Files:.*;"

    Open /R/D/F=fileFilters /MULT=1 /M=message refNum
    outputPaths = S_fileName // Stores the full file names + directories in outputPaths
    Variable/G numberOfImages = ItemsInList(outputPaths, "\r") // Finds the number of images being opened
       
    If(StrLen(outputPaths)==0)
        Print "User Cancelled"
        return -1
    Endif
   
    String columnInfoStr = " "
    columnInfoStr +="N=Shift;"         
    columnInfoStr +="N=Intensity;"         

    For(k=0;k<NumberOfImages;k+=1)
            String path = StringFromList(k, outputPaths, "\r")
            LoadWave/Q/J/D/A/K=0/E=1/W/O path
            Wave /T imageList // Stores force curve names in ordered list
            Make /O/T/N=(numberOfImages) imageList
              imageList[k] = path  
                   

     EndFor
End


DrHodstein's Code:

Function LoadOneFile(pathName, filePath)
    String pathName     // Name of Igor symbolic path or ""
    String filePath     // File name, partial path relative to symbolic path, or full path
 
    String fileName = ParseFilePath(3, filePath, ":", 0, 0) // Get file name without extension
 
    String baseShiftName = "Shift"
    String baseIntensityName = "Intensity"
    Variable baseMaxNameLength = max(strlen(baseShiftName),strlen(baseIntensityName))
    Variable maxIgorNameLength = 31
 
    // This is to make sure that your wave names don't wind up being too long for Igor to handle
    Variable clippedFileNameLength = maxIgorNameLength - baseMaxNameLength
    String clippedFileName = fileName[0,clippedFileNameLength-1]
    // Print clippedFileName    // For debugging only
 
    String columnInfoStr = ""
    columnInfoStr += "N='" + baseShiftName + clippedFileName + "';"
    columnInfoStr += "N='" + baseIntensityName + clippedFileName + "';"
    // Print columnInfoStr  // For debugging only
 
    LoadWave/A/G/D/B=columnInfoStr/K=0/P=$pathName filePath     // You may need to tweak this
End
 
Function/S LoadFiles()
    Variable refNum
    String message = "Select one or more files"
    String outputPaths
    String fileFilters = "Data Files (*.txt,*.dat,*.csv):.txt,.dat,.csv;"
    fileFilters += "All Files:.*;"
 
    Open /D /R /MULT=1 /F=fileFilters /M=message refNum
    outputPaths = S_fileName
 
    if (strlen(outputPaths) == 0)
        Print "Cancelled"
    else
        Variable numFilesSelected = ItemsInList(outputPaths, "\r")
        Variable i
        for(i=0; i<numFilesSelected; i+=1)
            String path = StringFromList(i, outputPaths, "\r")
            Printf "%d: %s\r", i, path
            LoadOneFile("", path)
        endfor
    endif
 
    return outputPaths      // Will be empty if user canceled
End



Any help would be appreciated, I feel that it should be a relatively easy step so save the waves in an iterative manner and then use AppendToGraph to plot them all together.

Thanks!

Garrett
If you remove /O from your LoadWave command then it won't overwrite.

To determine the names of the waves loaded, after LoadWave, execute this:
String wavesLoadedList = S_waveNames  // S_waveNames is created by LoadWave
String firstName = StringFromList(0, wavesLoadedList)
Wave firstWave = $firstName
String secondName = StringFromList(0, wavesLoadedList)
Wave secondWave = $secondName


If the graph already exists, you can then use AppendToGraph.

For another example, execute:
DisplayHelpTopic "Loading Waves Using Igor Procedures"
Thank you much! This did precisely what I had hoped it would. I was trying to figure out how to extract these waves separately without having much luck until this!