{-| Module : TimeSeries.Plot Copyright : (C) 2013 Parallel Scientific Labs, LLC License : GPL-2 Stability : experimental Portability : portable Format conversion for plotting data. -} module TimeSeries.Plot where import TimeSeries.Utils -- | Read correlated data from sample csv file and convert to format -- fed to \"tplot\" from timeplot package. -- -- E.g. Plot to \"out.png\": -- -- > $ tplot -if rho09.tmp -o out.png -or 1920x1080 -tf '%s' -dk lines -- rho09_100000 :: IO () rho09_100000 = rho09 "data/correlated-walks_rho09_n100000_k5.csv" -- | Like 'rho09_100000', but using fewer input data. rho09_10000 :: IO () rho09_10000 = rho09 "data/correlated-walks_rho09_n10000_k5.csv" -- | Actual work for plotting. rho09 :: FilePath -> IO () rho09 path = do csvData <- readFile path let csvValues = tail $ lines csvData f [t,v1,v2,v3,v4,v5] = let t' = filter (/= '"') t in unlines [ unwords [t', "=V1", v1] , unwords [t', "=V2", v2] , unwords [t', "=V3", v3] , unwords [t', "=V4", v4] , unwords [t', "=V5", v5] ] f _ = error "malformed input" res = unlines . map (f . comma) $ csvValues writeFile "rho09.tmp" res