Parsing and Plotting Data: Difference between revisions
Appearance
mNo edit summary |
mNo edit summary |
||
| Line 1: | Line 1: | ||
GNUPlot: | GNUPlot: | ||
Home: | |||
http://www.gnuplot.info/ | |||
Source: | Source: | ||
Revision as of 21:00, 13 August 2013
GNUPlot:
Home: http://www.gnuplot.info/
Source: http://sourceforge.net/projects/gnuplot/files/ CSV to Gnuplot: http://www.cs.waikato.ac.nz/~fracpete/programming/csv2gnuplot/
Parsing YAML output files into csv:
ruby oscparser.rb output_filename.csv false < ./yml/pawn_0_spiral_2.yml
oscparser.rb
require 'rubygems'
require 'osc-ruby'
require 'yaml'
wait = ARGV[1] # wait boolean toggles whether the padded time at the beginning of recorded yml osc action is used
m_time = 0
start_time = 0
final_output = ""
output_filename = ARGV[0]
@messages = YAML.load($stdin)
@start = Time.now
@messages.each_with_index do |m, index|
if index == 0
start_time = m[:time]
end
if wait=='true'
m_time = m[:time]
else
m_time = m[:time] - start_time
end
dt = (@start + m_time) - Time.now
sleep(dt) if dt > 0
message = OSC::OSCPacket.messages_from_network(m[:message]).first
output = m_time.to_s + ", " + message.address
@a = message.to_a
@a.each_with_index do |arg, index|
#p arg
output = output + ", " + arg.to_s
end
final_output = final_output + "" + output + "\n"
end
File.open(output_filename, 'w') { |file|
file.write(final_output)
}
Import CSV into Processing:
//for importing csv files into a 2d array
//by che-wei wang
String lines[] = loadStrings("list.csv");
String [][] csv;
int csvWidth=0;
//calculate max width of csv file
for (int i=0; i < lines.length; i++) {
String [] chars=split(lines[i],',');
if (chars.length>csvWidth){
csvWidth=chars.length;
}
}
//create csv array based on # of rows and columns in csv file
csv = new String [lines.length][csvWidth];
//parse values into 2d array
for (int i=0; i < lines.length; i++) {
String [] temp = new String [lines.length];
temp= split(lines[i], ',');
for (int j=0; j < temp.length; j++){
csv[i][j]=temp[j];
}
}
//test
println(csv[2][2]);
Processing Library:
http://www.gicentre.org/utils/#download
Simple Processing Graph:
http://www.learningprocessing.com/examples/chapter-13/example-random-graph/ // Learning Processing // Daniel Shiffman // http://www.learningprocessing.com // Example: a graph of random numbers float[] vals; void setup() { size(400,200); smooth(); // An array of random values vals = new float[width]; for (int i = 0; i < vals.length; i++) { vals[i] = random(height); } } void draw() { background(255); // Draw lines connecting all points for (int i = 0; i < vals.length-1; i++) { stroke(0); strokeWeight(2); line(i,vals[i],i+1,vals[i+1]); } // Slide everything down in the array for (int i = 0; i < vals.length-1; i++) { vals[i] = vals[i+1]; } // Add a new random value vals[vals.length-1] = random(height); }
Pyxplot:
http://pyxplot.org.uk/examples/index.html
Processing Animated Graph example:
http://answers.oreilly.com/topic/1630-create-animated-graph-visualizations-with-processing/