Open In App

Plot 2D data on 3D plot in Python

Improve
Improve
Improve
Like Article
Like
Save Article
Save
Share
Report issue
Report

In this article, we will be learning about how to plot 2D data on 3D plot in Python. We will be demonstrating two methods in order to learn the concept. The first method will be using Matplotlib.pyplot.gca() function which is a pyplot module of the matplotlib library. But before that, we need to configure where are we going to create our project and learn the concept. We can either use google colab or we can also do it in our local machine using Sublime Text, Jupiter Notebook or various other code editors. 

Below are various examples which depict how to plot 2D data on 3D plot in Python:

Example 1: 

Using Matplotlib.pyplot.gca() function. The matplotlib.pyplot.gca() function helps us to get the current axis or create one if necessary. In the gca() function, we are defining the projection as a 3D projection.

Python3




# importing numpy package
import numpy as np
# importing matplotlib package
import matplotlib.pyplot as plt
 
# Creating an empty canvas(figure)
fig = plt.figure()
 
# Using the gca function, we are defining
# the current axes as a 3D projection
ax = fig.gca(projection='3d')
 
# Labelling X-Axis
ax.set_xlabel('X-Axis')
 
# Labelling Y-Axis
ax.set_ylabel('Y-Axis')
 
# Labelling Z-Axis
ax.set_zlabel('Z-Axis')
 
# Creating 100 values for X
# in between 0 and 1
x = np.linspace(0, 1, 10)
 
# Creating 100 values for Y
# in between 0 and 1
y = np.linspace(0, 1, 10)
 
# Creating a sine curve
z = np.sin(x * 2 * np.pi) / 2 + 0.5
 
# zdir='z' fixes all the points to zs=0 and
# (x,y) points are plotted in the x-y axis
# of the graph
ax.plot(x, y, zs=0, zdir='z')
 
# zdir='y' fixes all the points to zs=0 and
# (x,y) points are plotted in the x-z axis of the
# graph
ax.plot(x, y, zs=0, zdir='y')
 
# zdir='z' fixes all the points to zs=0 and
# (x,z) points are plotted in the x-y axis of
# the  graph
ax.plot(x, z, zs=0, zdir='z')
 
# Showing the above plot
plt.show()


After creating an empty figure and defining the axes as a 3D projection, plt.show() will make the output look like this.

Explanation:

After labelling each of the axes, we are creating 3 different variables x,y and z where x and y contain 10 evenly spaced elements from 0 to 1 and z is a sine curve. With the help of ax.plot, we are plotting (x,y),(x,z)[2D Data] points on a different axis of the 3D plane. Finally, our output will look something like this:

Output:

Example 2:

In this example, we will not be using Matplotlib.pyplot.gca() function, but we will create a set of 2D data’s along with which we will be making a 2D plot in a 3D projection. The code of the above idea is given below: 

Python3




# importing numpy package
import numpy as np
# importing matplotlib package
import matplotlib.pyplot as plt
 
# creating an empty canvas
fig = plt.figure()
 
# Creating an empty 3D axes of the plot
ax = fig.add_subplot(projection='3d')
 
# Labeling the X Axis
ax.set_xlabel('X Axis')
 
# Labeling the Y-Axis
ax.set_ylabel('Y Axis')
 
# Labeling the Z-Axis
ax.set_zlabel('Z Axis')
 
# Creating X as an array of numbers
# from 1 to 10
x = np.arange(11)
 
# Creating Y as an array of numbers
# which are square of the numbers
# in X
y = x**2
 
# Creating a 2D data Scatter plot for the
# on a 3D axis figure
ax.scatter(x, y, c='b')
 
# Showing the above 3D plot
plt.show()


Explanation:

After importing the packages, we are creating an empty canvas or figure. Then, we are creating the axes of the figure by specifying that it will be 3D projection. If we show write ‘plt.show()’ now and build our code, then the result will be as follows:

After this, we are setting up the labels of the three-axis X, Y and Z. After that we are creating our set of points (x, y) where is a list of numbers created using np.arange() function and y contains the square of each of the numbers present in x. With all the 2D data, we are plotting a scatter plot in our 3D figure where the points (x, y) are denoted blue. After that, we are showing the above figure.

Output:



Last Updated : 26 Oct, 2022
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads