Use this script to reapply a default colour scheme that is saved in the document.

ApplyDefaultColourScheme
# Declarations and initial system setup
from Spotfire.Dxp.Application.Visuals import *
from System.Drawing import Color
from System.Drawing import ColorTranslator
from System.Collections.Generic import List
from Spotfire.Dxp.Framework.Library import *
from System.Collections.Generic import List
DefaultColorValue = []
DefaultColorCode = []
ColourPalette = []
Ic=0
#--------------------------------------------------------------------------------------
# Colour Palette
ColourPalette.append("#99D518")
ColourPalette.append("#515387")
ColourPalette.append("#5C8FEB")
ColourPalette.append("#026A77")
ColourPalette.append("#6AD5FA")
ColourPalette.append("#E75262")
ColourPalette.append("#EFB225")
ColourPalette.append("#105843")
ColourPalette.append("#A18A2A")
ColourPalette.append("#7C353F")
ColourPalette.append("#0B5314")
ColourPalette.append("#B0C5B1")
ColourPalette.append("#B27828")
ColourPalette.append("#638E0B")
ColourPalette.append("#1BBF42")
ColourPalette.append("#116694")
ColourPalette.append("#FBFB9B")
ColourPalette.append("#29A5B3")
ColourPalette.append("#EB60FC")
ColourPalette.append("#DF2EBD")
ColourPalette.append("#5B89EB")
ColourPalette.append("#7784C5")
ColourPalette.append("#F94290")
ColourPalette.append("#16D03C")
ColourPalette.append("#4B7FB0")
ColourPalette.append("#84535D")
ColourPalette.append("#056C3D")
ColourPalette.append("#02066E")
ColourPalette.append("#F6CCCC")
ColourPalette.append("#D81DDB")
ColourPalette.append("#A03EF9")
ColourPalette.append("#C3D35B")
ColourPalette.append("#38A889")
ColourPalette.append("#AD8146")
ColourPalette.append("#37EDE3")
ColourPalette.append("#BF8735")
ColourPalette.append("#6AA5B7")
ColourPalette.append("#E13A26")
ColourPalette.append("#81C782")
ColourPalette.append("#D68600")

#--------------------------------------------------------------------------------------
# Fixed default colours for categories (otherwise random colours from the palette
# will be assigned.

DefaultColorValue.append("All")
DefaultColorCode.append(ColorTranslator.FromHtml("#1E2054"))

#--------------------------------------------------------------------------------------
for p in Document.Pages:
	for v in p.Visuals:
		Process='N'
		if v.TypeId.Name == 'Spotfire.LineChart':
			chart=v.As[LineChart]()
			Process='Y'
		if v.TypeId.Name == 'Spotfire.BarChart':
			chart=v.As[BarChart]()
			Process='Y'
		if v.TypeId.Name == 'Spotfire.Treemap':
			chart=v.As[Treemap]()
			Process='Y'
		if v.TypeId.Name == 'Spotfire.ScatterPlot':
			chart=v.As[ScatterPlot]()
			Process='Y'
		if v.TypeId.Name == 'Spotfire.WaterfallChart':
			chart=v.As[WaterfallChart]()
			Process='Y'
		if v.TypeId.Name == 'Spotfire.PieChart':
			chart=v.As[PieChart]()
			Process='Y'
		if v.TypeId.Name == 'Spotfire.ScatterPlot3D':
			chart=v.As[ScatterPlot3D]()
			Process='Y'
		if v.TypeId.Name == 'Spotfire.CombinationChart':
			chart=v.As[CombinationChart]()
			Process='Y'
			keys=List[CategoryKey]()
			keys=chart.ColorAxis.Coloring.AddCategoricalColorRule().GetExplicitCategories()
			# Search for target series and set it as a line
			for k in keys:
				if str(k).find('Target')>=0 or str(k).find('Objetivo')>=0:
					chart.IndexedSeriesType[k]=CombinationChartSeriesType.Line
		if Process=='Y':
			keys=List[CategoryKey]()
			keys=chart.ColorAxis.Coloring.AddCategoricalColorRule().GetExplicitCategories()
			for k in keys:
				if Ic>=ColourPalette.Count:
					Ic=0
				if str(k).find('Target')>=0 or str(k).find('Objetivo')>=0:
					chart.ColorAxis.Coloring.SetColorForCategory(k, Color.FromName("Black"))
				else:
					if str(k).find('.')<0 and DefaultColorValue.count(str(k)) == 0:
						chart.ColorAxis.Coloring.SetColorForCategory(k, ColorTranslator.FromHtml(ColourPalette[Ic]))
						DefaultColorValue.append(str(k))
						DefaultColorCode.append(chart.ColorAxis.Coloring.GetColorForCategory(k))
						Ic=Ic+1
					elif DefaultColorValue.count(str(k)) == 1:
						chart.ColorAxis.Coloring.SetColorForCategory(k, DefaultColorCode[DefaultColorValue.index(str(k))])

# Multiple category axis coloring
	for v in p.Visuals:
		Process='N'
		if v.TypeId.Name == 'Spotfire.LineChart':
			chart=v.As[LineChart]()
			Process='Y'
		if v.TypeId.Name == 'Spotfire.BarChart':
			chart=v.As[BarChart]()
			Process='Y'
		if v.TypeId.Name == 'Spotfire.Treemap':
			chart=v.As[Treemap]()
			Process='Y'
		if v.TypeId.Name == 'Spotfire.ScatterPlot':
			chart=v.As[ScatterPlot]()
			Process='Y'
		if v.TypeId.Name == 'Spotfire.WaterfallChart':
			chart=v.As[WaterfallChart]()
			Process='Y'
		if v.TypeId.Name == 'Spotfire.PieChart':
			chart=v.As[PieChart]()
			Process='Y'
		if v.TypeId.Name == 'Spotfire.ScatterPlot3D':
			chart=v.As[ScatterPlot3D]()
			Process='Y'
		if v.TypeId.Name == 'Spotfire.CombinationChart':
			chart=v.As[CombinationChart]()
			Process='Y'
		if Process=='Y':
			keys=List[CategoryKey]()
			keys=chart.ColorAxis.Coloring.AddCategoricalColorRule().GetExplicitCategories()
			for k in keys:
				if str(k).find('Target')>=0 or str(k).find('Objetivo')>=0:
					chart.ColorAxis.Coloring.SetColorForCategory(k, Color.FromName("Black"))
				else:
					if str(k).find(".")>=0:
						for val in DefaultColorValue:
							if str(val) == str(k).split(".")[0]:
								chart.ColorAxis.Coloring.SetColorForCategory(k, DefaultColorCode[DefaultColorValue.index(val)])

Sources

  • No labels