</>
{ }
TEMPLATE PREVIEW Chart Page

Chart Page Template

In the PDF, charts are rendered as PNG images by matplotlib. Below, CSS-based placeholders illustrate the layout. The heat map uses a pure CSS grid approach for the HTML version.

ROAR — Risk Landscape Overview AiVRIC Organization
Figure 4.1 — Severity Distribution of Failed Findings
Distribution of 894 failed security checks by severity level. Critical findings require immediate action; high-severity findings should be addressed within the current sprint.
894
Failed
Critical (16) High (604) Medium (217) Low (57)
<img src="data:image/png;base64,{{ chart_severity_donut }}" width="400" alt="Severity Distribution">
Figure 4.1: Severity distribution across all 894 failed findings. High-severity findings dominate at 67.6% of all failures.
Data source: AiVRIC Vision Prowler scan, February 4, 2026
Figure 4.2 — Top 10 Compliance Framework Pass Rates
Horizontal bar chart showing pass rates for the 10 most relevant compliance frameworks across all providers.
K8s ThreatScore
81.4%
PCI 4.0 (AWS)
73.9%
Prowler Azure
69.3%
AWS Reliability
66.7%
AWS Foundation
60.1%
Prowler AWS
58.5%
K8s CIS 1.8
54.6%
Azure CIS 2.0
51.0%
<img src="data:image/png;base64,{{ chart_compliance_bars }}" width="600" alt="Compliance Pass Rates">
Figure 4.2: Pass rates for the top 10 compliance frameworks. Only 2 frameworks exceed the 75% target threshold.
Data source: AiVRIC Vision compliance evaluation, February 4, 2026
ROAR — Risk Landscape Overview (continued) AiVRIC Organization
Figure 4.3 — Risk Heat Map by Provider and Severity
Cross-tabulation of failed findings by provider and severity level. Cell color intensity indicates relative risk concentration. This version uses a pure CSS grid; the PDF uses a matplotlib-rendered image.
Critical
High
Medium
Low
AWS
3
34
185
57
Azure
0
110
32
0
K8s
0
306
0
0
GitHub
13
154
0
0
<img src="data:image/png;base64,{{ chart_risk_heatmap }}" width="500" alt="Risk Heat Map">
Figure 4.3: Risk heat map showing finding concentration. Kubernetes RBAC wildcard permissions (306 high) and GitHub supply chain gaps (154 high, 13 critical) represent the largest risk clusters.
Data source: AiVRIC Vision Prowler scan, February 4, 2026
Figure 4.4 — Provider Security Posture Gauges
Half-doughnut gauge charts showing the overall pass rate for each cloud provider. The target threshold is 80% pass rate.
57.7%
AWS
30.7%
Azure
87.4%
Kubernetes
9.2%
GitHub
<img src="data:image/png;base64,{{ chart_provider_gauges }}" width="600" alt="Provider Gauges">
Figure 4.4: Provider security posture gauges. Only Kubernetes exceeds the 80% target pass rate. GitHub requires urgent attention at 9.2%.
Data source: AiVRIC Vision Prowler scan, February 4, 2026

Chart Generation Code (Python/matplotlib)

import matplotlib.pyplot as plt
import base64
from io import BytesIO

def render_severity_donut(findings_data):
 """Render severity donut chart as base64 PNG."""
 fig, ax = plt.subplots(1, 1, figsize=(6, 6), dpi=300)

 sizes = [16, 604, 217, 57]
 colors = ['#DC2626', '#F97316', '#EAB308', '#22C55E']
 labels = ['Critical', 'High', 'Medium', 'Low']

 wedges, texts, autotexts = ax.pie(
 sizes, colors=colors, labels=labels,
 autopct='%1.1f%%', startangle=90,
 pctdistance=0.85, wedgeprops={'width': 0.35}
 )

 # Center text
 ax.text(0, 0, '894\nFailed',
 ha='center', va='center',
 fontsize=24, fontweight='bold')

 # Export as base64
 buf = BytesIO()
 fig.savefig(buf, format='png', bbox_inches='tight',
 transparent=True)
 buf.seek(0)
 return base64.b64encode(buf.read()).decode('utf-8')