Python Central HubSign in

Data Analytics with Python / Phase 7: Interactive Visualization with Plotly

Interactive Bar Charts

Compare categories with interactive bar charts and sorted visuals using Plotly Express.

When to reach for a bar chart

Bars are the right shape when you're comparing totals across separate categories — cities, products, days of the week — where each category stands on its own (no implied continuity between them, unlike a line chart). Bar length is one of the easiest visual encodings for people to compare accurately, which is why bar charts are the safest default for "which is bigger?" questions.

Basic bar chart

Python
import pandas as pd
import plotly.express as px
 
df = pd.DataFrame({
    "city": ["Pune", "Delhi", "Mumbai", "Bengaluru"],
    "sales": [120, 180, 90, 160],
})
 
fig = px.bar(df, x="city", y="sales", title="Sales by city")
fig.show()

Sorted bars

Python
import pandas as pd
import plotly.express as px
 
df = pd.DataFrame({
    "city": ["Pune", "Delhi", "Mumbai", "Bengaluru"],
    "sales": [120, 180, 90, 160],
}).sort_values("sales", ascending=False)
 
fig = px.bar(df, x="city", y="sales", title="Sales by city (sorted)")
fig.show()

Sorting by value (instead of leaving categories alphabetical) turns the chart into a ranking at a glance — the reader doesn't have to hunt for the tallest bar.

Horizontal bar

Python
import plotly.express as px
 
fig = px.bar(df, x="sales", y="city", orientation="h", title="Sales by city")
fig.show()

Horizontal bars are handy when category labels are long — they read left-to-right instead of getting squeezed or rotated on the x-axis.

sketch Bars respond to your mouse — hover one p5.js
Move your cursor over the canvas; the bar under it lifts in amber, mimicking a Plotly hover tooltip.

Tips

  • Sort by value when ranking matters more than alphabetical order.
  • Use color= to add a second grouping dimension (e.g. region) alongside category.
  • Keep the y-axis starting at zero — a truncated axis makes bar-height comparisons misleading.
diagram Bar chart hover interaction mermaid
What happens client-side when a reader moves the mouse over a bar.

Check your understanding

quizCheck yourself
  1. Which call makes the bar chart of sales by city?

    Show answer

    A — px.bar(df, x="city", y="sales") — px.bar takes the category column as x and the value column as y.

  2. How does the lesson sort the bars into a ranking?

    Show answer

    A — sort_values("sales", ascending=False) before plotting — Sorting the DataFrame by value turns the chart into a ranking at a glance.

  3. When are horizontal bars most useful?

    Show answer

    A — Long category labels — Long labels read left to right instead of being squeezed or rotated. Use orientation="h" with the axes swapped.

  4. Why keep a bar chart y-axis starting at zero?

    Show answer

    B — A truncated axis exaggerates differences in bar height — Bar length only reads honestly from a zero baseline.

Next

Continue to: Interactive Scatter Plots for exploring relationships between two variables.

🧪 Try It Yourself

Exercise 1 – Build a Bar Chart

exerciseYour turn

Tab indents. Press Escape, then Tab, to leave the editor. Control plus Enter runs the code; Control plus Shift plus Enter submits it.

Output
Press Run to see what your code prints.

Exercise 2 – Sort Before Plotting

exerciseYour turn

Tab indents. Press Escape, then Tab, to leave the editor. Control plus Enter runs the code; Control plus Shift plus Enter submits it.

Output
Press Run to see what your code prints.

Exercise 3 – Go Horizontal

exerciseYour turn

Tab indents. Press Escape, then Tab, to leave the editor. Control plus Enter runs the code; Control plus Shift plus Enter submits it.

Output
Press Run to see what your code prints.

Was this page helpful?

Let us know how we did