Skip to content

Instantly share code, notes, and snippets.

@AndiH
Last active August 29, 2015 14:17
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save AndiH/b9722ba0f7fad079359b to your computer and use it in GitHub Desktop.
Save AndiH/b9722ba0f7fad079359b to your computer and use it in GitHub Desktop.
Create color table based on Tableau20 colors
// Script for generating a table of Tableau colors, as defined in A. Goerres script (https://gist.github.com/Nepomuk/859fef81a912a9fe425e).
// AH, 25.3.2015
TString getStringForColorNumberT20(Int_t numb) {
if ( numb == 0 ) return TString("SteelBlue");
else if ( numb == 1 ) return TString("LightSteelBlue");
else if ( numb == 2 ) return TString("DarkOrange");
else if ( numb == 3 ) return TString("PeachPuff");
else if ( numb == 4 ) return TString("Green");
else if ( numb == 5 ) return TString("LightGreen");
else if ( numb == 6 ) return TString("Crimson");
else if ( numb == 7 ) return TString("LightCoral");
else if ( numb == 8 ) return TString("MediumPurple");
else if ( numb == 9 ) return TString("Thistle");
else if ( numb == 10 ) return TString("SaddleBrown");
else if ( numb == 11 ) return TString("RosyBrown");
else if ( numb == 12 ) return TString("Orchid");
else if ( numb == 13 ) return TString("LightPink");
else if ( numb == 14 ) return TString("Gray");
else if ( numb == 15 ) return TString("LightGray");
else if ( numb == 16 ) return TString("Olive");
else if ( numb == 17 ) return TString("PaleGoldenrod");
else if ( numb == 18 ) return TString("MediumTurquoise");
else if ( numb == 19 ) return TString("PaleTurquoise");
else return (TString) "error";
}
TString getStringForColorNumberB10( Int_t numb ) {
if ( numb == 0) return TString("DeepSkyBlue4");
else if ( numb == 1) return TString("DarkOrange1");
else if ( numb == 2) return TString("DarkGray");
else if ( numb == 3) return TString("DimGray");
else if ( numb == 4) return TString("SkyBlue3");
else if ( numb == 5) return TString("Chocolate3");
else if ( numb == 6) return TString("Gray");
else if ( numb == 7) return TString("SlateGray1");
else if ( numb == 8) return TString("SandyBrown");
else if ( numb == 9) return TString("LightGray");
else return (TString) "error";
}
void colorVis() {
TCanvas * colorCanvas = new TCanvas("colorCanvas", "colorCanvas", 0, 0, 1600, 1000);
TBox * box = new TBox();
box->SetFillStyle(1001);
TText * text = new TText(0,0,"");
// text->SetTextFont(61);
text->SetTextSize(0.03);
text->SetTextAlign(11);
double xOffset(0.1), yOffset(0.1);
double spacing(0.01);
double boxHeight = (double)(colorCanvas->GetHNDC() - 2 * xOffset) / 12.; // 11 because of header
double boxWidth = (double)(colorCanvas->GetWNDC() - 2 * yOffset - 3 * spacing) / 3.;
double textOffset = boxHeight / 3;
for (int i = 0; i < 10; ++i) {
TString colorStringT20 = getStringForColorNumberT20(2 * i);
box->SetFillColor(tableau::getTableau20ColorPair(colorStringT20).first);
box->DrawBox(xOffset, yOffset + i * boxHeight + i * spacing, xOffset + boxWidth, yOffset + (i + 1) * boxHeight + i * spacing);
box->SetFillColor(tableau::getTableau20ColorPair(colorStringT20).second);
box->DrawBox(xOffset + boxWidth + spacing, yOffset + i * boxHeight + i * spacing, xOffset + 2 * boxWidth + spacing, yOffset + (i + 1) * boxHeight + i * spacing);
text->SetTextColor(tableau::getTableau20ColorPair(colorStringT20).second);
text->DrawText(xOffset + textOffset, yOffset + i * boxHeight + i * spacing + textOffset, colorStringT20 + TString::Format(" (%d)", i));
text->SetTextColor(tableau::getTableau20ColorPair(colorStringT20).first);
text->DrawText(xOffset + boxWidth + spacing + textOffset, yOffset + i * boxHeight + i * spacing + textOffset, getStringForColorNumberT20(2 * i + 1) + TString::Format(" (%d)", 2 * i + 1));
TString colorStringB10 = getStringForColorNumberB10(i);
box->SetFillColor(tableau::getTableau10BlindColor(colorStringB10));
box->DrawBox(xOffset + 2 * boxWidth + 2 * spacing + spacing, yOffset + i * boxHeight + i * spacing, xOffset + 3 * boxWidth + 2 * spacing, yOffset + (i + 1) * boxHeight + i * spacing);
text->SetTextColor(kWhite);
text->DrawText(xOffset + 2 * boxWidth + 2 * spacing + spacing + textOffset, yOffset + i * boxHeight + i * spacing + textOffset, getStringForColorNumberB10(i) + TString::Format(" (%d)", i));
}
text->SetTextColor(tableau::getTableau10BlindColor("DimGray"));
text->SetTextAlign(21);
text->SetTextSize(0.04);
text->DrawText(xOffset + (spacing + 2 * boxWidth) / 2, (yOffset + 10.5 * spacing + 10.5 * boxHeight), "Tableau 20");
text->DrawText(xOffset + 2 * spacing + spacing + 2 * boxWidth + boxWidth / 2, (yOffset + 10.5 * spacing + 10.5 * boxHeight), "Tableau B10");
colorCanvas->SaveAs("Tableau20B10.pdf");
colorCanvas->SaveAs("Tableau20B10.svg");
colorCanvas->SaveAs("Tableau20B10.png");
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment