In this article, we will learn how to Facet a Scatter Plot with Altair. Let’s recall some concepts :
- Altair is a statistical visualization library in Python. It is declarative in nature and is based on Vega and Vega-Lite visualization grammars. It is fast becoming the first choice of people looking for a quick and efficient way to visualize datasets. If you have used imperative visualization libraries like matplotlib, you will be able to rightly appreciate the capabilities of Altair.
- A scatter plot (also called a scatterplot, scatter graph, scatter chart, scattergram, or scatter diagram) is a type of plot or mathematical diagram using Cartesian coordinates to display values for typically two variables for a set of data.
Here, we are making the scatter plot using Altair library. For this, we use Chart() function in Altair to load the data and then use the mark_point() function to make a scatter plot. We then use the aesthetics x and y-axis to encode() function. After making this scatter plot we will facet it with a grouped column values such as clusters.
Steps Needed
- Import Libraries (Altair).
- Create/Load data.
- Use Chart() to load data for plot.
- Use mark_point() to scatter plot.
- Use encode() for x and y axes.
- (Optional)Use properties() for setting width and height.
- Use facet() over scatter plot with clusters.
Examples
Let’s understand the above-mentioned steps with the help of some examples :
Example 1:
In this example, we draw a simple facet Scatter plot with some dummy data. That is shown below:
Below is the implementation:
Python3
# import libraries import altair as alt import pandas as pd import numpy as np np.random.seed( 1 ) # create data df = pd.DataFrame({ 'X' :np.random.randint( 1 , 10 , 50 ), 'Y' :np.random.randint( 1 , 10 , 50 ), 'Cluster' :np.random.randint( 1 , 5 , 50 )}) # Draw Facet Scatter Plot alt.Chart(df).mark_point().encode( x = alt.X( 'X' ), y = alt.Y( 'Y' ) ).properties(width = 200 , height = 200 ).facet( 'Cluster:N' , columns = 2 ) |
Output:
Example 2 : (Iris Data From Vega Dataset)
Python3
# import libraries import altair as alt from vega_datasets import data # load data iris = data.iris() # Draw Facet Scatter Plot alt.Chart(iris).mark_point().encode( x = alt.X( 'sepalLength' ), y = alt.Y( 'sepalWidth' ), color = 'species' ).properties(width = 250 , height = 250 ).facet( 'species:N' , columns = 3 ) |
Output:
Example 3 : (Cars Data From Vega Dataset)
Python3
# import libraries import altair as alt from vega_datasets import data # load data cars = data.cars() # Draw Facet Scatter Plot alt.Chart(cars).mark_point().encode( x = alt.X( 'Displacement' ), y = alt.Y( 'Acceleration' ), size = alt.value( 100 ), color = 'Cylinders' ).properties(width = 250 , height = 250 ).facet( 'Origin:N' , columns = 3 ) |
Output: