Scilab è ottimo. Per tante cose. Io l’ho scoperto per i grafici, lo sto utilizzando e in questo post vorrei riassumere cosa ho scoperto.
Intanto è ottimo, lo uso e lo consiglio a tutti.
Pero non è facilissimo, è un prodotto grosso (proteiforme), si evolve (giustamente) e qualche istruzione diventa obsoleta (com’è giusto che sia).
Non sempre i manuali sono aggiornati e per quel che ho trovato manca un “Getting Started” o un “How To” per le singole branche in cui può essere suddiviso. In particolare per il plotting ho dovuto scorrere bazillioni di files .html e .pdf e in nessuno ho trovato tutto quello che cercavo.
Tra i tanti considero fondamentali:
- Scilab: Graphics di Anuradha Amrutkar dell’Indian Institute Of Technology, Bombay, 15th April, 2010, disponibile qui;
- Graphics: Getting started, qui e naturalmente qui cercando Graphics Library (e c’è tutto il resto del manuale online, da perdersi).
Allora ecco cosa ho ottenuto. Il mio sogno sarebbe stato quello di costruire uno script che, lanciato da terminale, generasse automaticamente il grafico richiesto; non è esattamente quello che sono riuscito a fare, difatti lanciando l’interprete di Scilab ottengo:
e, ovviamente, si apre il terminale di Scilab. Trascinando uno script, qualunque script, su quest’ultimo mi compare questo messaggio d’errore:
Ci sono due cose: 1) un messaggio solo parzialmente visibile, che fa riferimento a ecanvas"*
che non so cosa sia, e 2) la variabile mostra
non definita. Strano che c’entri una variabile con il nome italiano, non citata da nessuna parte.
Ho provato a inserire istruzioni relative a driver(), xinit() e usecanvas() senza risultato. Per mostra basta settarla a %t o %f (non so qualse sia quella giusta).
In genere la prima esecuzione dello script abortisce, completamente o produce solo parte del grafico, basta ridroppare lo script una seconda volta e tutto funziona.
Questi sono alcuni esempi, presi dalla documentazione citata.
mostra = %T; t=linspace(0,%pi,20); a=gca();a.data_bounds=[t(1) -1.8;t($) 1.8]; plot2d(t,[cos(t'),cos(2*t'),cos(3*t')],[-5,2 3]); e=gce(); e1=e.children(1);e1.thickness=2;e1.polyline_style=4;e1.arrow_size_factor = 1/2; e2=e.children(2);e2.line_style=4;e2.thickness=3; e3=e.children(3);e3.line_mode='on';e3.mark_background=5; hl=legend(['cos(t)';'cos(2*t)';'cos(3*t)']); xs2png(0, "e4.png")
mostra = %F; t = linspace(-%pi, %pi,30); function z = mysurface(x,y); z = x * sin(x) ^ 2 * cos(y); endfunction contour(t,t,mysurface,10) xs2png(0, "aa2.png")
mostra = %F; x = [0 : 0.1 : 2 * %pi]'; plot2d(x, [sin(x) sin(2*x) sin(3*x)], .. [1,2,3], leg = "L1@L2@L3", nax = [2,10,2,10],rect = [0,-2,2*%pi,2]); xs2png(0, "scp4.png")
mostra = %f; t=-%pi:0.1:%pi; m=sin(t)'*cos(t); clf() xset("colormap",jetcolormap(64)) colorbar(-1,1) Sgrayplot(t,t,m, strf="041") xs2png(0, "scp6.png")
mostra = %f; n = 30; nt = 100; x = linspace(0,2*%pi,n); y = linspace(0,%pi,n/2); z = sin(x')*sin(y); t = linspace(0,4*%pi,nt); show_window(); clf() f=gcf(); f.color_map=jetcolormap(64); f.pixmap='on'; colorbar(-1,1) Sgrayplot(x,y,cos(t(1))*z, strf="042", zminmax=[-1,1]) c=gce(),e=c.children xtitle("Kaa''s eyes") for i = 1:nt e.data(:,3)=matrix(cos(t(i))*z,-1,1); show_pixmap() end f.pixmap='off'; xs2png(0, "scp7.png")
(quest’ultima è dinamica, provate…).
Bon. Per adesso Scilab lo uso così.
Ho trascurato altre cose, per esempio lo sapete che è uscita la nuova versione di newLISP, la 10.3? Lo sapevo che non interessa nessuno 😦
Ho trascurato anche Python, ma restate sintonizzati, prossimamente…
E poi tante altre cose nuove 8) e nuovi collaboratori 8)
Commenti
Anche io mi stò appassionando a questo linguaggio di calcolo ma non sò se forse sia meglio passare ad altro. Ad esempio scipy. In questo caso imparerei anche il python.
Intanto grazie
Dugajimi
con la versione 5.4 non scrive più quei messaggi (che mi scriveva con la 5.3)
Ormai sono passato a Gnuplot per tutte le cose nuove.
Probabilmente è più semplice.
Trackback
[…] This post was mentioned on Twitter by Gianluigi Filippelli, juhan. juhan said: Nuovo post, grafici con Scilab, http://goo.gl/ykV9R OK, sono noioso sempre le stesse cose. Ora di cambiare, adesso cambio argomento. […]