The Victory lets us add charts and data visualization into our React app.
In this article, we’ll look at how to add charts into our React app with Nivo.
Map Chart
We can render the map chart with the Choropleth component.
To add it, we first have to install the @nivo/geo package by running:
npm i @nivo/geo
Then we add the chart by writing:
import React from "react";
import { ResponsiveChoropleth } from "@nivo/geo";
import countries from "./world-countries";
const data = [
{
id: "AFG",
value: 928048
},
{
id: "AGO",
value: 704643
},
{
id: "ALB",
value: 641894
}
];
const MyResponsiveChoropleth = ({ data }) => (
<ResponsiveChoropleth
data={data}
features={countries.features}
margin={{ top: 0, right: 0, bottom: 0, left: 0 }}
colors="nivo"
domain={[0, 1000000]}
unknownColor="#666666"
label="properties.name"
valueFormat=".2s"
projectionTranslation={[0.5, 0.5]}
projectionRotation={[0, 0, 0]}
enableGraticule={true}
graticuleLineColor="#dddddd"
borderWidth={0.5}
borderColor="#152538"
legends={[
{
anchor: "bottom-left",
direction: "column",
justify: true,
translateX: 20,
translateY: -100,
itemsSpacing: 0,
itemWidth: 94,
itemHeight: 18,
itemDirection: "left-to-right",
itemTextColor: "#444444",
itemOpacity: 0.85,
symbolSize: 18,
effects: [
{
on: "hover",
style: {
itemTextColor: "#000000",
itemOpacity: 1
}
}
]
}
]}
/>
);
export default function App() {
return (
<div style={{ width: 400, height: 300 }}>
<MyResponsiveChoropleth data={data} />
</div>
);
}
The world-countries.json file can be copied from https://raw.githubusercontent.com/plouc/nivo/master/website/src/data/components/geo/world_countries.json
The data array has the country code for the id value and the value has the value we display.
Then in MyResponsiveChoropleth component renders the ResponsiveChoropleth component that lets us set various options.
We use the features property from the world-countries JSON to display the countries.
domain has the domain for the data values.
projectionTranslation lets us translate the map.
projectionRotation lets us rotate the map.
label has the property oath from the JSON data to use as the label.
unknownColor has the full color for the countries when they have unknown values.
In the legends prop, we have various options.
anchor has the legend position.
direction has the direction for the list items.
itemWidth and itemHeight have the item dimensions.
itemTextColor have the item text color.
effects have the animation effect when we hover over the country with values.
We set the item text color and its opacity in the style property.
Then in App , we set the width and height of the div so we can render the chart.
Conclusion
We can render a map chart in our React app with Nivo’s choropleth component.