📖 Scenario: You work as a data analyst for a car company. You have data about different cars, including their type, fuel efficiency, and horsepower. You want to compare how horsepower relates to fuel efficiency for different types of cars.
🎯 Goal: Build a multi-panel plot using FacetGrid from the seaborn library to visualize the relationship between horsepower and fuel efficiency for each car type.
📋 What You'll Learn
Create a pandas DataFrame called cars with given data
Create a FacetGrid object with cars DataFrame, using car_type as the column facet
Map a scatter plot of horsepower vs mpg on the FacetGrid
Display the plot using plt.show()
💡 Why This Matters
🌍 Real World
Multi-panel plots help compare patterns across groups, such as car types, customer segments, or product categories.
💼 Career
Data analysts and scientists use FacetGrid to explore and present data insights clearly and efficiently.
Progress0 / 4 steps
1
Create the cars DataFrame
Create a pandas DataFrame called cars with these exact columns and values: car_type with ['Sedan', 'SUV', 'Sedan', 'SUV', 'Truck', 'Truck'], horsepower with [130, 250, 115, 300, 210, 230], and mpg with [30, 20, 35, 18, 15, 14].
Data Analysis Python
Hint
Use pd.DataFrame with a dictionary where keys are column names and values are lists of data.
2
Create the FacetGrid object
Import seaborn as sns and matplotlib.pyplot as plt. Then create a FacetGrid object called g using the cars DataFrame, setting col='car_type' to create one panel per car type.
Data Analysis Python
Hint
Use sns.FacetGrid with cars and col='car_type'.
3
Map scatter plot on FacetGrid
Use the map method on the FacetGrid object g to plot a scatter plot with plt.scatter, mapping horsepower on the x-axis and mpg on the y-axis.
Data Analysis Python
Hint
Use g.map(plt.scatter, 'horsepower', 'mpg') to plot points.
4
Display the plot
Use plt.show() to display the multi-panel scatter plot.
Data Analysis Python
Hint
Call plt.show() to display the figure window.
Practice
(1/5)
1. What is the main purpose of using FacetGrid in data visualization?
easy
A. To perform statistical tests on data
B. To create a single plot with multiple lines
C. To split data into multiple panels for easier comparison
D. To clean and preprocess data before plotting
Solution
Step 1: Understand FacetGrid functionality
FacetGrid is designed to split data into multiple smaller plots based on categories.
Step 2: Identify the main use case
This splitting helps compare subsets of data side by side visually.
Final Answer:
To split data into multiple panels for easier comparison -> Option C
Quick Check:
FacetGrid = multi-panel comparison [OK]
Hint: FacetGrid = split data into panels for comparison [OK]
Common Mistakes:
Thinking FacetGrid creates a single combined plot
Confusing FacetGrid with data cleaning tools
Assuming FacetGrid performs statistical analysis
2. Which of the following is the correct way to create a FacetGrid with columns based on the 'species' column in a DataFrame df using seaborn?
easy
A. sns.FacetGrid(df, split='species')
B. sns.FacetGrid(df, row='species')
C. sns.FacetGrid(df, group='species')
D. sns.FacetGrid(df, col='species')
Solution
Step 1: Recall FacetGrid parameters
The parameter to split data into columns is col.
Step 2: Match parameter with 'species'
Using col='species' splits the grid into columns by species.
Final Answer:
sns.FacetGrid(df, col='species') -> Option D
Quick Check:
Use col= for columns in FacetGrid [OK]
Hint: Use col='column_name' to split by columns [OK]
Common Mistakes:
Using 'group' or 'split' which are invalid parameters
Confusing row and col parameters
Missing quotes around column name
3. Given the following code, what will be the output type of g?
import seaborn as sns
import pandas as pd
df = pd.DataFrame({
'category': ['A', 'A', 'B', 'B'],
'value': [10, 15, 10, 20]
})
g = sns.FacetGrid(df, col='category')
medium
A. A FacetGrid object with two column panels for categories A and B
B. A DataFrame filtered by category
C. A matplotlib Figure object
D. A dictionary of plots keyed by category
Solution
Step 1: Understand FacetGrid return type
Creating a FacetGrid returns a FacetGrid object that manages multiple plot panels.
Step 2: Check the col parameter effect
Using col='category' splits the grid into columns for each unique category value, here 'A' and 'B'.
Final Answer:
A FacetGrid object with two column panels for categories A and B -> Option A
Quick Check:
FacetGrid object = multi-panel grid [OK]
Hint: FacetGrid returns a grid object, not data or dict [OK]
Common Mistakes:
Expecting a DataFrame instead of a FacetGrid
Thinking it returns a matplotlib Figure directly
Assuming it returns a dictionary of plots
4. What is wrong with this code snippet?
import seaborn as sns
import pandas as pd
df = pd.DataFrame({
'type': ['X', 'Y', 'X', 'Y'],
'score': [5, 7, 6, 8]
})
g = sns.FacetGrid(df, col=type)
g.map(sns.histplot, 'score')
medium
A. DataFrame is missing required columns
B. The variable 'type' is not defined; it should be a string 'type'
C. sns.histplot cannot be used with FacetGrid
D. FacetGrid cannot use 'col' parameter
Solution
Step 1: Check parameter usage in FacetGrid
The col parameter expects a string with the column name, not a variable.
Step 2: Identify the error in code
Using col=type without quotes causes a NameError because 'type' is not defined as a variable.
Final Answer:
The variable 'type' is not defined; it should be a string 'type' -> Option B
Quick Check:
Use quotes for column names in FacetGrid [OK]
Hint: Always quote column names in FacetGrid parameters [OK]
Common Mistakes:
Using variable names without quotes for column names
Thinking FacetGrid can't use histplot
Assuming DataFrame columns are missing
5. You want to create a multi-panel plot showing the distribution of 'total_bill' by 'day' and 'time' from the seaborn 'tips' dataset. Which code correctly creates a FacetGrid with rows for 'time' and columns for 'day' and plots histograms of 'total_bill'?
hard
A. g = sns.FacetGrid(tips, row='time', col='day')
g.map(sns.histplot, 'total_bill')
B. g = sns.FacetGrid(tips, col='time', row='day')
g.map(sns.histplot, 'total_bill')
C. g = sns.FacetGrid(tips, group='time', split='day')
g.map(sns.histplot, 'total_bill')
D. g = sns.FacetGrid(tips, row='total_bill', col='day')
g.map(sns.histplot, 'time')
Solution
Step 1: Identify correct row and column parameters
Rows should be split by 'time' and columns by 'day' as per requirement.
Step 2: Confirm correct mapping of histogram
Use g.map(sns.histplot, 'total_bill') to plot histograms of 'total_bill'.
Step 3: Check for invalid parameters
Options with 'group' or swapped row/col are incorrect.
Final Answer:
g = sns.FacetGrid(tips, row='time', col='day')
g.map(sns.histplot, 'total_bill') -> Option A
Quick Check:
row='time', col='day', map histplot on 'total_bill' [OK]
Hint: Use row= for rows, col= for columns, map plot on target column [OK]
Common Mistakes:
Swapping row and col parameters
Using invalid parameters like group or split
Mapping plot on wrong column
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.