Возможно, это лучшее решение.В библиотеке есть реальная адаптивная поддержка:
import {
FlexibleXYPlot,
FlexibleWidthXYPlot,
FlexibleHeightXYPlot
} from 'react-vis';
FlexibleWidthXYPlot изменяет XYPlot так, что ему больше не требуется ширина, поскольку он будет принимать все с в своем контейнере div.Аналогично, FlexibleHeightXYPlot изменяет XYPlot так, что ему больше не требуется высота, и его высота будет равна его контейнеру div.Наконец, FlexibleXYPlot изменяет XYPlot таким образом, что ему больше не требуются ширина и высота, его размеры будут такими же, как у его контейнера.
Эти компоненты могут использоваться точно так же, как XYPlot:
<FlexibleWidthXYPlot height={100}>
<VerticalBarSeries data={data} />
</FlexibleWidthXYPlot>
<FlexibleHeightXYPlot width={100}>
<VerticalBarSeries data={data} />
</FlexibleHeightXYPlot>
<FlexibleXYPlot>
<VerticalBarSeries data={data} />
</FlexibleXYPlot>
Подробнее:
https://github.com/uber/react-vis/blob/master/docs/flexible-plots.md