@@ -1558,7 +1558,8 @@ function autoTickRound(ax) {
1558
1558
var rangeexp = Math . floor ( Math . log ( maxend ) / Math . LN10 + 0.01 ) ;
1559
1559
var minexponent = ax . minexponent === undefined ? 3 : ax . minexponent ;
1560
1560
if ( Math . abs ( rangeexp ) > minexponent ) {
1561
- if ( isSIFormat ( ax . exponentformat ) && ! beyondSI ( rangeexp ) ) {
1561
+ if ( ( isSIFormat ( ax . exponentformat ) && ax . exponentformat !== 'SI extended' && ! beyondSI ( rangeexp ) ) ||
1562
+ ( isSIFormat ( ax . exponentformat ) && ax . exponentformat === 'SI extended' && ! beyondSIExtended ( rangeexp ) ) ) {
1562
1563
ax . _tickexponent = 3 * Math . round ( ( rangeexp - 1 ) / 3 ) ;
1563
1564
} else ax . _tickexponent = rangeexp ;
1564
1565
}
@@ -1904,7 +1905,8 @@ function formatLog(ax, out, hover, extraPrecision, hideexp) {
1904
1905
var p = Math . round ( x ) ;
1905
1906
var absP = Math . abs ( p ) ;
1906
1907
var exponentFormat = ax . exponentformat ;
1907
- if ( exponentFormat === 'power' || ( isSIFormat ( exponentFormat ) && beyondSI ( p ) ) ) {
1908
+ if ( exponentFormat === 'power' || ( isSIFormat ( exponentFormat ) && exponentFormat !== 'SI extended' && beyondSI ( p ) ) ||
1909
+ ( isSIFormat ( exponentFormat ) && exponentFormat === 'SI extended' && beyondSIExtended ( p ) ) ) {
1908
1910
if ( p === 0 ) out . text = 1 ;
1909
1911
else if ( p === 1 ) out . text = '10' ;
1910
1912
else out . text = '10<sup>' + ( p > 1 ? '' : MINUS_SIGN ) + absP + '</sup>' ;
@@ -2049,8 +2051,11 @@ function num2frac(num) {
2049
2051
// also automatically switch to sci. notation
2050
2052
var SIPREFIXES = [ 'f' , 'p' , 'n' , 'μ' , 'm' , '' , 'k' , 'M' , 'G' , 'T' ] ;
2051
2053
2054
+ // extending SI prefixes
2055
+ var SIPREFIXES_EXTENDED = [ 'q' , 'r' , 'y' , 'z' , 'a' , 'f' , 'p' , 'n' , 'μ' , 'm' , '' , 'k' , 'M' , 'G' , 'T' , 'P' , 'E' , 'Z' , 'Y' , 'R' , 'Q' ] ;
2056
+
2052
2057
function isSIFormat ( exponentFormat ) {
2053
- return exponentFormat === 'SI' || exponentFormat === 'B' ;
2058
+ return exponentFormat === 'SI' || exponentFormat === 'SI extended' || exponentFormat === ' B';
2054
2059
}
2055
2060
2056
2061
// are we beyond the range of common SI prefixes?
@@ -2064,6 +2069,10 @@ function beyondSI(exponent) {
2064
2069
return exponent > 14 || exponent < - 15 ;
2065
2070
}
2066
2071
2072
+ function beyondSIExtended ( exponent ) {
2073
+ return exponent > 32 || exponent < - 32 ;
2074
+ }
2075
+
2067
2076
function numFormat ( v , ax , fmtoverride , hover ) {
2068
2077
var isNeg = v < 0 ;
2069
2078
// max number of digits past decimal point to show
@@ -2139,7 +2148,8 @@ function numFormat(v, ax, fmtoverride, hover) {
2139
2148
2140
2149
// add exponent
2141
2150
if ( exponent && exponentFormat !== 'hide' ) {
2142
- if ( isSIFormat ( exponentFormat ) && beyondSI ( exponent ) ) exponentFormat = 'power' ;
2151
+ if ( ( isSIFormat ( exponentFormat ) && exponentFormat !== 'SI extended' && beyondSI ( exponent ) ) ||
2152
+ ( isSIFormat ( exponentFormat ) && exponentFormat === 'SI extended' && beyondSIExtended ( exponent ) ) ) exponentFormat = 'power' ;
2143
2153
2144
2154
var signedExponent ;
2145
2155
if ( exponent < 0 ) signedExponent = MINUS_SIGN + - exponent ;
@@ -2153,7 +2163,11 @@ function numFormat(v, ax, fmtoverride, hover) {
2153
2163
} else if ( exponentFormat === 'B' && exponent === 9 ) {
2154
2164
v += 'B' ;
2155
2165
} else if ( isSIFormat ( exponentFormat ) ) {
2156
- v += SIPREFIXES [ exponent / 3 + 5 ] ;
2166
+ if ( exponentFormat !== 'SI extended' ) {
2167
+ v += SIPREFIXES [ exponent / 3 + 5 ] ;
2168
+ } else if ( exponentFormat === 'SI extended' ) {
2169
+ v += SIPREFIXES_EXTENDED [ exponent / 3 + 10 ] ;
2170
+ }
2157
2171
}
2158
2172
}
2159
2173
0 commit comments