Focal Point
coloring bars based on x-axis labels

This topic can be found at:
https://forums.informationbuilders.com/eve/forums/a/tpc/f/7971057331/m/2711030292

July 18, 2008, 04:42 PM
<Shane>
coloring bars based on x-axis labels
All:

I've searched for an answer but can't seem to find one...

We have a combination bar & line graph with "month - year" on the x-axis. We'd like to be able to color the bars different based on the year in the x-axis label string.

Can this be done?

Shane
July 18, 2008, 04:48 PM
Tom Flynn
Hey Shane,

Check out the 3rd response from Francis:

Here


Also, you can dynamically change colors with Dialogue Manager:

  


-SET &SC0 = IF &VAL1 EQ 'WHATEVER' THEN '109,186,127' ELSE 'XXX,XXX,XXX';
-SET &SC1 = '158,144,188';
-SET &SC2 = '100,0,81';
-SET &SC3 = '240,159,97';
-SET &SC4 = '206,0,54';

-* SET THE COLORS OF THE SERIES
setFillColor(getSeries(0),new Color(&SC0));
setFillColor(getSeries(1),new Color(&SC1));
setFillColor(getSeries(2),new Color(&SC2));
setFillColor(getSeries(3),new Color(&SC3));
setFillColor(getSeries(4),new Color(&SC4));
-*


I "think" that's what you are looking to do...

Tom

This message has been edited. Last edited by: Tom Flynn,


Tom Flynn
WebFOCUS 8.1.05 - PROD/QA
DB2 - AS400 - Mainframe
July 21, 2008, 09:37 AM
<Shane>
Well, maybe this will help explain it a little better. In addition to the x-axis displaying "month-year", it also doensn't go in chronological order. Here's an example of how the x-axis would look like:

10-2005 10-2006 10-2007 11-2005 11-2006 11-2007 12-2005 12-2006 12-2007 1-2006 1-2007 1-2008...

Shane
July 21, 2008, 10:25 AM
GinnyJakes
I have posted a technique that allows you to present the series in the order that you want. Search on graph or my name.


Ginny
---------------------------------
Prod: WF 7.7.01 Dev: WF 7.6.9-11
Admin, MRE,self-service; adapters: Teradata, DB2, Oracle, SQL Server, Essbase, ESRI, FlexEnable, Google
July 21, 2008, 10:44 AM
<Shane>
Ginny,

I've got it in the order that I want...I just can't get each bar of the graph in the color that I want...

  RED     BLUE  ORANGE    RED     BLUE  ORANGE    RED     BLUE  ORANGE   BLUE  ORANGE SILVER
10-2005 10-2006 10-2007 11-2005 11-2006 11-2007 12-2005 12-2006 12-2007 1-2006 1-2007 1-2008

Shane
July 21, 2008, 11:45 AM
Tom Flynn
Shane,

This works:

  
-SET &B0= '';
-SET &B1= '';
-SET &B2= '';
-SET &B3= '';
-SET &B4= '';
-SET &B5= '';
-SET &B6= '';
-SET &B7= '';
-SET &B8= '';
-SET &B9= '';
-SET &B10='';
-SET &B11='';
-SET &O0= '';
-SET &O1= '';
-SET &O2= '';
-SET &O3= '';
-SET &O4= '';
-SET &O5= '';
-SET &O6= '';
-SET &O7= '';
-SET &O8= '';
-SET &O9= '';
-SET &O10='';
-SET &O11='';
-SET &R0= '';
-SET &R1= '';
-SET &R2= '';
-SET &R3= '';
-SET &R4= '';
-SET &R5= '';
-SET &R6= '';
-SET &R7= '';
-SET &R8= '';
-SET &R9= '';
-SET &R10='';
-SET &R11='';
DEFINE FILE GGSALES
DTE1/A8    = EDIT(DATE);
DTE2/A7    = EDIT(DTE1,'$$$$99-') || EDIT(DTE1,'9999');
DOLS/P13.2M= DOLLARS;
YEAR/YY    = DATE;
END
TABLE FILE GGSALES
  BY YEAR
 ON TABLE SAVE
END
-RUN
-SET &XLINES = &LINES;
-SET &ECHO=ALL;
-DO_COLORS
-SET &PASS=0;
-SET_COLORS
-SET &XCOL = DECODE &PASS (0 'B' 1 'O' ELSE 'R');
-SET &CNTR = 0;
-REPEAT X_COLORS 12 TIMES
-SET &COLOR = DECODE &PASS (0 '0,0,255' 1 '255,165,0' ELSE '255,0,0');
-SET &XCOL  = IF &PASS EQ 0 THEN 'B' | &CNTR ELSE
-             IF &PASS EQ 1 THEN 'O' | &CNTR ELSE 'R' | &CNTR;
-SET &XCOL.EVAL = &COLOR;
-SET &CNTR = &CNTR + 1;
-X_COLORS
-SET &PASS = &PASS + 1;
-IF &PASS GT &XLINES-1 GOTO GOT_EM;
-GOTO SET_COLORS
-GOT_EM
GRAPH FILE GGSALES
SUM
	DOLS
ACROSS DTE2
ON GRAPH SET LOOKGRAPH VBAR
ON GRAPH SET GRAPHEDIT SERVER
ON GRAPH SET BARNUMB OFF
ON GRAPH SET 3D OFF
ON GRAPH SET VZERO ON
ON GRAPH SET GRID ON
ON GRAPH SET GRMERGE ON
ON GRAPH PCHOLD FORMAT PNG
ON GRAPH SET GRAPHSTYLE *
-IF &XLINES EQ 2 GOTO DO_TWO;
-IF &XLINES EQ 3 GOTO DO_THREE;
-DO_TWO
setFillColor(getSeries(0),new Color(&B0.EVAL));
setFillColor(getSeries(1),new Color(&O0.EVAL));
setFillColor(getSeries(2),new Color(&B1.EVAL));
setFillColor(getSeries(3),new Color(&O1.EVAL));
setFillColor(getSeries(4),new Color(&B2.EVAL));
setFillColor(getSeries(5),new Color(&O2.EVAL));
setFillColor(getSeries(6), new Color(&B3.EVAL));
setFillColor(getSeries(7),new Color(&O3.EVAL));
setFillColor(getSeries(8),new Color(&B4.EVAL));
setFillColor(getSeries(9),new Color(&O4.EVAL));
setFillColor(getSeries(10),new Color(&B5.EVAL));
setFillColor(getSeries(11),new Color(&O5.EVAL));
setFillColor(getSeries(12),new Color(&B6.EVAL));
setFillColor(getSeries(13),new Color(&O6.EVAL));
setFillColor(getSeries(14),new Color(&B7.EVAL));
setFillColor(getSeries(15),new Color(&O7.EVAL));
setFillColor(getSeries(16),new Color(&B8.EVAL));
setFillColor(getSeries(17),new Color(&O8.EVAL));
setFillColor(getSeries(18),new Color(&B9.EVAL));
setFillColor(getSeries(19),new Color(&O9.EVAL));
setFillColor(getSeries(20),new Color(&B10.EVAL));
setFillColor(getSeries(21),new Color(&O10.EVAL));
setFillColor(getSeries(22),new Color(&B11.EVAL));
setFillColor(getSeries(23),new Color(&O11.EVAL));
-GOTO DO_THE_REST
-DO_THREE
setFillColor(getSeries(0),new Color(&B0.EVAL));
setFillColor(getSeries(1),new Color(&O0.EVAL));
setFillColor(getSeries(2),new Color(&R0.EVAL));
setFillColor(getSeries(3),new Color(&B1.EVAL));
setFillColor(getSeries(4),new Color(&O1.EVAL));
setFillColor(getSeries(5),new Color(&R1.EVAL));
setFillColor(getSeries(6),new Color(&B2.EVAL));
setFillColor(getSeries(7),new Color(&O2.EVAL));
setFillColor(getSeries(8),new Color(&R2.EVAL));
setFillColor(getSeries(9), new Color(&B3.EVAL));
setFillColor(getSeries(10),new Color(&O3.EVAL));
setFillColor(getSeries(11),new Color(&R3.EVAL));
setFillColor(getSeries(12),new Color(&B4.EVAL));
setFillColor(getSeries(13),new Color(&O4.EVAL));
setFillColor(getSeries(14),new Color(&R4.EVAL));
setFillColor(getSeries(12),new Color(&B5.EVAL));
setFillColor(getSeries(13),new Color(&O5.EVAL));
setFillColor(getSeries(14),new Color(&R5.EVAL));
setFillColor(getSeries(15),new Color(&B6.EVAL));
setFillColor(getSeries(16),new Color(&O6.EVAL));
setFillColor(getSeries(17),new Color(&R6.EVAL));
setFillColor(getSeries(18),new Color(&B7.EVAL));
setFillColor(getSeries(19),new Color(&O7.EVAL));
setFillColor(getSeries(20),new Color(&R7.EVAL));
setFillColor(getSeries(21),new Color(&B8.EVAL));
setFillColor(getSeries(22),new Color(&O8.EVAL));
setFillColor(getSeries(23),new Color(&R8.EVAL));
setFillColor(getSeries(24),new Color(&B9.EVAL));
setFillColor(getSeries(25),new Color(&O9.EVAL));
setFillColor(getSeries(26),new Color(&R9.EVAL));
setFillColor(getSeries(27),new Color(&B10.EVAL));
setFillColor(getSeries(28),new Color(&O10.EVAL));
setFillColor(getSeries(29),new Color(&R10.EVAL));
setFillColor(getSeries(30),new Color(&B11.EVAL));
setFillColor(getSeries(31),new Color(&O11.EVAL));
setFillColor(getSeries(32),new Color(&R11.EVAL));
-DO_THE_REST
setMarkerDisplay(true);
setConnectLineMarkers(false);
setConnectScatterMarkers(false);
setO1LabelDisplay(true);
setO1AxisSide(0);
setO1MajorGridDisplay(true);
setO1MajorGridStyle(0);
setO1MinorGridDisplay(false);
setY1LabelDisplay(true);
setY1AxisSide(0);
setY1MajorGridDisplay(true);
setY1MajorGridStyle(0);
setY1MinorGridDisplay(false);
setTextFormatPreset(getY1Label(), -1);
setTextFormatPattern(getY1Label(),"#.##");
setPieFeelerTextDisplay(1);
setPieLabelDisplay(0);
setTextFormatPreset(getPieSliceLabel(),1);
setRiserBorderMode(1);
setSeriesDefaultTransparentBorderColor(true);
setUseSeriesBorderDefaults(true);
setLegendDisplay(false);
setFontSizeAbsolute(getY1Title(),true);
setFontSizeAbsolute(getY1Label(),true);
setFontSizeAbsolute(getY2Title(),true);
setFontSizeAbsolute(getY2Label(),true);
setFontSizeAbsolute(getO1Title(),true);
setPlace(true);
ENDSTYLE
END
-RUN
-EXIT



Didn't look for Ginny's, it's probably more efficient...

Hope this helps...

Tom


Tom Flynn
WebFOCUS 8.1.05 - PROD/QA
DB2 - AS400 - Mainframe
July 21, 2008, 12:08 PM
<Shane>
Tom,

Thanks for the help...we've got a VBAR2AX graph and it always plots the bar (y1) blue and the line (y2) orange...any ideas on that?

Shane
July 21, 2008, 12:37 PM
Tom Flynn
Hey Shane,

Each BAR, LINE is a series(##), so, if you are plotting 3 years * 12 months, that is 12 sets of 3;
with VBAR2AX, adding VLINE, then 12 sets of 4, so, with a little modification to my previous post, should get you there.

Tom

Edit: If you are talking about the labels, try these:

  
setFillColor(getY2Label(),new Color(178 ,34 ,34));
setFillColor(getY1Label(),new Color(0, 0 ,255));
setReferenceLine(getY1Axis(), 0, 0.01);
setLineBasicStrokeType(getReferenceLine(getY1Axis(),0), 5);

This message has been edited. Last edited by: Tom Flynn,


Tom Flynn
WebFOCUS 8.1.05 - PROD/QA
DB2 - AS400 - Mainframe
July 21, 2008, 02:23 PM
<Shane>
All:

Got it to work using the following code and style additions:

TABLE FILE KOITO_PRODUCTIVITY
SUM MIN.DATE_GROUP AS 'MIN_DATE_GROUP'
BY MONTH
SUM COMPUTE COST_PER_EARNED_HR/D12.2!D = EXPENSE / EARNED_HOURS;
    COMPUTE IO_RATIO/D12.2 = KRONOS_HOURS / EARNED_HOURS;
BY MONTH
BY DATE_GROUP
BY DATE_DISP
WHERE MONTH NE 13;
WHERE ( ( DATE_GROUP GE '&START_MONTH' ) AND ( DATE_GROUP LE '&END_MONTH' ) )
&WHERE_DATE2.EVAL  OR (( DATE_GROUP GE '&START_MONTH2' ) AND ( DATE_GROUP LE '&END_MONTH2' ))
&WHERE_DATE3.EVAL OR (( DATE_GROUP GE '&START_MONTH3' ) AND ( DATE_GROUP LE '&END_MONTH3' ))
;
WHERE ( DEPT_SUB_TYPE EQ '&PROCESS' );
&WHERECLAUSE;
ON TABLE HOLD AS CPEEHOLD
-*ON TABLE PCHOLD FORMAT HTML
END

-* NEW
DEFINE FILE CPEEHOLD
  AYEAR/A4 = EDIT(DATE_GROUP,'9999');
END

TABLE FILE CPEEHOLD
BY AYEAR
ON TABLE SAVE AS CPEESAVE
-*ON TABLE PCHOLD FORMAT HTML
END
-RUN

-SET &YR2 = '';
-SET &YR3 = '';
-SET &YR4 = '';

-SET &YEARS=&LINES;
-REPEAT #GLABELS FOR &I FROM 1 TO &YEARS;
-READ CPEESAVE &YR.A4.
-SET &YR.&I=&YR;
-#GLABELS
-RUN

and for the style:
TYPE=DATA,COLUMN='COST_PER_EARNED_HR',COLOR='BLUE',WHEN=DATE_DISP EQ '01-&YR1',$
TYPE=DATA,COLUMN='COST_PER_EARNED_HR',COLOR='BLUE',WHEN=DATE_DISP EQ '02-&YR1',$
TYPE=DATA,COLUMN='COST_PER_EARNED_HR',COLOR='BLUE',WHEN=DATE_DISP EQ '03-&YR1',$
TYPE=DATA,COLUMN='COST_PER_EARNED_HR',COLOR='BLUE',WHEN=DATE_DISP EQ '04-&YR1',$
TYPE=DATA,COLUMN='COST_PER_EARNED_HR',COLOR='BLUE',WHEN=DATE_DISP EQ '05-&YR1',$
TYPE=DATA,COLUMN='COST_PER_EARNED_HR',COLOR='BLUE',WHEN=DATE_DISP EQ '06-&YR1',$
TYPE=DATA,COLUMN='COST_PER_EARNED_HR',COLOR='BLUE',WHEN=DATE_DISP EQ '07-&YR1',$
TYPE=DATA,COLUMN='COST_PER_EARNED_HR',COLOR='BLUE',WHEN=DATE_DISP EQ '08-&YR1',$
TYPE=DATA,COLUMN='COST_PER_EARNED_HR',COLOR='BLUE',WHEN=DATE_DISP EQ '09-&YR1',$
TYPE=DATA,COLUMN='COST_PER_EARNED_HR',COLOR='BLUE',WHEN=DATE_DISP EQ '10-&YR1',$
TYPE=DATA,COLUMN='COST_PER_EARNED_HR',COLOR='BLUE',WHEN=DATE_DISP EQ '11-&YR1',$
TYPE=DATA,COLUMN='COST_PER_EARNED_HR',COLOR='BLUE',WHEN=DATE_DISP EQ '12-&YR1',$
TYPE=DATA,COLUMN='COST_PER_EARNED_HR',COLOR='BLUE',WHEN=DATE_DISP EQ '12-2005',$
TYPE=DATA,COLUMN='COST_PER_EARNED_HR',COLOR='GREEN',WHEN=DATE_DISP EQ '01-&YR2',$
TYPE=DATA,COLUMN='COST_PER_EARNED_HR',COLOR='GREEN',WHEN=DATE_DISP EQ '02-&YR2',$
TYPE=DATA,COLUMN='COST_PER_EARNED_HR',COLOR='GREEN',WHEN=DATE_DISP EQ '03-&YR2',$
TYPE=DATA,COLUMN='COST_PER_EARNED_HR',COLOR='GREEN',WHEN=DATE_DISP EQ '04-&YR2',$
TYPE=DATA,COLUMN='COST_PER_EARNED_HR',COLOR='GREEN',WHEN=DATE_DISP EQ '05-&YR2',$
TYPE=DATA,COLUMN='COST_PER_EARNED_HR',COLOR='GREEN',WHEN=DATE_DISP EQ '06-&YR2',$
TYPE=DATA,COLUMN='COST_PER_EARNED_HR',COLOR='GREEN',WHEN=DATE_DISP EQ '07-&YR2',$
TYPE=DATA,COLUMN='COST_PER_EARNED_HR',COLOR='GREEN',WHEN=DATE_DISP EQ '08-&YR2',$
TYPE=DATA,COLUMN='COST_PER_EARNED_HR',COLOR='GREEN',WHEN=DATE_DISP EQ '09-&YR2',$
TYPE=DATA,COLUMN='COST_PER_EARNED_HR',COLOR='GREEN',WHEN=DATE_DISP EQ '10-&YR2',$
TYPE=DATA,COLUMN='COST_PER_EARNED_HR',COLOR='GREEN',WHEN=DATE_DISP EQ '11-&YR2',$
TYPE=DATA,COLUMN='COST_PER_EARNED_HR',COLOR='GREEN',WHEN=DATE_DISP EQ '12-&YR2',$
TYPE=DATA,COLUMN='COST_PER_EARNED_HR',COLOR='RED',WHEN=DATE_DISP EQ '01-&YR3',$
TYPE=DATA,COLUMN='COST_PER_EARNED_HR',COLOR='RED',WHEN=DATE_DISP EQ '02-&YR3',$
TYPE=DATA,COLUMN='COST_PER_EARNED_HR',COLOR='RED',WHEN=DATE_DISP EQ '03-&YR3',$
TYPE=DATA,COLUMN='COST_PER_EARNED_HR',COLOR='RED',WHEN=DATE_DISP EQ '04-&YR3',$
TYPE=DATA,COLUMN='COST_PER_EARNED_HR',COLOR='RED',WHEN=DATE_DISP EQ '05-&YR3',$
TYPE=DATA,COLUMN='COST_PER_EARNED_HR',COLOR='RED',WHEN=DATE_DISP EQ '06-&YR3',$
TYPE=DATA,COLUMN='COST_PER_EARNED_HR',COLOR='RED',WHEN=DATE_DISP EQ '07-&YR3',$
TYPE=DATA,COLUMN='COST_PER_EARNED_HR',COLOR='RED',WHEN=DATE_DISP EQ '08-&YR3',$
TYPE=DATA,COLUMN='COST_PER_EARNED_HR',COLOR='RED',WHEN=DATE_DISP EQ '09-&YR3',$
TYPE=DATA,COLUMN='COST_PER_EARNED_HR',COLOR='RED',WHEN=DATE_DISP EQ '10-&YR3',$
TYPE=DATA,COLUMN='COST_PER_EARNED_HR',COLOR='RED',WHEN=DATE_DISP EQ '11-&YR3',$
TYPE=DATA,COLUMN='COST_PER_EARNED_HR',COLOR='RED',WHEN=DATE_DISP EQ '12-&YR3',$
TYPE=DATA,COLUMN='COST_PER_EARNED_HR',COLOR='YELLOW',WHEN=DATE_DISP EQ '01-&YR4',$
TYPE=DATA,COLUMN='COST_PER_EARNED_HR',COLOR='YELLOW',WHEN=DATE_DISP EQ '02-&YR4',$
TYPE=DATA,COLUMN='COST_PER_EARNED_HR',COLOR='YELLOW',WHEN=DATE_DISP EQ '03-&YR4',$
TYPE=DATA,COLUMN='COST_PER_EARNED_HR',COLOR='YELLOW',WHEN=DATE_DISP EQ '04-&YR4',$
TYPE=DATA,COLUMN='COST_PER_EARNED_HR',COLOR='YELLOW',WHEN=DATE_DISP EQ '05-&YR4',$
TYPE=DATA,COLUMN='COST_PER_EARNED_HR',COLOR='YELLOW',WHEN=DATE_DISP EQ '06-&YR4',$
TYPE=DATA,COLUMN='COST_PER_EARNED_HR',COLOR='YELLOW',WHEN=DATE_DISP EQ '07-&YR4',$
TYPE=DATA,COLUMN='COST_PER_EARNED_HR',COLOR='YELLOW',WHEN=DATE_DISP EQ '08-&YR4',$
TYPE=DATA,COLUMN='COST_PER_EARNED_HR',COLOR='YELLOW',WHEN=DATE_DISP EQ '09-&YR4',$
TYPE=DATA,COLUMN='COST_PER_EARNED_HR',COLOR='YELLOW',WHEN=DATE_DISP EQ '10-&YR4',$
TYPE=DATA,COLUMN='COST_PER_EARNED_HR',COLOR='YELLOW',WHEN=DATE_DISP EQ '11-&YR4',$
TYPE=DATA,COLUMN='COST_PER_EARNED_HR',COLOR='YELLOW',WHEN=DATE_DISP EQ '12-&YR4',$

Shane
July 21, 2008, 02:34 PM
Tom Flynn
Shane,

EXCELLENT!!! Many ways to climb the WF mountain..

FYI: Need to remove this line:

TYPE=DATA,COLUMN='COST_PER_EARNED_HR',COLOR='BLUE',WHEN=DATE_DISP EQ '12-2005',$


Tom


Tom Flynn
WebFOCUS 8.1.05 - PROD/QA
DB2 - AS400 - Mainframe
July 24, 2008, 01:36 AM
Piipster
quote:
Many ways to climb the WF mountain..


Yes, indeedy.



Here's one that's a bit shorter, and I didn't take the time to add the dialog manager to make the years dynamic. It would need some tweaking for the overall layout. I was just concentrating on the grouping.

DEFINE FILE GGSALES
DTE1/A8     = EDIT(DATE);
DTE2/A7     = EDIT(DTE1,'$$$$99-') || EDIT(DTE1,'9999');
DOLS/P13.2M = DOLLARS;
YR/YY       = DATE;
END
GRAPH FILE GGSALES
SUM DOLS
BY YR
ACROSS DTE2 AS ''
WHERE YR EQ '1996' OR '1997';
ON GRAPH PCHOLD AS HOLD FORMAT PNG
ON GRAPH SET GRAPHDEFAULT OFF
ON GRAPH SET GRMERGE ON
ON GRAPH SET 3D OFF
ON GRAPH SET VZERO ON
ON GRAPH SET UNITS PIXELS
ON GRAPH SET LOOKGRAPH VBAR
ON GRAPH SET GRID ON
ON GRAPH SET STYLE *
TYPE=DATA, COLOR=BLUE, WHEN=YR EQ 1996,$
TYPE=DATA, COLOR=GREEN, WHEN=YR EQ 1997,$
ENDSTYLE
ON GRAPH SET GRAPHSTYLE *
setLegendDisplay(false);
setMarkerDisplay(true);
setConnectLineMarkers(false);
setConnectScatterMarkers(false);
setO1LabelDisplay(true);
setO1AxisSide(0);
setO1MajorGridDisplay(true);
setO1MajorGridStyle(0);
setO1MinorGridDisplay(false);
setY1LabelDisplay(true);
setY1AxisSide(0);
setY1MajorGridDisplay(true);
setY1MajorGridStyle(0);
setY1MinorGridDisplay(false);
setTextFormatPreset(getY1Label(), -1);
setTextFormatPattern(getY1Label(),"#.##");
setPieFeelerTextDisplay(1);
setPieLabelDisplay(0);
setTextFormatPreset(getPieSliceLabel(),1);
setRiserBorderMode(1);
setSeriesDefaultTransparentBorderColor(true);
setUseSeriesBorderDefaults(true);
setLegendDisplay(false);
setFontSizeAbsolute(getY1Title(),true);
setFontSizeAbsolute(getY1Label(),true);
setFontSizeAbsolute(getY2Title(),true);
setFontSizeAbsolute(getY2Label(),true);
setFontSizeAbsolute(getO1Title(),true);
setPlace(true);
ENDSTYLE
END
  



ttfn, kp


Access to most releases from R52x, on multiple platforms.