Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Recharts set Y-axis range

Can't figure out how to set the range of Y-axis using http://recharts.org/

Want the Y-axis to display 100 in it's range instead of current 60.

Recharts

Belive code example is not needed or fill purpose in this specific case

like image 808
Mathias Asberg Avatar asked Apr 28 '18 16:04

Mathias Asberg


5 Answers

On YAxis component set the domain value from 0 to 100(or whatever u want)

 <YAxis type="number" domain={[0, 20000]}/>

Check this fiddle Link

Domain DEFAULT: [0, 'auto']

Specify the domain of axis when the axis is a number axis. The length of domain should be 2, and we will validate the values in domain. And each element in the array can be a number, 'auto', 'dataMin', 'dataMax', a string like 'dataMin - 20', 'dataMax + 100', or a function that accepts a single argument and returns a number. If any element of domain is set to be 'auto', comprehensible scale ticks will be calculated, and the final domain of axis is generated by the ticks.

FORMAT:

<YAxis type="number" domain={['dataMin', 'dataMax']} />
<YAxis type="number" domain={[0, 'dataMax']} />
<YAxis type="number" domain={['auto', 'auto']} />
<YAxis type="number" domain={[0, 'dataMax + 1000']} />
<YAxis type="number" domain={['dataMin - 100', 'dataMax + 100']} />
<YAxis type="number" domain={[dataMin => (0 - Math.abs(dataMin)), dataMax => (dataMax * 2)]} />
like image 180
Gautam Naik Avatar answered Oct 19 '22 19:10

Gautam Naik


If the values of the chart exceed the customized domain range, then the domain boundaries set get ignored. I've had this problem because I use custom shapes, where negative values get stacked like positive values on top (but in a different color). Specifying the domain={[0, 'dataMax + 1000']} did not work, as the y axis still showed negative numbers – untill i set allowDataOverflow={true}

<YAxis domain={[0, 'dataMax + 1000']} allowDataOverflow={true} />
like image 25
cmau Avatar answered Oct 19 '22 18:10

cmau


One more thing about this

"type" can be of 2 types 'number', 'category'

domain will be applied for only number type of axis.

if domain is not getting applied then check your axis type

like image 3
Bhagawat Dongre Avatar answered Oct 19 '22 19:10

Bhagawat Dongre


Suppose you are drawing a multiline graph and have custom YAxis on calculation.

So, You can define custom dataKey out of data then

   <YAxis type="number" 
           dataKey={(v)=>parseInt(v.someValue)}
           domain={[0, 'dataMax+100']} />
like image 1
Ajay Kumar Avatar answered Oct 19 '22 17:10

Ajay Kumar


if issue is still there it might be because of axis values is string types.

manually typecast your values to number it might get resolved.

like image 1
Vikas Sharma Avatar answered Oct 19 '22 17:10

Vikas Sharma