Skip to content

Instantly share code, notes, and snippets.

@Gro-Tsen
Last active August 16, 2022 21:29
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Gro-Tsen/e493affce8ec079a30fd7fa77e895208 to your computer and use it in GitHub Desktop.
Save Gro-Tsen/e493affce8ec079a30fd7fa77e895208 to your computer and use it in GitHub Desktop.
## Produce a single file with every variable:
perl -e 'foreach $f (@ARGV) { die unless $f =~ m/([A-Z]{2})_*/; $var=$1; open F, "<", $f; while (<F>) { last if m/\s*SOUID,\s*DATE,\s*$var,\s*Q_$var/; } while (<F>) { die unless m/^([\s0-9]{6})\,([0-9]{8})\,([\s\-0-9]{5})\,([\s0-9]{5})/; $date=$2; next if $date le "19500101"; $val=$3+0; $qual=$4+0; if ($val!=-9999 && $qual==0) { $record{$date}{$var}=$val; $nbrecords{$var}++; } } close F; } foreach $date (sort (keys %record)) { $month=substr($date,4,2); $season=int((($month)%12)/3); printf "%s\t%d", $date, $season; foreach $var ( "TG","TN","TX","RR","HU","FG","PP","QQ" ) { print "\t", ($record{$date}{$var}//"NaN"); } printf "\n"; }' ??_*.txt > /tmp/orly-full.dat ; shuf /tmp/orly-full.dat > /tmp/orly-shuf.dat
## Do the graphs:
perl -e '%labels = ( TG => "Température moyenne (°C)", TN => "Température minimale (°C)", TX => "Température maximale (°C)", RR => "Précipitations cumulées sur 24h (mm)", HU => "Humidité moyenne (\%)", FG => "Vitesse moyenne du vent (km/h)", PP => "Pression atmosphérique moyenne à 0m (hPa)", QQ => "Rayonnement solaire au niveau du sol (W/m²)" ); %exprs = ( TG => "(\$3/10)", TN => "(\$4/10)", TX => "(\$5/10)", RR => "(\$6/10)", HU => "(\$7)", FG => "(\$8*0.36)", PP => "(\$9/10)", QQ => "(\$10/10)" ); foreach $pair (["TG","TN"],["TG","TX"],["TG","HU"],["TG","RR"],["HU","RR"],["TG","FG"],["TG","PP"],["TG","QQ"],["PP","HU"],["PP","RR"],["PP","FG"],["PP","QQ"],["HU","FG"],["HU","QQ"],["FG","RR"],["FG","QQ"]) { $varx=$pair->[0]; $vary=$pair->[1]; $labelx=$labels{$varx}; $labely=$labels{$vary}; $exprx=$exprs{$varx}; $expry=$exprs{$vary}; open(GNUPLOT,"|-","gnuplot") or die "cannot fork"; print GNUPLOT "set terminal pngcairo size 800,600\n"; print GNUPLOT "set title \"Relevés quotidiens station météo Orly depuis 1950\\n{/*0.83 bleu=déc. à fév., vert=mar. à mai, rouge=juin à août, violet=sept. à nov.}\"\n"; print GNUPLOT "set xlabel \"$labelx\"\n"; print GNUPLOT "set ylabel \"$labely\"\n"; print GNUPLOT "set palette defined ( 0 \"#4040ff\", 1 \"#40ff40\", 2 \"#ff4040\", 3 \"#ff40ff\" )\nunset colorbox\n"; print GNUPLOT "set output \"/tmp/correlation_${varx}_${vary}.png\"\n"; print GNUPLOT "plot \"/tmp/orly-shuf.dat\" using ${exprx}:${expry}:2 pt 7 ps 0.8 lc palette z notitle\n"; close GNUPLOT; print "correlation_${varx}_${vary}.png\nGraphe de relevés météo quotidiens (station météo Orly depuis 1950), coloriés par saison, avec en abscisse ${labelx}, et en ordonnée ${labely}\n\n"; }'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment