I have been working with Python for many years, and one of the most common tasks I face is creating quick visualizations from data.
Many times, the data I receive is in the form of a Python dictionary. Instead of converting it into a DataFrame or CSV, I often directly plot it using Matplotlib bar charts.
In this tutorial, I will show you step by step how to plot a bar chart from a dictionary in Python Matplotlib. I’ll cover multiple methods so you can pick the one that fits your workflow best.
Methods to Use a Python Dictionary for Bar Charts
I like using dictionaries because they are easy to create and manage. For example, if I want to compare the average salaries of different professions in the USA, I can store them in a dictionary like this:
salaries = {
"Software Engineer": 120000,
"Data Scientist": 115000,
"Teacher": 60000,
"Nurse": 75000,
"Accountant": 70000
}This makes it very convenient to directly pass the keys and values into a Matplotlib bar chart.
Method 1 – Use plt.bar() in Python
The simplest way to plot a bar chart from a Python dictionary is by using the plt.bar() function from Matplotlib.
Here is the complete code:
import matplotlib.pyplot as plt
# Sample dictionary with average salaries in the USA
salaries = {
"Software Engineer": 120000,
"Data Scientist": 115000,
"Teacher": 60000,
"Nurse": 75000,
"Accountant": 70000
}
# Extract keys and values
professions = list(salaries.keys())
income = list(salaries.values())
# Create bar chart
plt.bar(professions, income, color="skyblue")
# Add labels and title
plt.xlabel("Profession")
plt.ylabel("Average Salary (USD)")
plt.title("Average Salaries in the USA by Profession")
# Rotate x-axis labels for better readability
plt.xticks(rotation=30)
# Show chart
plt.show()I have executed the above example code and added the screenshot below.

This method is my go-to when I want a quick visualization without much customization. The plt.bar() function directly takes the keys as labels and values as heights.
Method 2 – Horizontal Bar Chart from Python Dictionary
Sometimes, when the dictionary has long keys, a horizontal bar chart looks much better.
Here is the code:
import matplotlib.pyplot as plt
# Sample dictionary with population of US states
population = {
"California": 39500000,
"Texas": 29000000,
"Florida": 21500000,
"New York": 19500000,
"Illinois": 12500000
}
# Extract keys and values
states = list(population.keys())
pop_values = list(population.values())
# Create horizontal bar chart
plt.barh(states, pop_values, color="lightgreen")
# Add labels and title
plt.xlabel("Population (in millions)")
plt.ylabel("States")
plt.title("Top 5 US States by Population")
# Show chart
plt.show()I have executed the above example code and added the screenshot below.

I often use this method when the labels are long or when I want to emphasize the comparative values more clearly.
Method 3 – Sort Python Dictionary Before Plotting
Sometimes, the dictionary data is unordered, and I want to plot the bars in ascending or descending order.
Here’s how I do it in Python:
import matplotlib.pyplot as plt
# Sample dictionary with US car sales
car_sales = {
"Ford": 1800000,
"Toyota": 2200000,
"Chevrolet": 1750000,
"Honda": 1400000,
"Nissan": 1200000
}
# Sort dictionary by values (descending order)
sorted_sales = dict(sorted(car_sales.items(), key=lambda item: item[1], reverse=True))
brands = list(sorted_sales.keys())
sales = list(sorted_sales.values())
# Create bar chart
plt.bar(brands, sales, color="orange")
# Add labels and title
plt.xlabel("Car Brand")
plt.ylabel("Units Sold")
plt.title("Car Sales in the USA (Sorted by Sales)")
# Show chart
plt.show()I have executed the above example code and added the screenshot below.

Sorting makes the visualization much more meaningful, especially when comparing performance across categories.
Method 4 – Add Values on Top of Bars
When presenting data, I often want to display the actual values on top of each bar.
Here’s how I add them:
import matplotlib.pyplot as plt
# Sample dictionary with monthly expenses
expenses = {
"Rent": 1500,
"Groceries": 600,
"Utilities": 200,
"Transport": 300,
"Entertainment": 250
}
categories = list(expenses.keys())
amounts = list(expenses.values())
# Create bar chart
plt.bar(categories, amounts, color="purple")
# Add labels and title
plt.xlabel("Expense Category")
plt.ylabel("Amount (USD)")
plt.title("Monthly Expenses Breakdown")
# Add values on top of bars
for i, value in enumerate(amounts):
plt.text(i, value + 20, str(value), ha="center")
plt.show()I have executed the above example code and added the screenshot below.

This makes the chart more professional and easier to interpret at a glance.
Method 5 – Use pandas with Matplotlib in Python
Although dictionaries are simple, sometimes I convert them into a pandas DataFrame for more flexibility.
Here’s how I do it:
import matplotlib.pyplot as plt
import pandas as pd
# Sample dictionary with average temperatures in US cities
temperatures = {
"New York": 55,
"Los Angeles": 65,
"Chicago": 50,
"Houston": 70,
"Phoenix": 75
}
# Convert dictionary to DataFrame
df = pd.DataFrame(list(temperatures.items()), columns=["City", "Temperature"])
# Plot bar chart using pandas
df.plot(kind="bar", x="City", y="Temperature", color="teal", legend=False)
# Add title and labels
plt.title("Average Annual Temperatures in Major US Cities")
plt.ylabel("Temperature (°F)")
plt.show()I use this method when I want to combine pandas with Matplotlib for more advanced analysis.
Bonus Tip – Customize Colors
Sometimes I want each bar to have a different color. Here’s a quick example:
import matplotlib.pyplot as plt
# Sample dictionary with fruit sales
fruit_sales = {
"Apples": 500,
"Bananas": 400,
"Oranges": 300,
"Grapes": 200,
"Mangoes": 100
}
fruits = list(fruit_sales.keys())
sales = list(fruit_sales.values())
colors = ["red", "yellow", "orange", "purple", "green"]
plt.bar(fruits, sales, color=colors)
plt.title("Fruit Sales in a Local Market")
plt.xlabel("Fruit")
plt.ylabel("Units Sold")
plt.show()This method is excellent when I want to make the chart visually engaging.
Creating a bar chart from a Python dictionary in Matplotlib is simple and powerful.
I showed you different methods:
- Directly using plt.bar()
- Horizontal bar charts with plt.barh()
- Sorting dictionary values before plotting
- Adding values on top of bars
- Using pandas for flexibility
- Customizing colors for better visuals
I personally use these techniques almost daily in my Python projects, whether for quick analysis or professional presentations.
You may also like to read:
- Add Horizontal Grid Lines in Matplotlib
- Matplotlib Horizontal Line with Text in Python
- Remove a Horizontal Line in Matplotlib using Python
- Matplotlib Bar Chart with Different Colors in Python

I am Bijay Kumar, a Microsoft MVP in SharePoint. Apart from SharePoint, I started working on Python, Machine learning, and artificial intelligence for the last 5 years. During this time I got expertise in various Python libraries also like Tkinter, Pandas, NumPy, Turtle, Django, Matplotlib, Tensorflow, Scipy, Scikit-Learn, etc… for various clients in the United States, Canada, the United Kingdom, Australia, New Zealand, etc. Check out my profile.