[SOLVED] Graph Y-axis Increments - Millions vs 1000s
Hello
I am working on a line graph and having issue with Y-axis scale increments.
Is it possible to limit the count of numbers on Y-axis scale to 5? (fox example - 0,10,20,30,40). I am able to adjust the scale between numbers but not aware of how to limit the count.
I am looking to change scale to millions if maximum value in data is greater than 1 million and keep it in thousands if maximum value is less than 1 million. Is this possible directly? I am thinking to calculate the maximum number and then set up amper variable using IF condition and use that amper variable value to control millions/thousands. Any other efficient method?
Please suggest. Thank you.This message has been edited. Last edited by: BI_Developer,
WF 8.2.01 APP STUDIO PDF,HTML,EXL2K,Active
September 05, 2019, 07:39 AM
MartinY
You need to add these lines where you can pass parameters instead of fix value
-* To manage maximum displayed value in Y-axis
setScaleMaxAuto(getY1Axis(),false);
setScaleMax(getY1Axis(),100.0);
-* To manage steps in Y-axis
setGridStepAuto(getY1MajorGrid(),false);
setGridStep(getY1MajorGrid(),10.0);
As you stated yourself, you will have first to determine what is your maximum and if it has to be displayed in M or K. You will then be able to calculate the step value to pass.
WF versions : Prod 8.2.04M gen 33, Dev 8.2.04M gen 33, OS : Windows, DB : MSSQL, Outputs : HTML, Excel, PDF In Focus since 2007
September 05, 2019, 12:17 PM
BI_Developer
Thanks Martin. I calculated the maximum value and then divided it by 5 to control the number of values on Y-axis scale. It is all working fine. But I am looking to display M and K in scale.
setTextFormatPreset(getY1Label(),15);
When I used above statement, it displays in millions (90,000,000 shows as 90M). I am not able to find an option to show in K (90,000K). It would be OK even if $ symbol shows up prefixing the number.
quote:
Originally posted by MartinY: You need to add these lines where you can pass parameters instead of fix value
-* To manage maximum displayed value in Y-axis
setScaleMaxAuto(getY1Axis(),false);
setScaleMax(getY1Axis(),100.0);
-* To manage steps in Y-axis
setGridStepAuto(getY1MajorGrid(),false);
setGridStep(getY1MajorGrid(),10.0);
As you stated yourself, you will have first to determine what is your maximum and if it has to be displayed in M or K. You will then be able to calculate the step value to pass.
WF 8.2.01 APP STUDIO PDF,HTML,EXL2K,Active
September 05, 2019, 01:18 PM
MartinY
As $999K
setTextFormatPreset(getY1Label(),8);
As 999K
setTextFormatPreset(getY1Label(),7);
WF versions : Prod 8.2.04M gen 33, Dev 8.2.04M gen 33, OS : Windows, DB : MSSQL, Outputs : HTML, Excel, PDF In Focus since 2007
September 05, 2019, 01:33 PM
BI_Developer
quote:
Originally posted by MartinY: As $999K
setTextFormatPreset(getY1Label(),8);
As 999K
setTextFormatPreset(getY1Label(),7);
I tried these before posting here. This is showing 3 decimal places. I am looking for only 1 decimal place in millions or thousands.
WF 8.2.01 APP STUDIO PDF,HTML,EXL2K,Active
September 05, 2019, 02:18 PM
MartinY
It's not showing any decimal at all in the Y-axis but it does (2 decimals) in the bar tooltip as per COMPUTE definition
ENGINE INT CACHE SET ON
SET PAGE-NUM=NOLEAD
SET ARGRAPHENGINE=JSCHART
SET EMBEDHEADING=ON
SET GRAPHDEFAULT=OFF
-DEFAULTH &WF_STYLE_UNITS='PIXELS';
-DEFAULTH &WF_STYLE_HEIGHT='405.0';
-DEFAULTH &WF_STYLE_WIDTH='770.0';
-DEFAULTH &WF_TITLE='WebFOCUS Report';
ENGINE INT CACHE SET ON
SET PAGE-NUM=NOLEAD
SET ARGRAPHENGINE=JSCHART
SET EMBEDHEADING=ON
SET GRAPHDEFAULT=OFF
-DEFAULTH &WF_STYLE_UNITS='PIXELS';
-DEFAULTH &WF_STYLE_HEIGHT='405.0';
-DEFAULTH &WF_STYLE_WIDTH='770.0';
-DEFAULTH &WF_TITLE='WebFOCUS Report';
GRAPH FILE car
SUM COMPUTE SLS/P8.2C=(SALES + 100) * 100 ; AS 'Sales'
BY CAR.ORIGIN.COUNTRY
ON GRAPH PCHOLD FORMAT JSCHART
ON GRAPH SET VZERO OFF
ON GRAPH SET AUTOFIT ON
ON GRAPH SET GRWIDTH 1
ON GRAPH SET UNITS &WF_STYLE_UNITS
ON GRAPH SET HAXIS &WF_STYLE_WIDTH
ON GRAPH SET VAXIS &WF_STYLE_HEIGHT
ON GRAPH SET LOOKGRAPH BAR
ON GRAPH SET AUTOFIT ON
ON GRAPH SET STYLE *
*GRAPH_SCRIPT
setPieDepth(0);
setPieTilt(0);
setDepthRadius(0);
setPlace(true);
setCurveFitEquationDisplay(false);
*END
INCLUDE=IBFS:/FILE/IBI_HTML_DIR/ibi_themes/Warm.sty,$
TYPE=REPORT, TITLETEXT=&WF_TITLE.QUOTEDSTRING, $
TYPE=DATA, COLUMN=N1, BUCKET=x-axis, $
TYPE=DATA, COLUMN=N2, BUCKET=y-axis, $
*GRAPH_SCRIPT
setReportParsingErrors(false);
setSelectionEnableMove(false);
setTextFormatPreset(getY1Label(), 8);
*END
ENDSTYLE
END
-RUN
To have decimal and K separator in Y-axis use below
ENGINE INT CACHE SET ON
SET PAGE-NUM=NOLEAD
SET ARGRAPHENGINE=JSCHART
SET EMBEDHEADING=ON
SET GRAPHDEFAULT=OFF
-DEFAULTH &WF_STYLE_UNITS='PIXELS';
-DEFAULTH &WF_STYLE_HEIGHT='405.0';
-DEFAULTH &WF_STYLE_WIDTH='770.0';
-DEFAULTH &WF_TITLE='WebFOCUS Report';
ENGINE INT CACHE SET ON
SET PAGE-NUM=NOLEAD
SET ARGRAPHENGINE=JSCHART
SET EMBEDHEADING=ON
SET GRAPHDEFAULT=OFF
-DEFAULTH &WF_STYLE_UNITS='PIXELS';
-DEFAULTH &WF_STYLE_HEIGHT='405.0';
-DEFAULTH &WF_STYLE_WIDTH='770.0';
-DEFAULTH &WF_TITLE='WebFOCUS Report';
GRAPH FILE car
SUM COMPUTE SLS/P8.2C=(SALES + 100) * 100 ; AS 'Sales'
BY CAR.ORIGIN.COUNTRY
ON GRAPH PCHOLD FORMAT JSCHART
ON GRAPH SET VZERO OFF
ON GRAPH SET AUTOFIT ON
ON GRAPH SET GRWIDTH 1
ON GRAPH SET UNITS &WF_STYLE_UNITS
ON GRAPH SET HAXIS &WF_STYLE_WIDTH
ON GRAPH SET VAXIS &WF_STYLE_HEIGHT
ON GRAPH SET LOOKGRAPH BAR
ON GRAPH SET AUTOFIT ON
ON GRAPH SET STYLE *
*GRAPH_SCRIPT
setPieDepth(0);
setPieTilt(0);
setDepthRadius(0);
setPlace(true);
setCurveFitEquationDisplay(false);
*END
INCLUDE=IBFS:/FILE/IBI_HTML_DIR/ibi_themes/Warm.sty,$
TYPE=REPORT, TITLETEXT=&WF_TITLE.QUOTEDSTRING, $
TYPE=DATA, COLUMN=N1, BUCKET=x-axis, $
TYPE=DATA, COLUMN=N2, BUCKET=y-axis, $
*GRAPH_SCRIPT
setReportParsingErrors(false);
setSelectionEnableMove(false);
*END
*GRAPH_JS
yaxis: {numberFormat: {"mode": "currency", "decimalPlaces": 2, "grouping": "K"}}
*END
ENDSTYLE
END
-RUN