返回 ppt-master
heatmap_chart.svg
根目录 / skills / ppt-master / templates / charts / heatmap_chart.svg
1 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1280 720" width="1280" height="720"
2 font-family="-apple-system, BlinkMacSystemFont, 'Segoe UI', 'PingFang SC', 'Microsoft YaHei', sans-serif"
3 font-size="12">
4 <!--
5 Heatmap Chart Template
6 Usage: Matrix data visualization, correlation analysis
7 Scenarios: Activity heatmaps, time-series analysis, user behavior
8 Supports: 7×7 or 7x8 matrix grid
9 -->
10 <defs>
11 <!-- Heatmap Gradient Scale (Blue to Red) -->
12 <linearGradient id="heatGradient" x1="0%" y1="0%" x2="100%" y2="0%">
13 <stop offset="0%" style="stop-color:#DBEAFE"/>
14 <stop offset="25%" style="stop-color:#93C5FD"/>
15 <stop offset="50%" style="stop-color:#FCD34D"/>
16 <stop offset="75%" style="stop-color:#F97316"/>
17 <stop offset="100%" style="stop-color:#DC2626"/>
18 </linearGradient>
19 </defs>
20 <!-- Background -->
21 <rect width="1280" height="720" fill="#F8FAFC"/>
22 <!-- Title -->
23 <g id="header" data-pptx-bounds="60 25 720 75">
24 <text x="60" y="55"
25 font-size="32" font-weight="700" fill="#0F172A">User Activity Heatmap Analysis</text>
26 <text x="60" y="90"
27 font-size="18" fill="#64748B">Active Users by Day and Time · Values in Thousands (K)</text>
28 </g>
29 <!-- Heatmap Area -->
30 <g id="heatmapArea" transform="translate(180, 135)" data-pptx-bounds="60 105 680 515">
31 <!-- Column Titles (Days) -->
32 <text x="40" y="-15"
33 font-size="14" font-weight="600" fill="#475569" text-anchor="middle">Mon</text>
34 <text x="120" y="-15"
35 font-size="14" font-weight="600" fill="#475569" text-anchor="middle">Tue</text>
36 <text x="200" y="-15"
37 font-size="14" font-weight="600" fill="#475569" text-anchor="middle">Wed</text>
38 <text x="280" y="-15"
39 font-size="14" font-weight="600" fill="#475569" text-anchor="middle">Thu</text>
40 <text x="360" y="-15"
41 font-size="14" font-weight="600" fill="#475569" text-anchor="middle">Fri</text>
42 <text x="440" y="-15"
43 font-size="14" font-weight="600" fill="#EF4444" text-anchor="middle">Sat</text>
44 <text x="520" y="-15"
45 font-size="14" font-weight="600" fill="#EF4444" text-anchor="middle">Sun</text>
46 <!-- Row Titles (Time) -->
47 <text x="-15" y="35"
48 font-size="13" fill="#64748B" text-anchor="end">06:00 - 09:00</text>
49 <text x="-15" y="95"
50 font-size="13" fill="#64748B" text-anchor="end">09:00 - 12:00</text>
51 <text x="-15" y="155"
52 font-size="13" fill="#64748B" text-anchor="end">12:00 - 14:00</text>
53 <text x="-15" y="215"
54 font-size="13" fill="#64748B" text-anchor="end">14:00 - 17:00</text>
55 <text x="-15" y="275"
56 font-size="13" fill="#64748B" text-anchor="end">17:00 - 19:00</text>
57 <text x="-15" y="335"
58 font-size="13" fill="#64748B" text-anchor="end">19:00 - 21:00</text>
59 <text x="-15" y="395"
60 font-size="13" fill="#64748B" text-anchor="end">21:00 - 23:00</text>
61 <text x="-15" y="455"
62 font-size="13" fill="#64748B" text-anchor="end">23:00 - 06:00</text>
63 <!-- Heatmap Cells -->
64 <!-- Row 1 -->
65 <rect x="0" y="5" width="78" height="58" rx="4" fill="#93C5FD"/><text x="40" y="40" font-size="13" fill="#1E3A8A" text-anchor="middle">35</text>
66 <rect x="80" y="5" width="78" height="58" rx="4" fill="#60A5FA"/><text x="120" y="40" font-size="13" fill="#1E3A8A" text-anchor="middle">42</text>
67 <rect x="160" y="5" width="78" height="58" rx="4" fill="#60A5FA"/><text x="200" y="40" font-size="13" fill="#1E3A8A" text-anchor="middle">40</text>
68 <rect x="240" y="5" width="78" height="58" rx="4" fill="#93C5FD"/><text x="280" y="40" font-size="13" fill="#1E3A8A" text-anchor="middle">38</text>
69 <rect x="320" y="5" width="78" height="58" rx="4" fill="#BFDBFE"/><text x="360" y="40" font-size="13" fill="#1E3A8A" text-anchor="middle">28</text>
70 <rect x="400" y="5" width="78" height="58" rx="4" fill="#DBEAFE"/><text x="440" y="40" font-size="13" fill="#1E3A8A" text-anchor="middle">15</text>
71 <rect x="480" y="5" width="78" height="58" rx="4" fill="#EFF6FF"/><text x="520" y="40" font-size="13" fill="#1E3A8A" text-anchor="middle">10</text>
72 <!-- Row 2 -->
73 <rect x="0" y="65" width="78" height="58" rx="4" fill="#FEF08A"/><text x="40" y="100" font-size="13" fill="#9A3412" text-anchor="middle">58</text>
74 <rect x="80" y="65" width="78" height="58" rx="4" fill="#FCD34D"/><text x="120" y="100" font-size="13" fill="#9A3412" text-anchor="middle">65</text>
75 <rect x="160" y="65" width="78" height="58" rx="4" fill="#FACC15"/><text x="200" y="100" font-size="13" fill="#FFFFFF" text-anchor="middle">72</text>
76 <rect x="240" y="65" width="78" height="58" rx="4" fill="#FCD34D"/><text x="280" y="100" font-size="13" fill="#9A3412" text-anchor="middle">68</text>
77 <rect x="320" y="65" width="78" height="58" rx="4" fill="#FEF08A"/><text x="360" y="100" font-size="13" fill="#9A3412" text-anchor="middle">55</text>
78 <rect x="400" y="65" width="78" height="58" rx="4" fill="#60A5FA"/><text x="440" y="100" font-size="13" fill="#1E3A8A" text-anchor="middle">45</text>
79 <rect x="480" y="65" width="78" height="58" rx="4" fill="#93C5FD"/><text x="520" y="100" font-size="13" fill="#1E3A8A" text-anchor="middle">38</text>
80 <!-- Row 3 -->
81 <rect x="0" y="125" width="78" height="58" rx="4" fill="#FDBA74"/><text x="40" y="160" font-size="13" fill="#7C2D12" text-anchor="middle">75</text>
82 <rect x="80" y="125" width="78" height="58" rx="4" fill="#FB923C"/><text x="120" y="160" font-size="13" fill="#FFFFFF" text-anchor="middle">82</text>
83 <rect x="160" y="125" width="78" height="58" rx="4" fill="#F97316"/><text x="200" y="160" font-size="13" fill="#FFFFFF" text-anchor="middle">88</text>
84 <rect x="240" y="125" width="78" height="58" rx="4" fill="#FB923C"/><text x="280" y="160" font-size="13" fill="#FFFFFF" text-anchor="middle">80</text>
85 <rect x="320" y="125" width="78" height="58" rx="4" fill="#FDBA74"/><text x="360" y="160" font-size="13" fill="#7C2D12" text-anchor="middle">70</text>
86 <rect x="400" y="125" width="78" height="58" rx="4" fill="#FEF08A"/><text x="440" y="160" font-size="13" fill="#9A3412" text-anchor="middle">60</text>
87 <rect x="480" y="125" width="78" height="58" rx="4" fill="#FCD34D"/><text x="520" y="160" font-size="13" fill="#9A3412" text-anchor="middle">65</text>
88 <!-- Row 4 -->
89 <rect x="0" y="185" width="78" height="58" rx="4" fill="#FEF08A"/><text x="40" y="220" font-size="13" fill="#9A3412" text-anchor="middle">55</text>
90 <rect x="80" y="185" width="78" height="58" rx="4" fill="#FCD34D"/><text x="120" y="220" font-size="13" fill="#9A3412" text-anchor="middle">62</text>
91 <rect x="160" y="185" width="78" height="58" rx="4" fill="#FCD34D"/><text x="200" y="220" font-size="13" fill="#9A3412" text-anchor="middle">68</text>
92 <rect x="240" y="185" width="78" height="58" rx="4" fill="#FEF08A"/><text x="280" y="220" font-size="13" fill="#9A3412" text-anchor="middle">60</text>
93 <rect x="320" y="185" width="78" height="58" rx="4" fill="#60A5FA"/><text x="360" y="220" font-size="13" fill="#1E3A8A" text-anchor="middle">48</text>
94 <rect x="400" y="185" width="78" height="58" rx="4" fill="#FDBA74"/><text x="440" y="220" font-size="13" fill="#7C2D12" text-anchor="middle">72</text>
95 <rect x="480" y="185" width="78" height="58" rx="4" fill="#FB923C"/><text x="520" y="220" font-size="13" fill="#FFFFFF" text-anchor="middle">78</text>
96 <!-- Row 5 -->
97 <rect x="0" y="245" width="78" height="58" rx="4" fill="#93C5FD"/><text x="40" y="280" font-size="13" fill="#1E3A8A" text-anchor="middle">32</text>
98 <rect x="80" y="245" width="78" height="58" rx="4" fill="#93C5FD"/><text x="120" y="280" font-size="13" fill="#1E3A8A" text-anchor="middle">35</text>
99 <rect x="160" y="245" width="78" height="58" rx="4" fill="#93C5FD"/><text x="200" y="280" font-size="13" fill="#1E3A8A" text-anchor="middle">38</text>
100 <rect x="240" y="245" width="78" height="58" rx="4" fill="#93C5FD"/><text x="280" y="280" font-size="13" fill="#1E3A8A" text-anchor="middle">35</text>
101 <rect x="320" y="245" width="78" height="58" rx="4" fill="#BFDBFE"/><text x="360" y="280" font-size="13" fill="#1E3A8A" text-anchor="middle">28</text>
102 <rect x="400" y="245" width="78" height="58" rx="4" fill="#FCD34D"/><text x="440" y="280" font-size="13" fill="#9A3412" text-anchor="middle">65</text>
103 <rect x="480" y="245" width="78" height="58" rx="4" fill="#FDBA74"/><text x="520" y="280" font-size="13" fill="#7C2D12" text-anchor="middle">70</text>
104 <!-- Row 6 (Peak) -->
105 <rect x="0" y="305" width="78" height="58" rx="4" fill="#FB923C"/><text x="40" y="340" font-size="13" fill="#FFFFFF" text-anchor="middle">78</text>
106 <rect x="80" y="305" width="78" height="58" rx="4" fill="#F97316"/><text x="120" y="340" font-size="13" fill="#FFFFFF" text-anchor="middle">85</text>
107 <rect x="160" y="305" width="78" height="58" rx="4" fill="#F97316"/><text x="200" y="340" font-size="13" fill="#FFFFFF" text-anchor="middle">88</text>
108 <rect x="240" y="305" width="78" height="58" rx="4" fill="#F97316"/><text x="280" y="340" font-size="13" fill="#FFFFFF" text-anchor="middle">86</text>
109 <rect x="320" y="305" width="78" height="58" rx="4" fill="#FB923C"/><text x="360" y="340" font-size="13" fill="#FFFFFF" text-anchor="middle">80</text>
110 <rect x="400" y="305" width="78" height="58" rx="4" fill="#EF4444"/><text x="440" y="340" font-size="13" fill="#FFFFFF" text-anchor="middle">95</text>
111 <rect x="480" y="305" width="78" height="58" rx="4" fill="#DC2626"/><text x="520" y="340" font-size="14" font-weight="700" fill="#FFFFFF" text-anchor="middle">98</text>
112 <!-- Row 7 -->
113 <rect x="0" y="365" width="78" height="58" rx="4" fill="#FCD34D"/><text x="40" y="400" font-size="13" fill="#9A3412" text-anchor="middle">62</text>
114 <rect x="80" y="365" width="78" height="58" rx="4" fill="#FDBA74"/><text x="120" y="400" font-size="13" fill="#7C2D12" text-anchor="middle">70</text>
115 <rect x="160" y="365" width="78" height="58" rx="4" fill="#FDBA74"/><text x="200" y="400" font-size="13" fill="#7C2D12" text-anchor="middle">72</text>
116 <rect x="240" y="365" width="78" height="58" rx="4" fill="#FDBA74"/><text x="280" y="400" font-size="13" fill="#7C2D12" text-anchor="middle">68</text>
117 <rect x="320" y="365" width="78" height="58" rx="4" fill="#FCD34D"/><text x="360" y="400" font-size="13" fill="#9A3412" text-anchor="middle">65</text>
118 <rect x="400" y="365" width="78" height="58" rx="4" fill="#F97316"/><text x="440" y="400" font-size="13" fill="#FFFFFF" text-anchor="middle">85</text>
119 <rect x="480" y="365" width="78" height="58" rx="4" fill="#FB923C"/><text x="520" y="400" font-size="13" fill="#FFFFFF" text-anchor="middle">82</text>
120 <!-- Row 8 -->
121 <rect x="0" y="425" width="78" height="58" rx="4" fill="#DBEAFE"/><text x="40" y="460" font-size="13" fill="#1E3A8A" text-anchor="middle">18</text>
122 <rect x="80" y="425" width="78" height="58" rx="4" fill="#DBEAFE"/><text x="120" y="460" font-size="13" fill="#1E3A8A" text-anchor="middle">15</text>
123 <rect x="160" y="425" width="78" height="58" rx="4" fill="#DBEAFE"/><text x="200" y="460" font-size="13" fill="#1E3A8A" text-anchor="middle">12</text>
124 <rect x="240" y="425" width="78" height="58" rx="4" fill="#DBEAFE"/><text x="280" y="460" font-size="13" fill="#1E3A8A" text-anchor="middle">15</text>
125 <rect x="320" y="425" width="78" height="58" rx="4" fill="#BFDBFE"/><text x="360" y="460" font-size="13" fill="#1E3A8A" text-anchor="middle">22</text>
126 <rect x="400" y="425" width="78" height="58" rx="4" fill="#93C5FD"/><text x="440" y="460" font-size="13" fill="#1E3A8A" text-anchor="middle">35</text>
127 <rect x="480" y="425" width="78" height="58" rx="4" fill="#BFDBFE"/><text x="520" y="460" font-size="13" fill="#1E3A8A" text-anchor="middle">28</text>
128 </g>
129 <!-- Color Legend -->
130 <g id="colorLegend" transform="translate(800, 135)" data-pptx-bounds="800 118 400 75">
131 <text x="0" y="0"
132 font-size="14" font-weight="600" fill="#0F172A">Activity Intensity</text>
133 <rect x="0" y="15" width="400" height="20" rx="4" fill="url(#heatGradient)"/>
134 <text x="0" y="52"
135 fill="#64748B">Low (0)</text>
136 <text x="200" y="52"
137 fill="#64748B" text-anchor="middle">Med (50)</text>
138 <text x="400" y="52"
139 fill="#64748B" text-anchor="end">High (100)</text>
140 </g>
141 <!-- Stats Panel -->
142 <g id="statsPanel" transform="translate(800, 230)" data-pptx-bounds="800 230 400 190">
143 <rect x="0" y="0" width="400" height="190" rx="8" fill="#F1F5F9" stroke="#E2E8F0" stroke-width="1"/>
144 <text x="200" y="28"
145 font-size="14" font-weight="600" fill="#0F172A" text-anchor="middle">Key Statistics</text>
146 <line x1="15" y1="42" x2="385" y2="42" stroke="#E2E8F0" stroke-width="1"/>
147 <text x="20" y="68"
148 font-size="13" font-weight="600" fill="#475569">🔥 Peak Time</text>
149 <text x="20" y="88"
150 fill="#DC2626">Sun 19:00-21:00 (98K)</text>
151 <text x="20" y="115"
152 font-size="13" font-weight="600" fill="#475569">❄️ Low Time</text>
153 <text x="20" y="135"
154 fill="#2563EB">Sun 06:00-09:00 (10K)</text>
155 <text x="20" y="162"
156 font-size="13" font-weight="600" fill="#475569">📊 Daily Avg</text>
157 <text x="300" y="162"
158 font-size="14" font-weight="700" fill="#0F172A">54.2K</text>
159 </g>
160 <!-- Insight Card -->
161 <g id="insightCard" transform="translate(800, 440)" data-pptx-bounds="800 440 400 140">
162 <rect x="0" y="0" width="400" height="140" rx="8" fill="#F0FDF4" stroke="#22C55E" stroke-width="1"/>
163 <text x="20" y="28"
164 font-size="14" font-weight="600" fill="#166534">💡 Key Insights</text>
165 <text x="20" y="58"
166 fill="#475569">• Peak activity on weekend nights</text>
167 <text x="20" y="80"
168 fill="#475569">• Mid-day spikes on weekdays</text>
169 <text x="20" y="102"
170 fill="#475569">• Lowest traffic in early hours</text>
171 <text x="20" y="126"
172 font-weight="600" fill="#64748B">Action: Scale servers on weekends</text>
173 </g>
174 <!-- Data Source -->
175 <g id="source" data-pptx-bounds="60 675 380 25">
176 <text x="60" y="695"
177 font-size="14" fill="#94A3B8">Source: User Behavior Analytics Platform</text>
178 </g>
179 </svg>
180
180 lines Plain Text