Modificare i grafici di SCILAB

Perché modificare le caratteristiche dei grafici che abbiamo appena creato in Scilab?  Magari le impostazioni di default non ci soddisfano: infatti, vedere una curva su uno sfondo bianco potrebbe non bastare se cerchiamo il passaggio per lo zero, oppure potremmo aver bisogno di distinguere i punti del vettore visualizzato rispetto alla curva interpolante disegnata da Scilab o molto semplicemente i colori scelti dal programma semplicemente non ci piacciono! (o non sono adatti allo stile del documento in cui dovranno essere inseriti).
In questo post, descriverò i principali comandi per personalizzare le figure create con Scilab e mosterò come modificare le impostazioni di default per produrre sempre i grafici con le caratteristiche desiderate.

Ho già accennato a come modificare il rapporto d’aspetto di una figura, ora vedremo come cambiare i colori, lo stile della linea, ed aggiungere una griglia di sfondo.

Modificare l’aspetto delle figure

Le figure sono trattate da Scilab come oggetti, dotati di varie proprietà che ne regolano l’aspetto. In particolare l’oggetto Axes contiene la maggior parte dei campi utili all’interazione con la figura. Per conoscerle occorre utilizzare il comando gca (get current axes) che restituisce il puntatore all’oggetto grafico contenuto nella figura:

a=gca()

a =

Handle of type "Axes" with properties:
======================================
parent: Figure
children: "Compound"

visible = "on"
axes_visible = ["on","on","on"]
axes_reverse = ["off","off","off"]
grid = [-1,-1]
grid_position = "background"
grid_thickness = [1,1]
grid_style = [3,3]
x_location = "bottom"
y_location = "left"
title: "Label"
x_label: "Label"
y_label: "Label"
z_label: "Label"
auto_ticks = ["on","on","on"]
x_ticks.locations = matrix 13x1
y_ticks.locations = matrix 11x1
z_ticks.locations = []
x_ticks.labels = matrix 13x1
y_ticks.labels = matrix 11x1
z_ticks.labels = []
ticks_format = ["","",""]
ticks_st = [1,1,1;0,0,0]
box = "on"
filled = "on"
sub_ticks = [1,1]
font_style = 6
font_size = 1
font_color = -1
fractional_font = "off"

isoview = "off"
cube_scaling = "off"
view = "2d"
rotation_angles = [0,270]
log_flags = "nnn"
tight_limits = ["off","off","off"]
data_bounds = [-1,-0.9999971;10,0.9999997]
zoom_box = []
margins = [0.125,0.125,0.125,0.125]
auto_margins = "on"
axes_bounds = [0,0,1,1]

auto_clear = "off"
auto_scale = "on"

hidden_axis_color = 4
hiddencolor = 4
line_mode = "on"
line_style = 1
thickness = 1
mark_mode = "off"
mark_style = 0
mark_size_unit = "tabulated"
mark_size = 0
mark_foreground = -1
mark_background = -2
foreground = -1
background = -2
arc_drawing_method = "lines"
clip_state = "clipgrf"
clip_box = []
user_data = []
tag =

Ognuna delle voci precedenti modifica un aspetto della figura individuata dagli assi correnti o fornisce dati per la manipolazione della stessa. Molti di questi parametri sono modificabili in modo “trasparente” agendo sui menù della finestra stessa, ma scopo di questo post è mostrare i comandi testuali per poterli poi inserire in un eventuale programma.

Ad esempio se vogliamo fa comparire la griglia, invece di usare il comando xgrid possiamo porre

a.grid=[1 1]

Attenzione: il comando xgrid consente solo di abilitare la visualizzazione della griglia ma non di toglierla.
Agendo, invece, a livello di campi dell’oggetto axes possiamo sia disabilitare la griglia con

a.grid=[-1 -1]

sia modificarne i colori. I numeri nella parentesi, infatti codificano i colori con cui sono visualizzate le linee. Il primo è per le linee orizzontali, il secondo per le verticali.

In Scilab i colori di default sono 32 e si possono visualizzare con il comando getcolor. Si ottiene una figura con i colori disponibili. Dal click sul colore desiderato si ottiene il corrispondente numero.

Per quanto riguarda il grafico disegnato, invece, si specificano le proprietà delle linee direttamente nel comando plot:

Stile della linea

Specifier Line Style
-         Solid line (default)
--        Dashed line
:         Dotted line
-.        Dash-dotted line

Colore

Specifier Color
r         Red
g         Green
b         Blue
c         Cyan
m         Magenta
y         Yellow
k         Black
w         White

Marker

Specifier              Marker Type
+                      Plus sign
o                      Circle
*                      Asterisk
.                      Point
x                      Cross
'square' or 's'        Square
'diamond' or 'd'       Diamond
^ Upward-pointing      triangle
v Downward-pointing    triangle
> Right-pointing       triangle
< Left-pointing        triangle
'pentagram' or 'p'     Five-pointed star (pentagram)
No marker (default)

Da notare che se si specifica solo il marker, senza le opzioni per lo stile della linea, sarà disegnato solo il marker senza alcuna linea. Per quanto riguarda i colori, se non sono scelti esplicitamente Scilab li assegna in base ad una tabella predefinita (la prima curva è blu, la seconda verde, la terza rossa, ecc.)

Procediamo con un esempio pratico, utilizzando i seguenti comandi:

t=-2*%pi:0.1:2*%pi;
x=sin(t);
y=cos(t);
z=0.75*sin(2*t+%pi/4);

plot(t,x,'r--',t,y,'bp',t,z,'g-d')

a=gca();

a.grid=[2 1]; // colori: ascisse=blu; ordinate=nero
a.grid_style = [1,2]; // ascisse=linea continua, ordinate= linea tratteggiata

per creare il grafico mostrato in figura 1.

Figura con caratteristiche modificate
Figura 1: grafico con alcune proprietà modificate

Modificare i valori di default

Se desideriamo una particolare impostazione per tutta la sessione (ad esempio vogliamo tutti i grafici con la griglia attiva), senza dover modificarla di volta in volta si possono cambiare le impostazioni di default con il comando:

a=get('default_axes');

e poi modificare la proprietà desiderata come descritto nei casi precedenti.

Gestire le figure

Finora abbiamo visto come modificare l’aspetto di un grafico ma ancora non abbiamo detto come identificare le singole finestre, in caso di grafici creati su più finestre, ed in particolare chiuderle da riga di comando.
Nel caso in cui abbiamo una sola finestra aperta è sufficiente digitare il comando close, ma quando ci sono più finestre? Si chiude solo l’ultima finestra utilizzata. Sarebbe utile un comando che ci permetta di scegliere quali chiudere, magari tutte (ad esempio per “pulire” lo schermo all’inizio di un programma).
Per poter identificare quali sono le finestre aperte si usa il comando

winsid

che ne restituisce i numeri identificativi. Per chiudere una finestra specifica allora è sufficiente usare

xdel(n)

dove n è il numero corrispondente alla finestra desiderata. Per chiuderle tutte contemporaneamente si usa allora la combinazione dei due comandi:

xdel(winsid());

 Conclusioni

In questo articolo ho mostrato i comandi testuali per manipolare i grafici creati con Scilab in modo da adattare la visualizzazione alle esigenze dell’utente, sia per una singola figura sia modificando le impostazioni di default.
Ho mostrato le modifiche che tipicamente effettuo io, se hai qualche preferenza particolare, dillo nei commenti. Se ti è piaciuto l’articolo condividilo con i social che preferisci.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Pin It on Pinterest