Here's the SPL for the Frequency Trails visualization. I've expanded all of the macros that are used in it, so it's not very clean. Also, I've kept all of the tokens in it, so it's easier to see how to customize it.
`comment("Get the basic data - Timechart by some field")`
index=_internal sourcetype=splunkd_access
| eval y_field=host
| eval y_field="yfield_".y_field
| timechart span=$span$s count by y_field limit=0
`comment("This part is to allow us to have trendlines for series whose name we don't know in advance")`
| eval index=1
| foreach yfield_* [
eval canonic_yfield_{index}='<<FIELD>>' |
eval canonic_name_{index}="<<MATCHSTR>>" |
eval index=index+1
]
| fields- undex yfield_*
| trendline sma$sma$(canonic_yfield_1) as canonic_yfield_1, sma$sma$(canonic_yfield_2) as canonic_yfield_2, sma$sma$(canonic_yfield_3) as canonic_yfield_3, sma$sma$(canonic_yfield_4) as canonic_yfield_4, sma$sma$(canonic_yfield_5) as canonic_yfield_5, sma$sma$(canonic_yfield_6) as canonic_yfield_6, sma$sma$(canonic_yfield_7) as canonic_yfield_7, sma$sma$(canonic_yfield_8) as canonic_yfield_8, sma$sma$(canonic_yfield_9) as canonic_yfield_9, sma$sma$(canonic_yfield_10) as canonic_yfield_10, sma$sma$(canonic_yfield_11) as canonic_yfield_11, sma$sma$(canonic_yfield_12) as canonic_yfield_12, sma$sma$(canonic_yfield_13) as canonic_yfield_13, sma$sma$(canonic_yfield_14) as canonic_yfield_14, sma$sma$(canonic_yfield_15) as canonic_yfield_15, sma$sma$(canonic_yfield_16) as canonic_yfield_16, sma$sma$(canonic_yfield_17) as canonic_yfield_17, sma$sma$(canonic_yfield_18) as canonic_yfield_18, sma$sma$(canonic_yfield_19) as canonic_yfield_19, sma$sma$(canonic_yfield_20) as canonic_yfield_20, sma$sma$(canonic_yfield_21) as canonic_yfield_21, sma$sma$(canonic_yfield_22) as canonic_yfield_22, sma$sma$(canonic_yfield_23) as canonic_yfield_23, sma$sma$(canonic_yfield_24) as canonic_yfield_24, sma$sma$(canonic_yfield_25) as canonic_yfield_25, sma$sma$(canonic_yfield_26) as canonic_yfield_26, sma$sma$(canonic_yfield_27) as canonic_yfield_27, sma$sma$(canonic_yfield_28) as canonic_yfield_28, sma$sma$(canonic_yfield_29) as canonic_yfield_29, sma$sma$(canonic_yfield_30) as canonic_yfield_30, sma$sma$(canonic_yfield_31) as canonic_yfield_31, sma$sma$(canonic_yfield_32) as canonic_yfield_32, sma$sma$(canonic_yfield_33) as canonic_yfield_33, sma$sma$(canonic_yfield_34) as canonic_yfield_34, sma$sma$(canonic_yfield_35) as canonic_yfield_35, sma$sma$(canonic_yfield_36) as canonic_yfield_36, sma$sma$(canonic_yfield_37) as canonic_yfield_37, sma$sma$(canonic_yfield_38) as canonic_yfield_38, sma$sma$(canonic_yfield_39) as canonic_yfield_39, sma$sma$(canonic_yfield_40) as canonic_yfield_40, sma$sma$(canonic_yfield_41) as canonic_yfield_41, sma$sma$(canonic_yfield_42) as canonic_yfield_42, sma$sma$(canonic_yfield_43) as canonic_yfield_43, sma$sma$(canonic_yfield_44) as canonic_yfield_44, sma$sma$(canonic_yfield_45) as canonic_yfield_45, sma$sma$(canonic_yfield_46) as canonic_yfield_46, sma$sma$(canonic_yfield_47) as canonic_yfield_47, sma$sma$(canonic_yfield_48) as canonic_yfield_48, sma$sma$(canonic_yfield_49) as canonic_yfield_49, sma$sma$(canonic_yfield_50) as canonic_yfield_50, sma$sma$(canonic_yfield_51) as canonic_yfield_51, sma$sma$(canonic_yfield_52) as canonic_yfield_52, sma$sma$(canonic_yfield_53) as canonic_yfield_53, sma$sma$(canonic_yfield_54) as canonic_yfield_54, sma$sma$(canonic_yfield_55) as canonic_yfield_55, sma$sma$(canonic_yfield_56) as canonic_yfield_56, sma$sma$(canonic_yfield_57) as canonic_yfield_57, sma$sma$(canonic_yfield_58) as canonic_yfield_58, sma$sma$(canonic_yfield_59) as canonic_yfield_59, sma$sma$(canonic_yfield_60) as canonic_yfield_60, sma$sma$(canonic_yfield_61) as canonic_yfield_61, sma$sma$(canonic_yfield_62) as canonic_yfield_62, sma$sma$(canonic_yfield_63) as canonic_yfield_63, sma$sma$(canonic_yfield_64) as canonic_yfield_64, sma$sma$(canonic_yfield_65) as canonic_yfield_65, sma$sma$(canonic_yfield_66) as canonic_yfield_66, sma$sma$(canonic_yfield_67) as canonic_yfield_67, sma$sma$(canonic_yfield_68) as canonic_yfield_68, sma$sma$(canonic_yfield_69) as canonic_yfield_69, sma$sma$(canonic_yfield_70) as canonic_yfield_70, sma$sma$(canonic_yfield_71) as canonic_yfield_71, sma$sma$(canonic_yfield_72) as canonic_yfield_72, sma$sma$(canonic_yfield_73) as canonic_yfield_73, sma$sma$(canonic_yfield_74) as canonic_yfield_74, sma$sma$(canonic_yfield_75) as canonic_yfield_75, sma$sma$(canonic_yfield_76) as canonic_yfield_76, sma$sma$(canonic_yfield_77) as canonic_yfield_77, sma$sma$(canonic_yfield_78) as canonic_yfield_78, sma$sma$(canonic_yfield_79) as canonic_yfield_79, sma$sma$(canonic_yfield_80) as canonic_yfield_80, sma$sma$(canonic_yfield_81) as canonic_yfield_81, sma$sma$(canonic_yfield_82) as canonic_yfield_82, sma$sma$(canonic_yfield_83) as canonic_yfield_83, sma$sma$(canonic_yfield_84) as canonic_yfield_84, sma$sma$(canonic_yfield_85) as canonic_yfield_85, sma$sma$(canonic_yfield_86) as canonic_yfield_86, sma$sma$(canonic_yfield_87) as canonic_yfield_87, sma$sma$(canonic_yfield_88) as canonic_yfield_88, sma$sma$(canonic_yfield_89) as canonic_yfield_89, sma$sma$(canonic_yfield_90) as canonic_yfield_90, sma$sma$(canonic_yfield_91) as canonic_yfield_91, sma$sma$(canonic_yfield_92) as canonic_yfield_92, sma$sma$(canonic_yfield_93) as canonic_yfield_93, sma$sma$(canonic_yfield_94) as canonic_yfield_94, sma$sma$(canonic_yfield_95) as canonic_yfield_95, sma$sma$(canonic_yfield_96) as canonic_yfield_96, sma$sma$(canonic_yfield_97) as canonic_yfield_97, sma$sma$(canonic_yfield_98) as canonic_yfield_98, sma$sma$(canonic_yfield_99) as canonic_yfield_99, sma$sma$(canonic_yfield_100) as canonic_yfield_100, sma$sma$(canonic_yfield_101) as canonic_yfield_101, sma$sma$(canonic_yfield_102) as canonic_yfield_102, sma$sma$(canonic_yfield_103) as canonic_yfield_103, sma$sma$(canonic_yfield_104) as canonic_yfield_104, sma$sma$(canonic_yfield_105) as canonic_yfield_105, sma$sma$(canonic_yfield_106) as canonic_yfield_106, sma$sma$(canonic_yfield_107) as canonic_yfield_107, sma$sma$(canonic_yfield_108) as canonic_yfield_108, sma$sma$(canonic_yfield_109) as canonic_yfield_109, sma$sma$(canonic_yfield_110) as canonic_yfield_110, sma$sma$(canonic_yfield_111) as canonic_yfield_111, sma$sma$(canonic_yfield_112) as canonic_yfield_112, sma$sma$(canonic_yfield_113) as canonic_yfield_113, sma$sma$(canonic_yfield_114) as canonic_yfield_114, sma$sma$(canonic_yfield_115) as canonic_yfield_115, sma$sma$(canonic_yfield_116) as canonic_yfield_116, sma$sma$(canonic_yfield_117) as canonic_yfield_117, sma$sma$(canonic_yfield_118) as canonic_yfield_118, sma$sma$(canonic_yfield_119) as canonic_yfield_119, sma$sma$(canonic_yfield_120) as canonic_yfield_120, sma$sma$(canonic_yfield_121) as canonic_yfield_121, sma$sma$(canonic_yfield_122) as canonic_yfield_122, sma$sma$(canonic_yfield_123) as canonic_yfield_123, sma$sma$(canonic_yfield_124) as canonic_yfield_124, sma$sma$(canonic_yfield_125) as canonic_yfield_125, sma$sma$(canonic_yfield_126) as canonic_yfield_126, sma$sma$(canonic_yfield_127) as canonic_yfield_127, sma$sma$(canonic_yfield_128) as canonic_yfield_128, sma$sma$(canonic_yfield_129) as canonic_yfield_129, sma$sma$(canonic_yfield_130) as canonic_yfield_130, sma$sma$(canonic_yfield_131) as canonic_yfield_131, sma$sma$(canonic_yfield_132) as canonic_yfield_132, sma$sma$(canonic_yfield_133) as canonic_yfield_133, sma$sma$(canonic_yfield_134) as canonic_yfield_134, sma$sma$(canonic_yfield_135) as canonic_yfield_135, sma$sma$(canonic_yfield_136) as canonic_yfield_136, sma$sma$(canonic_yfield_137) as canonic_yfield_137, sma$sma$(canonic_yfield_138) as canonic_yfield_138, sma$sma$(canonic_yfield_139) as canonic_yfield_139, sma$sma$(canonic_yfield_140) as canonic_yfield_140, sma$sma$(canonic_yfield_141) as canonic_yfield_141, sma$sma$(canonic_yfield_142) as canonic_yfield_142, sma$sma$(canonic_yfield_143) as canonic_yfield_143, sma$sma$(canonic_yfield_144) as canonic_yfield_144, sma$sma$(canonic_yfield_145) as canonic_yfield_145, sma$sma$(canonic_yfield_146) as canonic_yfield_146, sma$sma$(canonic_yfield_147) as canonic_yfield_147, sma$sma$(canonic_yfield_148) as canonic_yfield_148, sma$sma$(canonic_yfield_149) as canonic_yfield_149, sma$sma$(canonic_yfield_150) as canonic_yfield_150, sma$sma$(canonic_yfield_151) as canonic_yfield_151, sma$sma$(canonic_yfield_152) as canonic_yfield_152, sma$sma$(canonic_yfield_153) as canonic_yfield_153, sma$sma$(canonic_yfield_154) as canonic_yfield_154, sma$sma$(canonic_yfield_155) as canonic_yfield_155, sma$sma$(canonic_yfield_156) as canonic_yfield_156, sma$sma$(canonic_yfield_157) as canonic_yfield_157, sma$sma$(canonic_yfield_158) as canonic_yfield_158, sma$sma$(canonic_yfield_159) as canonic_yfield_159, sma$sma$(canonic_yfield_160) as canonic_yfield_160, sma$sma$(canonic_yfield_161) as canonic_yfield_161, sma$sma$(canonic_yfield_162) as canonic_yfield_162, sma$sma$(canonic_yfield_163) as canonic_yfield_163, sma$sma$(canonic_yfield_164) as canonic_yfield_164, sma$sma$(canonic_yfield_165) as canonic_yfield_165, sma$sma$(canonic_yfield_166) as canonic_yfield_166, sma$sma$(canonic_yfield_167) as canonic_yfield_167, sma$sma$(canonic_yfield_168) as canonic_yfield_168, sma$sma$(canonic_yfield_169) as canonic_yfield_169, sma$sma$(canonic_yfield_170) as canonic_yfield_170, sma$sma$(canonic_yfield_171) as canonic_yfield_171, sma$sma$(canonic_yfield_172) as canonic_yfield_172, sma$sma$(canonic_yfield_173) as canonic_yfield_173, sma$sma$(canonic_yfield_174) as canonic_yfield_174, sma$sma$(canonic_yfield_175) as canonic_yfield_175, sma$sma$(canonic_yfield_176) as canonic_yfield_176, sma$sma$(canonic_yfield_177) as canonic_yfield_177, sma$sma$(canonic_yfield_178) as canonic_yfield_178, sma$sma$(canonic_yfield_179) as canonic_yfield_179, sma$sma$(canonic_yfield_180) as canonic_yfield_180, sma$sma$(canonic_yfield_181) as canonic_yfield_181, sma$sma$(canonic_yfield_182) as canonic_yfield_182, sma$sma$(canonic_yfield_183) as canonic_yfield_183, sma$sma$(canonic_yfield_184) as canonic_yfield_184, sma$sma$(canonic_yfield_185) as canonic_yfield_185, sma$sma$(canonic_yfield_186) as canonic_yfield_186, sma$sma$(canonic_yfield_187) as canonic_yfield_187, sma$sma$(canonic_yfield_188) as canonic_yfield_188, sma$sma$(canonic_yfield_189) as canonic_yfield_189, sma$sma$(canonic_yfield_190) as canonic_yfield_190, sma$sma$(canonic_yfield_191) as canonic_yfield_191, sma$sma$(canonic_yfield_192) as canonic_yfield_192, sma$sma$(canonic_yfield_193) as canonic_yfield_193, sma$sma$(canonic_yfield_194) as canonic_yfield_194, sma$sma$(canonic_yfield_195) as canonic_yfield_195, sma$sma$(canonic_yfield_196) as canonic_yfield_196, sma$sma$(canonic_yfield_197) as canonic_yfield_197, sma$sma$(canonic_yfield_198) as canonic_yfield_198, sma$sma$(canonic_yfield_199) as canonic_yfield_199, sma$sma$(canonic_yfield_200) as canonic_yfield_200, sma$sma$(canonic_yfield_201) as canonic_yfield_201, sma$sma$(canonic_yfield_202) as canonic_yfield_202, sma$sma$(canonic_yfield_203) as canonic_yfield_203, sma$sma$(canonic_yfield_204) as canonic_yfield_204, sma$sma$(canonic_yfield_205) as canonic_yfield_205, sma$sma$(canonic_yfield_206) as canonic_yfield_206, sma$sma$(canonic_yfield_207) as canonic_yfield_207, sma$sma$(canonic_yfield_208) as canonic_yfield_208, sma$sma$(canonic_yfield_209) as canonic_yfield_209, sma$sma$(canonic_yfield_210) as canonic_yfield_210, sma$sma$(canonic_yfield_211) as canonic_yfield_211, sma$sma$(canonic_yfield_212) as canonic_yfield_212, sma$sma$(canonic_yfield_213) as canonic_yfield_213, sma$sma$(canonic_yfield_214) as canonic_yfield_214, sma$sma$(canonic_yfield_215) as canonic_yfield_215, sma$sma$(canonic_yfield_216) as canonic_yfield_216, sma$sma$(canonic_yfield_217) as canonic_yfield_217, sma$sma$(canonic_yfield_218) as canonic_yfield_218, sma$sma$(canonic_yfield_219) as canonic_yfield_219, sma$sma$(canonic_yfield_220) as canonic_yfield_220, sma$sma$(canonic_yfield_221) as canonic_yfield_221, sma$sma$(canonic_yfield_222) as canonic_yfield_222, sma$sma$(canonic_yfield_223) as canonic_yfield_223, sma$sma$(canonic_yfield_224) as canonic_yfield_224, sma$sma$(canonic_yfield_225) as canonic_yfield_225, sma$sma$(canonic_yfield_226) as canonic_yfield_226, sma$sma$(canonic_yfield_227) as canonic_yfield_227, sma$sma$(canonic_yfield_228) as canonic_yfield_228, sma$sma$(canonic_yfield_229) as canonic_yfield_229, sma$sma$(canonic_yfield_230) as canonic_yfield_230, sma$sma$(canonic_yfield_231) as canonic_yfield_231, sma$sma$(canonic_yfield_232) as canonic_yfield_232, sma$sma$(canonic_yfield_233) as canonic_yfield_233, sma$sma$(canonic_yfield_234) as canonic_yfield_234, sma$sma$(canonic_yfield_235) as canonic_yfield_235, sma$sma$(canonic_yfield_236) as canonic_yfield_236, sma$sma$(canonic_yfield_237) as canonic_yfield_237, sma$sma$(canonic_yfield_238) as canonic_yfield_238, sma$sma$(canonic_yfield_239) as canonic_yfield_239, sma$sma$(canonic_yfield_240) as canonic_yfield_240, sma$sma$(canonic_yfield_241) as canonic_yfield_241, sma$sma$(canonic_yfield_242) as canonic_yfield_242, sma$sma$(canonic_yfield_243) as canonic_yfield_243, sma$sma$(canonic_yfield_244) as canonic_yfield_244, sma$sma$(canonic_yfield_245) as canonic_yfield_245, sma$sma$(canonic_yfield_246) as canonic_yfield_246, sma$sma$(canonic_yfield_247) as canonic_yfield_247, sma$sma$(canonic_yfield_248) as canonic_yfield_248, sma$sma$(canonic_yfield_249) as canonic_yfield_249, sma$sma$(canonic_yfield_250) as canonic_yfield_250, sma$sma$(canonic_yfield_251) as canonic_yfield_251, sma$sma$(canonic_yfield_252) as canonic_yfield_252, sma$sma$(canonic_yfield_253) as canonic_yfield_253, sma$sma$(canonic_yfield_254) as canonic_yfield_254, sma$sma$(canonic_yfield_255) as canonic_yfield_255, sma$sma$(canonic_yfield_256) as canonic_yfield_256, sma$sma$(canonic_yfield_257) as canonic_yfield_257, sma$sma$(canonic_yfield_258) as canonic_yfield_258, sma$sma$(canonic_yfield_259) as canonic_yfield_259, sma$sma$(canonic_yfield_260) as canonic_yfield_260, sma$sma$(canonic_yfield_261) as canonic_yfield_261, sma$sma$(canonic_yfield_262) as canonic_yfield_262, sma$sma$(canonic_yfield_263) as canonic_yfield_263, sma$sma$(canonic_yfield_264) as canonic_yfield_264, sma$sma$(canonic_yfield_265) as canonic_yfield_265, sma$sma$(canonic_yfield_266) as canonic_yfield_266, sma$sma$(canonic_yfield_267) as canonic_yfield_267, sma$sma$(canonic_yfield_268) as canonic_yfield_268, sma$sma$(canonic_yfield_269) as canonic_yfield_269, sma$sma$(canonic_yfield_270) as canonic_yfield_270, sma$sma$(canonic_yfield_271) as canonic_yfield_271, sma$sma$(canonic_yfield_272) as canonic_yfield_272, sma$sma$(canonic_yfield_273) as canonic_yfield_273, sma$sma$(canonic_yfield_274) as canonic_yfield_274, sma$sma$(canonic_yfield_275) as canonic_yfield_275, sma$sma$(canonic_yfield_276) as canonic_yfield_276, sma$sma$(canonic_yfield_277) as canonic_yfield_277, sma$sma$(canonic_yfield_278) as canonic_yfield_278, sma$sma$(canonic_yfield_279) as canonic_yfield_279, sma$sma$(canonic_yfield_280) as canonic_yfield_280, sma$sma$(canonic_yfield_281) as canonic_yfield_281, sma$sma$(canonic_yfield_282) as canonic_yfield_282, sma$sma$(canonic_yfield_283) as canonic_yfield_283, sma$sma$(canonic_yfield_284) as canonic_yfield_284, sma$sma$(canonic_yfield_285) as canonic_yfield_285, sma$sma$(canonic_yfield_286) as canonic_yfield_286, sma$sma$(canonic_yfield_287) as canonic_yfield_287, sma$sma$(canonic_yfield_288) as canonic_yfield_288, sma$sma$(canonic_yfield_289) as canonic_yfield_289, sma$sma$(canonic_yfield_290) as canonic_yfield_290, sma$sma$(canonic_yfield_291) as canonic_yfield_291, sma$sma$(canonic_yfield_292) as canonic_yfield_292, sma$sma$(canonic_yfield_293) as canonic_yfield_293, sma$sma$(canonic_yfield_294) as canonic_yfield_294, sma$sma$(canonic_yfield_295) as canonic_yfield_295, sma$sma$(canonic_yfield_296) as canonic_yfield_296, sma$sma$(canonic_yfield_297) as canonic_yfield_297, sma$sma$(canonic_yfield_298) as canonic_yfield_298, sma$sma$(canonic_yfield_299) as canonic_yfield_299, sma$sma$(canonic_yfield_300) as canonic_yfield_300, sma$sma$(canonic_yfield_301) as canonic_yfield_301, sma$sma$(canonic_yfield_302) as canonic_yfield_302, sma$sma$(canonic_yfield_303) as canonic_yfield_303, sma$sma$(canonic_yfield_304) as canonic_yfield_304, sma$sma$(canonic_yfield_305) as canonic_yfield_305, sma$sma$(canonic_yfield_306) as canonic_yfield_306, sma$sma$(canonic_yfield_307) as canonic_yfield_307, sma$sma$(canonic_yfield_308) as canonic_yfield_308, sma$sma$(canonic_yfield_309) as canonic_yfield_309, sma$sma$(canonic_yfield_310) as canonic_yfield_310, sma$sma$(canonic_yfield_1) as sum_field
`comment("Restore the original series names - used for tooltips")`
| foreach canonic_name_* [
eval {<<FIELD>>}=canonic_yfield_<<MATCHSTR>>
]
| fields- index canonic_*
| untable _time y_field count
| eval ts=_time
| eventstats min(ts) as first
| eval ts=round((ts-first)/$span$)
| eventstats max(count) as max_count,dc(ts) as timestamps,dc(y_field) as yfields
| eventstats max(count) as max_y_field_count by y_field
| eventstats sum(count) as sum_count by ts
| eval count=if(y_field=="sum_field",sum_count,count)
| eventstats max(count) as max_sum_count
| eventstats p90(count) as p90_count by y_field
| fields- sum_count
| eval upper_bound=200+yfields*$seperation$
| eval count=if(y_field=="sum_field",upper_bound-round(200*count/max_sum_count,2), upper_bound-round(100*count/max_count,2))
`comment("This part is used order the series based on their 90th percentile. The order (captured in the gindex field) is then used positioning the different series in the visualtion (z-order and skew)")`
| sort 0 ts p90_count
| streamstats count as gindex by ts
| eval count=count-$seperation$*gindex
| eval point=ts.",".count
| eventstats max(ts) as max_global_x,max(count) as max_global_y
| eval max_global_x=max_global_x+$skew$*yfields
| sort 0 -p90_count ts
| eval ts=ts+$skew$*gindex
| eval count=count+100
| eval count=if(y_field=="sum_field",count-$sum_seperation$,count)
| eval point=ts.",".count
| fields y_field point max_count p90_count max_y_field_count gindex max_global_x max_global_y upper_bound
| fields- _time
| mvcombine point
| sort -p90_count
| eval max_y=upper_bound-$seperation$*gindex
| eval max_y=max_y+100
| eval max_y_sum_field=max_y-$sum_seperation$
`comment("Since each series is visualized as a closed polygon, we need effective_max_y to close the loop")`
| eval effective_max_y=if(y_field=="sum_field",max_y_sum_field,max_y)
| eval points=effective_max_y." ".mvjoin(point, " ")
`comment("Create the polygon for each series")`
| rex field=points mode=sed "s/^(\d+) (\d+),(\d+\.*\d*) (.*) (\d+),(\d+\.*\d*)$/\2,\3 \4 \5,\6 \5,\1 \2,\1 \2,\3/"
| fields- point max_y upper_bound max_y_sum_field effective_max_y
`comment("Creating a random shading for each series")`
| eval seed=md5(gindex)
| rex field=seed "(?<seed1>\d).*(?<seed2>\d).*(?<seed3>\d)"
| eval shift_blue=((seed1*100+seed2*10+seed3) % 60)-30
| eval shift_green=((seed3*100+seed2*10+seed1) % 60)-30
| eval red=0
| eval green=if(y_field=="sum_field",200+shift_green,100+shift_green)
| eval blue=if(y_field=="sum_field",100+shift_blue,200+shift_blue)
`comment("Creating 5 different gradient categories")`
| eval category=round((100*max_y_field_count/max_count)/25)+1
| eval gradient_id=if(y_field=="sum_field","url(#gradient_sum)","url(#gradient".category.")")
`comment("Check to see if gradient amplitudes should be used")`
| eval fill=if("$use_gradients$"=="Yes",gradient_id,"rgb(".red.",".green.",".blue.")")
| eval filter=if(y_field=="sum_field"," filter=\"url(#shadow)\" ","")
`comment("Title used for tooltips")`
| eval title=if(y_field=="sum_field","Total",y_field)
`comment("Building the actual SVG polyline element")`
| eval polyline="<polyline ".filter." fill=\"".fill."\" stroke=\"black\" stroke-width=\"1\" points=\"".points."\" opacity=\"$opacity$\"><title>".title."</title></polyline>"
| fields polyline max_count y_field max_global_x max_global_y gindex
| sort -gindex
| fields- y_field gindex
| mvcombine polyline
| eval polylines=mvjoin(polyline, " ")
| eval bg_color="rgb(0,0,0)"
| eval max_global_x=max_global_x+50
| eval max_global_y=max_global_y+100+100
`comment("Creating the different gradient fill elements. One for each category")`
| eval gradient5="
<linearGradient id=\"gradient5\" x1=\"0%\" y1=\"0%\" x2=\"0%\" y2=\"100%\" >
<stop offset=\"0%\" style=\"stop-color:rgb(103,0,31);stop-opacity:1\" />
<stop offset=\"100%\" style=\"stop-color:rgb(250,231,222);stop-opacity:1\">
</stop>
</linearGradient>
"
| eval gradient4="
<linearGradient id=\"gradient4\" x1=\"0%\" y1=\"0%\" x2=\"0%\" y2=\"100%\" >
<stop offset=\"0%\" style=\"stop-color:rgb(131,48,74);stop-opacity:1\" />
<stop offset=\"100%\" style=\"stop-color:rgb(250,231,222);stop-opacity:1\">
</stop>
</linearGradient>
"
| eval gradient3="
<linearGradient id=\"gradient3\" x1=\"0%\" y1=\"0%\" x2=\"0%\" y2=\"100%\" >
<stop offset=\"0%\" style=\"stop-color:rgb(160,97,118);stop-opacity:1\" />
<stop offset=\"100%\" style=\"stop-color:rgb(250,231,222);stop-opacity:1\">
</stop>
</linearGradient>
"
| eval gradient2="
<linearGradient id=\"gradient2\" x1=\"0%\" y1=\"0%\" x2=\"0%\" y2=\"100%\" >
<stop offset=\"0%\" style=\"stop-color:rgb(189,146,161);stop-opacity:1\" />
<stop offset=\"100%\" style=\"stop-color:rgb(250,231,222);stop-opacity:1\">
</stop>
</linearGradient>
"
| eval gradient1="
<linearGradient id=\"gradient1\" x1=\"0%\" y1=\"0%\" x2=\"0%\" y2=\"100%\" >
<stop offset=\"0%\" style=\"stop-color:rgb(218,195,205);stop-opacity:1\" />
<stop offset=\"100%\" style=\"stop-color:rgb(250,231,222);stop-opacity:1\">
</stop>
</linearGradient>
"
| eval gradient_sum="
<linearGradient id=\"gradient_sum\" x1=\"0%\" y1=\"0%\" x2=\"0%\" y2=\"100%\" >
<stop offset=\"0%\" style=\"stop-color:rgb(200,0,200);stop-opacity:1\" />
<stop offset=\"100%\" style=\"stop-color:rgb(0,200,255);stop-opacity:1\">
</stop>
</linearGradient>
"
| eval shadow_fill=if("$use_gradients$"=="Yes","rgb(0,200,255)","rgb(0,216,71)")
| eval tmp_shadow_fill=shadow_fill
| eval shadow_filter="
<filter id=\"shadow\" >
<feDropShadow dx=\"1\" dy=\"10\" stdDeviation=\"14\" flood-color=\"".tmp_shadow_fill."\" flood-opacity=\"0.6\" />
</filter>
"
| eval shadow_filter="<defs>".shadow_filter."</defs>"
| eval polylines=polylines.gradient1.gradient2.gradient3.gradient4.gradient5.gradient_sum.shadow_filter
| eval content=polylines
| eval content_height=max_global_y
| eval content_width=max_global_x
| eval background_color=bg_color
| eval svg_viz= "
<svg id=\"svg_id\" width=\"".content_width."px\" height=\"".content_height."px\" viewBox=\"-0.5 -0.5 ".content_width." ".content_height."\" style=\"background-color: ".background_color.";\">
<g id=\"viewport\">
".content."
</g>
</svg>"
| fields svg_viz
| head 1
... View more