A bar chart presents categorical data with rectangular bars with heights or lengths proportional to the values that they represent.
For a bar chart we must define an rx.recharts.bar()
component for each set of values we wish to plot. Each rx.recharts.bar()
component has a data_key
which clearly states which variable in our data we are tracking. In this simple example we plot uv
as a bar against the name
column which we set as the data_key
in rx.recharts.x_axis
.
rx.recharts.bar_chart(
rx.recharts.bar(
data_key="uv", stroke="#8884d8", fill="#8884d8"
),
rx.recharts.x_axis(data_key="name"),
rx.recharts.y_axis(),
data=data,
)
data = [
{"name": "Page A", "uv": 4000, "pv": 2400, "amt": 2400},
{"name": "Page B", "uv": 3000, "pv": 1398, "amt": 2210},
{"name": "Page C", "uv": 2000, "pv": 9800, "amt": 2290},
{"name": "Page D", "uv": 2780, "pv": 3908, "amt": 2000},
{"name": "Page E", "uv": 1890, "pv": 4800, "amt": 2181},
{"name": "Page F", "uv": 2390, "pv": 3800, "amt": 2500},
{"name": "Page G", "uv": 3490, "pv": 4300, "amt": 2100},
]
Multiple bars can be placed on the same bar_chart
, using multiple rx.recharts.bar()
components.
rx.recharts.bar_chart(
rx.recharts.bar(
data_key="uv", stroke="#8884d8", fill="#8884d8"
),
rx.recharts.bar(
data_key="pv", stroke="#82ca9d", fill="#82ca9d"
),
rx.recharts.x_axis(data_key="name"),
rx.recharts.y_axis(),
data=data,
)
data = [
{"name": "Page A", "uv": 4000, "pv": 2400, "amt": 2400},
{"name": "Page B", "uv": 3000, "pv": 1398, "amt": 2210},
{"name": "Page C", "uv": 2000, "pv": 9800, "amt": 2290},
{"name": "Page D", "uv": 2780, "pv": 3908, "amt": 2000},
{"name": "Page E", "uv": 1890, "pv": 4800, "amt": 2181},
{"name": "Page F", "uv": 2390, "pv": 3800, "amt": 2500},
{"name": "Page G", "uv": 3490, "pv": 4300, "amt": 2100},
]
You can also assign a range in the bar by assiging the data_key in the rx.recharts.bar
to a list with two elements, i.e. here a range of two temperatures for each date.
rx.recharts.bar_chart(
rx.recharts.bar(
data_key="temperature",
stroke="#8884d8",
fill="#8884d8",
),
rx.recharts.x_axis(data_key="day"),
rx.recharts.y_axis(),
data=range_data,
)
data = [
{"day": "05-01", "temperature": [-1, 10]},
{"day": "05-02", "temperature": [2, 15]},
{"day": "05-03", "temperature": [3, 12]},
{"day": "05-04", "temperature": [4, 12]},
{"day": "05-05", "temperature": [12, 16]},
{"day": "05-06", "temperature": [5, 16]},
{"day": "05-07", "temperature": [3, 12]},
{"day": "05-08", "temperature": [0, 8]},
{"day": "05-09", "temperature": [-3, 5]},
]
Here is an example of a bar graph with a State
. Here we have defined a function randomize_data
, which randomly changes the data for both graphs when the first defined bar
is clicked on using on_click=BarState.randomize_data
.
class BarState(rx.State):
data = data
def randomize_data(self):
for i in range(len(self.data)):
self.data[i]["uv"] = random.randint(0, 10000)
self.data[i]["pv"] = random.randint(0, 10000)
self.data[i]["amt"] = random.randint(0, 10000)
def index():
return rx.recharts.bar_chart(
rx.recharts.bar(
data_key="uv",
stroke="#8884d8",
fill="#8884d8",
type_="natural",
on_click=BarState.randomize_data,
),
rx.recharts.bar(
data_key="pv",
stroke="#82ca9d",
fill="#82ca9d",
type_="natural",
),
rx.recharts.x_axis(
data_key="name",
),
rx.recharts.y_axis(),
rx.recharts.legend(),
rx.recharts.cartesian_grid(
stroke_dasharray="3 3",
),
data=BarState.data,
width="100%",
height=400,
)
A Bar chart component in Recharts.
A RadialBar chart component in Recharts.
A Bar component in Recharts.