As of December 1, 2020, Focal Point is retired and repurposed as a reference repository. We value the wealth of knowledge that's been shared here over the years. You'll continue to have access to this treasure trove of knowledge, for search purposes only.
Join the TIBCO Community TIBCO Community is a collaborative space for users to share knowledge and support one another in making the best use of TIBCO products and services. There are several TIBCO WebFOCUS resources in the community.
From the Home page, select Predict: WebFOCUS to view articles, questions, and trending articles.
Select Products from the top navigation bar, scroll, and then select the TIBCO WebFOCUS product page to view product overview, articles, and discussions.
Request access to the private WebFOCUS User Group (login required) to network with fellow members.
Former myibi community members should have received an email on 8/3/22 to activate their user accounts to join the community. Check your Spam folder for the email. Please get in touch with us at community@tibco.com for further assistance. Reference the community FAQ to learn more about the community.
This is truly perplexing. I have assigned colors for each of our plants in this line graph and yet the legend colors don't match the lines that they represent. If I understand what is happening in the code here, it seems that after I set the "Conditional Styling" up in the Advanced Graph editor which sets the line colors based on the plant names, it appears to take effect after all of the other graph styling (and use of the template style file) has been set. So it appears that the "Conditional Styling" only applies to the Line Color for each of the plants. It doesn't seem to apply to the legend colors as well.
How do I enforce that the legend colors follow the colors of the lines that they represent? I would think that this would be automatic. They certainly have the same symbols.
I have put together a quick and dirty example using the CENTORD file. It shows that the colors of the legend do not follow the color of the lines.
-* File LineGraphLegendProblem.fex -* WebFocus 7.6.9 HF6 -*INTERNAL_PROPERTIES$GlobalRecordLimit=500;OBJECTID=GLOBAL -*INTERNAL_PROPERTIES$prefixDisplayMode=;OBJECTID=GLOBAL -*INTERNAL_PROPERTIES$fieldDisplayMode=label;OBJECTID=GLOBAL -*INTERNAL_PROPERTIES$SampleData=false;OBJECTID=GLOBAL -*INTERNAL_PROPERTIES$enablePreview=true;OBJECTID=GLOBAL GRAPH FILE CENTORD -* Created by Advanced Graph Assistant SUM CENTORD.PINFO.QUANTITY BY CENTORD.OINFO.PLANT ACROSS CENTORD.OINFO.MONTH ON GRAPH PCHOLD FORMAT PNG ON GRAPH SET GRAPHDEFAULT OFF ON GRAPH SET VZERO OFF ON GRAPH SET HTMLENCODE ON ON GRAPH SET HAXIS 770 ON GRAPH SET VAXIS 405 ON GRAPH SET UNITS PIXELS ON GRAPH SET LOOKGRAPH VLINE ON GRAPH SET GRMERGE ADVANCED ON GRAPH SET GRMULTIGRAPH 0 ON GRAPH SET GRLEGEND 1 ON GRAPH SET GRXAXIS 1 ON GRAPH SET GRAPHSTYLE * setTemplateFile("/images/tdg/template/IBISouthWestern.txt"); setReportParsingErrors(false); setSelectionEnableMove(false); setTransparentBorderColor(getSeries(0),true); setTransparentBorderColor(getSeries(1),true); setTransparentBorderColor(getSeries(2),true); setTransparentBorderColor(getSeries(3),true); setTransparentBorderColor(getSeries(4),true); setTransparentBorderColor(getSeries(5),true); setTransparentBorderColor(getSeries(6),true); setTransparentBorderColor(getSeries(7),true); setTransparentBorderColor(getSeries(8),true); setTransparentBorderColor(getSeries(9),true); setTransparentBorderColor(getSeries(10),true); setDepthRadius(0); setUseSeriesShapes(true); setMarkerSizeDefault(50); setTransparentBorderColor(getChartBackground(),true); setPlace(true); setLegendMarkerPosition(1); setFillColor(getLegendArea(),new Color(255,245,240)); setTextString(getTitle(),"Compare Legend Color To Lines"); setDisplay(getTitle(),true); setTextString(getSubtitle(),"How do I apply conditional styling to the legend?"); setDisplay(getSubtitle(),true); ENDSTYLE ON GRAPH SET STYLE * DEFMACRO=Condition_1, COLOR=RGB(255 0 255), WHEN=N1 EQ 'BOS', $ DEFMACRO=Condition_2, COLOR=RGB(0 128 0), WHEN=N1 EQ 'DAL', $ DEFMACRO=Condition_3, COLOR=RGB(128 0 0), WHEN=N1 EQ 'LA', $ DEFMACRO=Condition_4, COLOR=RGB(0 255 0), WHEN=N1 EQ 'ORL', $ DEFMACRO=Condition_5, COLOR=RGB(255 255 0), WHEN=N1 EQ 'SEA', $ DEFMACRO=Condition_6, COLOR=RGB(0 0 128), WHEN=N1 EQ 'STL', $ TYPE=DATA, ACROSSCOLUMN=N1, MACRO=Condition_1, $ TYPE=DATA, ACROSSCOLUMN=N1, MACRO=Condition_2, $ TYPE=DATA, ACROSSCOLUMN=N1, MACRO=Condition_3, $ TYPE=DATA, ACROSSCOLUMN=N1, MACRO=Condition_4, $ TYPE=DATA, ACROSSCOLUMN=N1, MACRO=Condition_5, $ TYPE=DATA, ACROSSCOLUMN=N1, MACRO=Condition_6, $ ENDSTYLE END -RUNThis message has been edited. Last edited by: Kerry,
WebFOCUS 8.1.0.4 Win Server 2012, Excel, PDF, HTML
Posts: 8 | Location: Paris, IL USA | Registered: December 08, 2009
I was looking forward to that being the simple solution to this problem.
When I switch to ACROSSCOLUMN=PLANT, then the graph drops back to the template colors of the IBISouthWestern.txt file. I have tried other combinations of replacing N1 with PLANT in that style block and that either leaves me with the former problem of legend with differing colors than the lines or the lines using template colors instead of the conditional style colors.
So, Can we use conditional styling to change the legend colors? It looks like we can't. At least not from my experience so far.
And it sounds like it's impossible to apply conditional styling to the legend using the GUI Advance Graph Assistant alone.
I'm running WebFOCUS 7.6.9 with HF6
WebFOCUS 8.1.0.4 Win Server 2012, Excel, PDF, HTML
Posts: 8 | Location: Paris, IL USA | Registered: December 08, 2009
Actually you can but not in the way you think. You can predetermine the series by putting them in a SAVE file. Then using a Dialogue Manager -REPEAT loop and this command in the GRAPHSTYLE section
setFillColor(getSeries(0),new Color(255,0,0));
you can use a DM var for the series number and decode the RGB colors for the series.
I have a post somewhere in the Forum somewhere that I'll look up and post for you.
You are correct in that you can't do it with the GUI but it can be done. And if your series are always in the same order, you don't even need to use the loop. You can use the GUI in the Chart Editor section, Series, and adjust the color for each series.
In the GUI, change each of the Series to the RGB's you defined in your macro's... The N1's should work the way you wanted, now...
hth
-* File NAL_Graph_GUI.fex
-*INTERNAL_PROPERTIES$SampleData=false;OBJECTID=GLOBAL
-*INTERNAL_PROPERTIES$GlobalRecordLimit=500;OBJECTID=GLOBAL
-*INTERNAL_PROPERTIES$FieldDisplayMode=label;OBJECTID=GLOBAL
-*INTERNAL_PROPERTIES$PrefixDisplayMode=;OBJECTID=GLOBAL
GRAPH FILE CENTORD
-* Created by Advanced Graph Assistant
SUM CENTORD.PINFO.QUANTITY
BY CENTORD.OINFO.PLANT
ACROSS CENTORD.OINFO.MONTH
ON GRAPH PCHOLD AS HOLD FORMAT PNG
ON GRAPH SET GRAPHDEFAULT OFF
ON GRAPH SET VZERO OFF
ON GRAPH SET HTMLENCODE ON
ON GRAPH SET GRMERGE ADVANCED
ON GRAPH SET GRMULTIGRAPH 0
ON GRAPH SET GRLEGEND 1
ON GRAPH SET GRXAXIS 1
ON GRAPH SET HAXIS 770
ON GRAPH SET VAXIS 405
ON GRAPH SET UNITS PIXELS
ON GRAPH SET LOOKGRAPH VLINE
ON GRAPH SET GRAPHSTYLE *
setTemplateFile("/images/tdg/template/IBISouthWestern.txt");
setReportParsingErrors(false);
setSelectionEnableMove(false);
setTransparentBorderColor(getSeries(0),true);
setTransparentBorderColor(getSeries(1),true);
setTransparentBorderColor(getSeries(2),true);
setTransparentBorderColor(getSeries(3),true);
setTransparentBorderColor(getSeries(4),true);
setTransparentBorderColor(getSeries(5),true);
setTransparentBorderColor(getSeries(6),true);
setTransparentBorderColor(getSeries(7),true);
setTransparentBorderColor(getSeries(8),true);
setTransparentBorderColor(getSeries(9),true);
setTransparentBorderColor(getSeries(10),true);
setDepthRadius(0);
setUseSeriesShapes(true);
setMarkerSizeDefault(50);
setTransparentBorderColor(getChartBackground(),true);
setPlace(true);
setLegendMarkerPosition(1);
setTextString(getTitle(),"Compare Legend Color To Lines");
setDisplay(getTitle(),true);
setTextString(getSubtitle(),"How do I apply conditional styling to the legend?");
setDisplay(getSubtitle(),true);
setFillColor(getLegendArea(),new Color(255,245,240));
setLegendAutomatic(true);
setDisplay(getBeveledLegend(),false);
setFillColor(getSeries(0),new Color(255,0,255));
setFillColor(getSeries(1),new Color(0,127,0));
setFillColor(getSeries(2),new Color(128,0,0));
setFillColor(getSeries(3),new Color(0,255,0));
setFillColor(getSeries(4),new Color(255,255,0));
setFillColor(getSeries(5),new Color(0,0,128));
ENDSTYLE
ON GRAPH SET STYLE *
DEFMACRO=Condition_1, COLOR=RGB(255 0 255), WHEN=N1 EQ 'BOS', $
DEFMACRO=Condition_2, COLOR=RGB(0 128 0), WHEN=N1 EQ 'DAL', $
DEFMACRO=Condition_3, COLOR=RGB(128 0 0), WHEN=N1 EQ 'LA', $
DEFMACRO=Condition_4, COLOR=RGB(0 255 0), WHEN=N1 EQ 'ORL', $
DEFMACRO=Condition_5, COLOR=RGB(255 255 0), WHEN=N1 EQ 'SEA', $
DEFMACRO=Condition_6, COLOR=RGB(0 0 128), WHEN=N1 EQ 'STL', $
TYPE=DATA, ACROSSCOLUMN=N1, MACRO=Condition_1, $
TYPE=DATA, ACROSSCOLUMN=N1, MACRO=Condition_2, $
TYPE=DATA, ACROSSCOLUMN=N1, MACRO=Condition_3, $
TYPE=DATA, ACROSSCOLUMN=N1, MACRO=Condition_4, $
TYPE=DATA, ACROSSCOLUMN=N1, MACRO=Condition_5, $
TYPE=DATA, ACROSSCOLUMN=N1, MACRO=Condition_6, $
ENDSTYLE
END
This works as long as I still have values for all of the plants, but it breaks down as I drill into specific dates - and then I don't have the data that keeps all of the plants in this order.
In this example that you gave, when I drill down to Order_Date, and specify date ranges for example: WHERE CENTORD.OINFO.ORDER_DATE FROM '20010108' TO '20010114';
then the conditional colors are now out of sync with the specified colors.
Simply put - Conditional Styling (colors in line graphs based on dynamic conditions) applys to line graphs, but does not apply to Legends. It's just not there in the GUI.
I haven't included the drill in this graph (sorry), but I have adjusted the graph to use Order_Date and filtered it as if to zero in on a small date range. What I can see of this data is that Plant STL is not represented by the correct color in the legend. It gets the color for SEA instead. Try adjusting the end date to 2001/01/13 for a more dramatic shift of legend colors.
I think the obvious thing to do at this point is to hard-include my own legend image with all of the plants regardless of the graph.
Tom, folks here say "Hi" back and it's good hearing from you.
-* File NAL_Graph_GUI.fex -*INTERNAL_PROPERTIES$GlobalRecordLimit=500;OBJECTID=GLOBAL -*INTERNAL_PROPERTIES$prefixDisplayMode=;OBJECTID=GLOBAL -*INTERNAL_PROPERTIES$fieldDisplayMode=label;OBJECTID=GLOBAL -*INTERNAL_PROPERTIES$SampleData=false;OBJECTID=GLOBAL -*INTERNAL_PROPERTIES$enablePreview=true;OBJECTID=GLOBAL GRAPH FILE CENTORD -* Created by Advanced Graph Assistant SUM CENTORD.PINFO.QUANTITY BY CENTORD.OINFO.PLANT ACROSS CENTORD.OINFO.ORDER_DATE WHERE CENTORD.OINFO.ORDER_DATE FROM '20010108' TO '20010114'; ON GRAPH PCHOLD AS HOLD FORMAT PNG ON GRAPH SET GRAPHDEFAULT OFF ON GRAPH SET VZERO OFF ON GRAPH SET HTMLENCODE ON ON GRAPH SET HAXIS 850 ON GRAPH SET VAXIS 405 ON GRAPH SET UNITS PIXELS ON GRAPH SET LOOKGRAPH VLINE ON GRAPH SET GRMERGE ADVANCED ON GRAPH SET GRMULTIGRAPH 0 ON GRAPH SET GRLEGEND 1 ON GRAPH SET GRXAXIS 1 ON GRAPH SET GRAPHSTYLE * setTemplateFile("/images/tdg/template/IBISouthWestern.txt"); setReportParsingErrors(false); setSelectionEnableMove(false); setTransparentBorderColor(getSeries(0),true); setTransparentBorderColor(getSeries(1),true); setTransparentBorderColor(getSeries(2),true); setTransparentBorderColor(getSeries(3),true); setTransparentBorderColor(getSeries(4),true); setTransparentBorderColor(getSeries(5),true); setTransparentBorderColor(getSeries(6),true); setTransparentBorderColor(getSeries(7),true); setTransparentBorderColor(getSeries(8),true); setTransparentBorderColor(getSeries(9),true); setTransparentBorderColor(getSeries(10),true); setDepthRadius(0); setUseSeriesShapes(true); setMarkerSizeDefault(50); setTransparentBorderColor(getChartBackground(),true); setPlace(true); setLegendMarkerPosition(1); setTextString(getTitle(),"Compare Legend Color To Lines"); setDisplay(getTitle(),true); setTextString(getSubtitle(),"How do I apply conditional styling to the legend?"); setDisplay(getSubtitle(),true); setFillColor(getLegendArea(),new Color(255,245,240)); setLegendAutomatic(true); setDisplay(getBeveledLegend(),false); setFillColor(getSeries(0),new Color(255,0,255)); setFillColor(getSeries(1),new Color(0,127,0)); setFillColor(getSeries(2),new Color(128,0,0)); setFillColor(getSeries(3),new Color(0,255,0)); setFillColor(getSeries(4),new Color(255,255,0)); setFillColor(getSeries(5),new Color(0,0,128)); ENDSTYLE ON GRAPH SET STYLE * DEFMACRO=Condition_1, COLOR=RGB(255 0 255), WHEN=N1 EQ 'BOS', $ DEFMACRO=Condition_2, COLOR=RGB(0 128 0), WHEN=N1 EQ 'DAL', $ DEFMACRO=Condition_3, COLOR=RGB(128 0 0), WHEN=N1 EQ 'LA', $ DEFMACRO=Condition_4, COLOR=RGB(0 255 0), WHEN=N1 EQ 'ORL', $ DEFMACRO=Condition_5, COLOR=RGB(255 255 0), WHEN=N1 EQ 'SEA', $ DEFMACRO=Condition_6, COLOR=RGB(0 0 128), WHEN=N1 EQ 'STL', $ TYPE=DATA, ACROSSCOLUMN=N1, MACRO=Condition_1, $ TYPE=DATA, ACROSSCOLUMN=N1, MACRO=Condition_2, $ TYPE=DATA, ACROSSCOLUMN=N1, MACRO=Condition_3, $ TYPE=DATA, ACROSSCOLUMN=N1, MACRO=Condition_4, $ TYPE=DATA, ACROSSCOLUMN=N1, MACRO=Condition_5, $ TYPE=DATA, ACROSSCOLUMN=N1, MACRO=Condition_6, $ ENDSTYLE END -RUN
WebFOCUS 8.1.0.4 Win Server 2012, Excel, PDF, HTML
Posts: 8 | Location: Paris, IL USA | Registered: December 08, 2009
Yes, missing data for a period "may" exclude a BY value. The "gang" there know my feelings on the GUI, which, may not function in the real world.
HOLDing the data, -READ on the BY values, then, dynamically setting the colors with DIALOGUE MANAGER Code(as Ginny has stated in her contribution - THANKS, Ginny) will do the trick. The caveat is: Need code knowledge and a bit of experience for this to work.
Good luck while in your learning curve period.
YOU'LL GET IT! Keep on trying!
You have a "great" bunch of people there, I look forward to seeing them in Florida next year...
Thanks for your knowledgable posts Tom and Ginny. I really appreciate the feedback
I realize now that what I am trying to do seemed pretty logical to me when I was working on it. After learning a bit more about the Conditional Styling I realize that it seems to be developed for extraordinary cases - such as when you want the bar in the bar graph to be noticed (RED) when it is beyond a certain limit. A nice example of this would be the following: http://techsupport.information...om/sps/32532543.html
The Legends are just not built to reflect that. It takes more coding to style the Legends to follow specific colors, or probably even more coding to add legends to handle these "Extra" cases. I had really hoped that there was a simple solution within the GUI to apply conditional styling to the Legend or to add some values to the Legend for the extreme cases.
-Mark
WebFOCUS 8.1.0.4 Win Server 2012, Excel, PDF, HTML
Posts: 8 | Location: Paris, IL USA | Registered: December 08, 2009
Yes, you are now finding the limitations of the GUI, Graphical "USER" Interface. When you set fill colors for a graph, the GUI will always begin the Legend Series at SERIES0 incrementing by 1 for each BY value.
So, if you designate BOS as RED, and, there is no data for BOS, the next value will get the RED color.
As "programmers", we have to analyze and "code" for all caveat's the data will reflect. That is "my" criticism of the GUI, and, the way it is portrayed.