col and row decide how to split the data into columns and rows of plots.
Examples
This makes a histogram of total bills for each species in separate columns.
Data Analysis Python
import seaborn as sns
import matplotlib.pyplot as plt
# Create a grid with plots for each species
sns.FacetGrid(tips, col='species').map(sns.histplot, 'total_bill')
plt.show()
This creates scatter plots split by time (rows) and sex (columns).
This program loads penguin data and creates scatter plots of flipper length vs bill length for each species in separate columns.
Data Analysis Python
import seaborn as sns
import matplotlib.pyplot as plt
# Load example dataset
penguins = sns.load_dataset('penguins')
# Create a FacetGrid with species as columns
grid = sns.FacetGrid(penguins, col='species')
# Map scatterplot of flipper_length vs bill_length
grid.map(sns.scatterplot, 'flipper_length_mm', 'bill_length_mm')
plt.show()
OutputSuccess
Important Notes
FacetGrid works best with categorical variables to split data.
You can customize plots inside each panel using different seaborn plot functions.
Remember to call plt.show() to display the plots.
Summary
FacetGrid splits data into small groups and shows each group in its own plot.
Use col and row to arrange panels by categories.
Map plotting functions to create charts inside each panel.
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.