degradado_de_color_en_graficas_rrd_de_cacti
Gráficas con degradado de color en Cacti
Fuente: http://blog.network-outsourcing.de/2015/06/19/gradient-support-for-cacti-graphs/
Agregar funciones al final del archivo rrd.php.
function gradient($vname=FALSE, $start_color='#0000a0', $end_color='#f0f0f0', $label=FALSE, $steps=20, $lower=FALSE, $alpha='FF'){ $label = preg_replace("/'/","",$label); if(preg_match('/^#?([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})/i',$start_color,$matches)){ $r1=hexdec($matches[1]); $g1=hexdec($matches[2]); $b1=hexdec($matches[3]); } if(preg_match('/^#?([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})/i',$end_color,$matches)){ $r2=hexdec($matches[1]); $g2=hexdec($matches[2]); $b2=hexdec($matches[3]); } $diff_r=$r2-$r1; $diff_g=$g2-$g1; $diff_b=$b2-$b1; $spline = ""; $spline_vname = "var".substr(sha1(rand()),1,4); $vnamet = $vname.substr(sha1(rand()),1,4); if(preg_match('/^([0-9]{1,3})%$/', $lower, $matches)){ $lower = $matches[1]; $spline .= sprintf("CDEF:%sminimum=%s,100,/,%d,* ".RRD_NL, $vnamet, $vname, $lower); }elseif(preg_match('/^([0-9]+)$/', $lower, $matches)){ $lower = $matches[1]; $spline .= sprintf("CDEF:%sminimum=%s,%d,- ".RRD_NL, $vnamet, $vname, $lower); }else{ $lower = 0; $spline .= sprintf("CDEF:%sminimum=%s,%s,- ".RRD_NL, $vnamet, $vname, $vname); } for ($i=$steps; $i>0; $i--){ $spline .= sprintf("CDEF:%s%d=%s,%sminimum,-,%d,/,%d,*,%sminimum,+ ".RRD_NL,$spline_vname,$i,$vname,$vnamet,$steps,$i,$vnamet); } // We don't use alpha blending for the area right now $alpha = 'ff'; for ($i=$steps; $i>0; $i--){ $factor=$i / $steps; $r=round($r1 + $diff_r * $factor); $g=round($g1 + $diff_g * $factor); $b=round($b1 + $diff_b * $factor); if (($i==$steps) and ($label!=FALSE) and (strlen($label)>2) ){ $spline .= sprintf("AREA:%s%d#%02X%02X%02X%s:\"%s\" ".RRD_NL, $spline_vname,$i,$r,$g,$b,$alpha,$label); }else{ $spline .= sprintf("AREA:%s%d#%02X%02X%02X%s ".RRD_NL, $spline_vname,$i,$r,$g,$b,$alpha); } } $spline .= sprintf("AREA:%s%d#%02X%02X%02X%s ".RRD_NL, $spline_vname,$steps,$r2,$g2,$b2,'00',$label); return $spline; } function colourBrightness($hex, $percent) { // Work out if hash given $hash = ''; if (stristr($hex,'#')) { $hex = str_replace('#','',$hex); $hash = '#'; } /// HEX TO RGB $rgb = array(hexdec(substr($hex,0,2)), hexdec(substr($hex,2,2)), hexdec(substr($hex,4,2))); //// CALCULATE for ($i=0; $i<3; $i++) { // See if brighter or darker if ($percent > 0) { // Lighter $rgb[$i] = round($rgb[$i] * $percent) + round(255 * (1-$percent)); } else { // Darker $positivePercent = $percent - ($percent*2); $rgb[$i] = round($rgb[$i] * (1-$positivePercent)); // round($rgb[$i] * (1-$positivePercent)); } // In case rounding up causes us to go to 256 if ($rgb[$i] > 255) { $rgb[$i] = 255; } } //// RBG to Hex $hex = ''; for($i=0; $i < 3; $i++) { // Convert the decimal digit to hex $hexDigit = dechex($rgb[$i]); // Add a leading zero if necessary if(strlen($hexDigit) == 1) { $hexDigit = "0" . $hexDigit; } // Append to the hex string $hex .= $hexDigit; } return $hash.$hex; }
Editar el código sobre la linea la linea número 1375 de rrd.php
// if (preg_match("/^(AREA|LINE[123])$/", $graph_item_types{$graph_item["graph_type_id"]})) { // $graph_item_stack_type = $graph_item_types{$graph_item["graph_type_id"]}; // $graph_variables["text_format"][$graph_item_id] = str_replace(":", "\:", $graph_variables["text_format"][$graph_item_id]); /* escape colons */ // $txt_graph_items .= $graph_item_types{$graph_item["graph_type_id"]} . ":" . $data_source_name . $graph_item_color_code . ":" . cacti_escapeshellarg($graph_variables["text_format"][$graph_item_id] . $hardreturn[$graph_item_id]) . " "; if (preg_match("/^AREA$/", $graph_item_types{$graph_item["graph_type_id"]})) { $graph_item_stack_type = $graph_item_types{$graph_item["graph_type_id"]}; $graph_variables["text_format"][$graph_item_id] = str_replace(":", "\:", $graph_variables["text_format"][$graph_item_id]); /* escape colons */ $end_color = colourBrightness("#" . $graph_item["hex"],-0.3); // End color is a 40% (0.4) darkened (negative number) version of the original color $txt_graph_items .= gradient($data_source_name,$graph_item_color_code,$end_color.$graph_item["alpha"],cacti_escapeshellarg($graph_variables["text_format"][$graph_item_id] . $hardreturn[$graph_item_id]),20,false,$graph_item["alpha"]); $need_rrd_nl = FALSE; }elseif (preg_match("/^LINE[123]$/", $graph_item_types{$graph_item["graph_type_id"]})) { $graph_item_stack_type = $graph_item_types{$graph_item["graph_type_id"]}; $graph_variables["text_format"][$graph_item_id] = str_replace(":", "\:", $graph_variables["text_format"][$graph_item_id]); /* escape colons */ $txt_graph_items .= $graph_item_types{$graph_item["graph_type_id"]} . ":" . $data_source_name . $graph_item_color_code . ":" . cacti_escapeshellarg($graph_variables["text_format"][$graph_item_id] . $hardreturn[$graph_item_id]) . " ";
Configurar el nivel de degradado, de más claro a más oscuro, para el ejemplo un 30%.
$end_color = colourBrightness("#" . $graph_item["hex"],-0.3); // 30% (0.3) oscuro.
degradado_de_color_en_graficas_rrd_de_cacti.txt · Last modified: 2020/12/25 22:57 by 127.0.0.1