Si ho tolto entrambi e ho inserito solo parte del codice, perchè non funzionavano. Questa è la prova che mi restituiva il numero formattato correttamente nel messaggio d'errore, ovviamente la cartina svg era sparita.

function getPolygon($id, $valore, $tipo, $regione){

$number=number_format($valore,2,","," ");
if($tipo == "occ"){
if($valore<10) {$color="#FF3300";}
elseif($valore>=10&&$valore<50) {$color="#FF9900";}
else{$color="#66CC00";}
}
elseif($tipo == "dis") {
if ($valore<10){$color="#66CC00";}
elseif ($valore>=10&&$valore<50){$color="#FF9900";}
else { $color="#FF0000";}
}

switch($id){

case 1: echo "<polygon title =\"".$regione."\" fill-rule=\"evenodd\" clip-rule=\"evenodd\" fill=\"".$color."\" stroke=\"#A7DBEE\" stroke-width=\"1.4173\" stroke-miterlimit=\"10\" points=\" \"/>";
echo "<text id=\"piemonte\" x=\"40\" y=\"130\" >".$number."%</text>";

Nella echo se lascio $valore funziona tutto regolarmente, invece se lo sostituisco con $number a cui ho assegnato la number_format non funziona più e mi da il messaggio con il valore formattato.