📖 Scenario: You are working with sales data for a small store. You want to create a clear and nice-looking bar chart to show the sales of different products.
🎯 Goal: Create a bar plot using pandas and customize it by adding a title, axis labels, and setting the figure size to make the chart easy to understand and visually appealing.
📋 What You'll Learn
Create a pandas DataFrame with product names and sales numbers.
Set a variable for figure size as a tuple.
Use the DataFrame's plot method to create a bar chart with the specified figure size.
Add a title and labels for the x-axis and y-axis.
Print the plot to display the customized chart.
💡 Why This Matters
🌍 Real World
Customizing plots helps make data charts clear and easy to understand for reports or presentations.
💼 Career
Data scientists and analysts often create visualizations with titles and labels to communicate insights effectively.
Progress0 / 4 steps
1
Create the sales data DataFrame
Create a pandas DataFrame called sales_data with two columns: 'Product' and 'Sales'. Use these exact values: 'Apples', 'Bananas', 'Cherries', 'Dates' for products and 30, 45, 15, 10 for sales.
Pandas
Hint
Use pd.DataFrame with a dictionary where keys are column names and values are lists of data.
2
Set the figure size for the plot
Create a variable called fig_size and set it to the tuple (8, 5) to define the width and height of the plot in inches.
Pandas
Hint
Use parentheses to create a tuple for figure size, like (width, height).
3
Create the bar plot with customization
Use sales_data.plot.bar() to create a bar chart. Set x='Product', y='Sales', and figsize=fig_size. Then add a title 'Sales by Product', x-axis label 'Product', and y-axis label 'Number of Sales' using the plot's set_title, set_xlabel, and set_ylabel methods.
Pandas
Hint
Assign the plot to a variable, then use set_title, set_xlabel, and set_ylabel to add text.
4
Display the customized plot
Write a print() statement to display the plot object.
Pandas
Hint
Use print(plot) to show the plot object in the output.
Practice
(1/5)
1. What does the figsize parameter control when creating a plot with pandas?
easy
A. The type of plot (line, bar, scatter).
B. The color of the plot background.
C. The font size of the plot title.
D. The size of the plot figure in inches (width, height).
Solution
Step 1: Understand the role of figsize
The figsize parameter sets the width and height of the plot in inches.
Step 2: Differentiate from other parameters
Color, font size, and plot type are controlled by other parameters, not figsize.
Final Answer:
The size of the plot figure in inches (width, height). -> Option D
Quick Check:
Figsize = plot size in inches [OK]
Hint: Figsize sets plot width and height in inches [OK]
Common Mistakes:
Confusing figsize with color or font size
Thinking figsize changes plot type
Using figsize as a string instead of tuple
2. Which of the following is the correct way to set the plot title and axis labels in pandas?
easy
A. df.plot().set_title('Sales').set_xlabel('Month').set_ylabel('Revenue')
B. df.plot().set(title='Sales', xlabel='Month', ylabel='Revenue')
C. df.plot(title='Sales', x_label='Month', y_label='Revenue')
D. df.plot().title('Sales').xlabel('Month').ylabel('Revenue')
Solution
Step 1: Recall pandas plot method chaining
After plotting, you can chain set_title(), set_xlabel(), and set_ylabel() to set title and labels.
Step 2: Check syntax correctness
df.plot().set_title('Sales').set_xlabel('Month').set_ylabel('Revenue') uses correct method names and chaining syntax. df.plot(title='Sales', x_label='Month', y_label='Revenue') tries to pass labels directly to plot() which is invalid. df.plot().set(title='Sales', xlabel='Month', ylabel='Revenue') uses set() with wrong keys. df.plot().title('Sales').xlabel('Month').ylabel('Revenue') uses non-existent methods.
Final Answer:
df.plot().set_title('Sales').set_xlabel('Month').set_ylabel('Revenue') -> Option A
Quick Check:
Use set_title, set_xlabel, set_ylabel methods [OK]
Hint: Use set_title, set_xlabel, set_ylabel after plot() [OK]
Common Mistakes:
Passing title or labels directly to plot()
Using wrong method names like title() instead of set_title()
Trying to set labels with set() method
3. Given the code below, what will be the size of the plot figure?
import pandas as pd
import matplotlib.pyplot as plt
data = {'A': [1, 3, 2, 4]}
df = pd.DataFrame(data)
ax = df.plot(figsize=(8, 4))
plt.show()
medium
A. 8 inches wide and 4 inches tall
B. 4 inches wide and 8 inches tall
C. Default size because figsize is ignored
D. 8 pixels wide and 4 pixels tall
Solution
Step 1: Understand figsize parameter
The figsize argument takes a tuple (width, height) in inches.
Step 2: Check the given tuple
The tuple is (8, 4), so width is 8 inches and height is 4 inches.
Final Answer:
8 inches wide and 4 inches tall -> Option A
Quick Check:
Figsize=(8,4) means width=8, height=4 inches [OK]
Hint: Figsize tuple is (width, height) in inches [OK]
Common Mistakes:
Swapping width and height values
Thinking figsize uses pixels
Assuming figsize is ignored by pandas
4. Identify the error in the following code that tries to set the plot title and labels:
B. Methods title(), xlabel(), ylabel() do not exist for the plot object.
C. Plotting requires plt.show() to display labels.
D. The DataFrame columns must be strings to set labels.
Solution
Step 1: Check method names on plot object
The plot object returned by pandas uses set_title(), set_xlabel(), and set_ylabel() methods, not title(), xlabel(), or ylabel().
Step 2: Identify the error
Calling plot.title() causes an AttributeError because the method does not exist.
Final Answer:
Methods title(), xlabel(), ylabel() do not exist for the plot object. -> Option B
Quick Check:
Use set_title, set_xlabel, set_ylabel methods [OK]
Hint: Use set_title, set_xlabel, set_ylabel methods [OK]
Common Mistakes:
Using title() instead of set_title()
Forgetting to call plt.show() (though not error here)
Assuming DataFrame columns affect label setting
5. You want to create a bar plot from a DataFrame df with columns 'Year' and 'Sales'. You want the plot to be 10 inches wide and 6 inches tall, with the title 'Annual Sales', x-axis label 'Year', and y-axis label 'Sales'. Which code snippet correctly achieves this?
hard
A. ax = df.plot.bar(x='Year', y='Sales')
plt.title('Annual Sales')
plt.xlabel('Year')
plt.ylabel('Sales')
plt.figure(figsize=(10,6))
B. df.plot.bar(x='Year', y='Sales', title='Annual Sales', x_label='Year', y_label='Sales', figsize=(10,6))
C. ax = df.plot.bar(x='Year', y='Sales', figsize=(10,6))
ax.set_title('Annual Sales')
ax.set_xlabel('Year')
ax.set_ylabel('Sales')
D. df.plot.bar(x='Year', y='Sales')
ax.set_title('Annual Sales')
ax.set_xlabel('Year')
ax.set_ylabel('Sales')
plt.figure(figsize=(10,6))
Solution
Step 1: Set figure size correctly
Figure size must be set in the plot.bar() call using figsize=(10,6). ax = df.plot.bar(x='Year', y='Sales', figsize=(10,6))
ax.set_title('Annual Sales')
ax.set_xlabel('Year')
ax.set_ylabel('Sales') does this correctly.
Step 2: Set title and axis labels on the Axes object
ax = df.plot.bar(x='Year', y='Sales', figsize=(10,6))
ax.set_title('Annual Sales')
ax.set_xlabel('Year')
ax.set_ylabel('Sales') uses ax.set_title(), ax.set_xlabel(), and ax.set_ylabel() which is the correct way to set labels after plotting.
Step 3: Check other options
df.plot.bar(x='Year', y='Sales', title='Annual Sales', x_label='Year', y_label='Sales', figsize=(10,6)) tries to pass title and labels directly to plot.bar(), which is not supported. ax = df.plot.bar(x='Year', y='Sales')
plt.title('Annual Sales')
plt.xlabel('Year')
plt.ylabel('Sales')
plt.figure(figsize=(10,6)) sets figure size after plotting, which has no effect. df.plot.bar(x='Year', y='Sales')
ax.set_title('Annual Sales')
ax.set_xlabel('Year')
ax.set_ylabel('Sales')
plt.figure(figsize=(10,6)) uses ax without defining it and sets figure size after plotting, which is incorrect.