Data Visualization with Matplotlib Fresco Play Hands on:-
LAB 1: Matplotlib-1 My First Plot.
Solution 1: Matplotlib-1 My First Plot.
import numpy as np
import matplotlib.pyplot as plt
def test_the_plot():
# Write your functionality below
# Create a figure of size 12 inches in width, and 6 inches in height. Name it as fig.
fig = plt.figure(figsize=(12, 6))
# Create an axis, associated with figure fig, using add_subplot. Name it as ax.
ax = fig.add_subplot(111)
# Create a list t with values [7, 14, 21, 28, 35]
t = [7, 14, 21, 28, 35]
# Create a list d with values [i*6 for i in t]
d = [i*6 for i in t]
x = t
y = d
# Draw a line, by plotting t values on X-Axis and d values on Y-Axis. Use the plot function. Label the line as d = 6t.
plt.plot(x, y, label='d = 6t')
# Label X-Axis as time (second). Label Y-Axis as distance(meters).
# Set Title as 'Time vs Distance Covered'
# Limit data points on X-Axis from 0 to 40.
# Limit data points on Y-Axis from 0 to 220.
ax.set(title='Time vs Distance Covered', xlabel='time (seconds)',
ylabel="distance (meters)", xlim=(0, 40), ylim=(0, 220))
plt.legend()
return fig
# Refer '__main__' method code which is given below if required.
if __name__ == '__main__':
# Starting from here:
# Note: Do Not modify the below code
if __name__ == '__main__':
import sys
import subprocess
subprocess.check_call(
[sys.executable, "-m", "pip", "install", 'test_plot1-0.2-py3-none-any.whl'], stdout=subprocess.DEVNULL)
from test_plot1 import matplotlib1
usr_fig = test_the_plot()
matplotlib1.save_answer(usr_fig)
LAB 2: Welcome to Matplotlib 2 Scatter Plots.
Solution 2: Welcome to Matplotlib 2 Scatter Plots.
import numpy as np
import matplotlib.pyplot as plt
def sine_wave_plot():
# Write your functionality below
# Create a figure of size 13 inches in width, and 4 inches in height. Name it as fig.
fig = plt.figure(figsize=(13, 4))
# Create an axis, associated with figure fig, using add_subplot. Name it as ax.
ax = fig.add_subplot(111)
# Create a numpy array arr_t with 250 values between 0.0 and 3.0. USe the 'linespace' method to generate 250 values.
arr_t = np.linspace(0.0, 3.0, 250)
# Create a numpy array arr_v such that arr_v= np.sin(2.5*np.pi*arr_t).
arr_v = np.sin(2.5*np.pi*arr_t)
# Pass arr_t and arr_v as variable to plot function and draw a red line passing through the selected 250 points.
# Label the line as sin(arr_t).
x = arr_t
y = arr_v
plt.plot(x, y, label='sin(arr_t)', color='red')
# Label X_Axis as Time(seconds), Label Y-Axis as Voltage(mv).
# Set Title as Sine Wave.
# Limit data on X-Axis from 0 to 2, Limit data on Y-Axis from -1 to 1.
ax.set(title='Sine Wave', xlabel='Time (seconds)', ylabel="Voltage (mv)", xlim=(0,2), ylim=(-1, 1))
# Mark major ticks on X_Axis at 0, 0.2, 0.4, 0.6, 0.8, 1.0, 1.2, 1.4, 1.6, 1.8, 2.0.
plt.xticks([0, 0.2, 0.4, 0.6, 0.8, 1.0, 1.2, 1.4, 1.6, 1.8, 2.0])
# Mark major ticks on Y-Axis at -1,0, and 1.
plt.yticks([-1, 0, 1])
# Add a grid, whose linestyle is dashdot.
plt.grid(linestyle='--', which='major')
plt.legend()
return fig
def multi_curve_plot():
# Write your functionality below
# Create a figure of size 13 inches in width, and 4 inches in height. Name it as fig.
fig = plt.figure(figsize=(13, 4))
# Create an axis, associated with figure fig, using add_subplot. Name it as ax.
ax = fig.add_subplot(111)
# Create a numpy array arr_x with 25 values between 0.0 and 7.0. USe the 'linespace' method to generate 25 values.
arr_x = np.linspace(0, 7, 25)
# Create three numpy arrays arr_y1, arr_y2 and arr_y3, using the expression arr_y1 = arr_x, arr_y2 = arr_x**2 and arr_y3 = arr_x**3.
arr_y1 = arr_x
arr_y2 = arr_x**2
arr_y3 = arr_x**3
# Draw a green colored line passing through arr_x and arr_y1, using the plot function.
# Mark the 25 data points on the lines as upward pointed triangles. Label the as y = arr_x.
plt.plot(arr_x, arr_y1, label='y = arr_x', color='green', marker="^")
# Draw a blue colored line passing through arr_x and arr_y2, using the plot function.
# Mark the 25 data points on the lines as Squares. Label the as y = arr_x**2.
plt.plot(arr_x, arr_y2, label='y = arr_x**2', color='blue', marker='s')
# Draw a red colored line passing through arr_x and arr_y3, using the plot function.
# Mark the 25 data points on the lines as Circles. Label the as y = arr_x**3.
plt.plot(arr_x, arr_y3, label='y = arr_x**3', color='red', marker='o')
# Label X-Axis as arr_x. Label Y_Axis as f(arr_x)
# Set the Title as Linear, Quadratic, & Cubic Equations.
ax.set(title='Linear, Quadratic, & Cubic Equations', xlabel='arr_x',
ylabel="f(arr_x)")
plt.legend()
return fig
def scatter_plot():
# Write your functionality below.
# Create a figure of size 13 inches in width, and 4 inches in height. Name it as fig.
fig = plt.figure(figsize=(13, 4))
# Create an axis, associated with figure fig, using add_subplot. Name it as ax.
ax = fig.add_subplot(111)
# Consider the list ca_sales= [40, 65, 70, 40, 55, 60, 75, 60, 80, 95, 96, 105]. It represents the number of cars sold by a Company 'X' in each month of 2021, starting from January, 2021.
car_sales = [40, 65, 70, 40, 55, 60, 75, 60, 80, 95, 96, 105]
# Create a list of months contaning numbers from 1 to 12
months = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
# Draw a scatter plot with variables months and car_sales as arguments. Mark the data points in green color. Use the scatter function for plotting. Label the points as car sales.
ax.scatter(months, car_sales, color='green', marker='o')
# Limit data on X-Axis from 0 to 13. Limit data on Y-Axis from 10 to 110.
# Mark ticks on X-Axis at 1,3,5,7,9, and 11.
# Label the X-Axis ticks as January, March, May, July, Sepetember, and November respectively.
# Set Title as "Cars Sold by Company 'Z' in 2021".
ax.set(title="Cars Sold by Company 'Z' in 2021", xlabel='Months', ylabel='No. of Cars Sold', xlim=(0, 13), ylim=(10, 110))
plt.xticks([1, 3, 5, 7, 9, 11], ['January', 'March', 'May', 'July', 'September', 'November'])
plt.legend()
return fig
# Refer '__main__' method code which is given below if required.
if __name__ == '__main__':
# Starting from here:
# Note: Do Not modify the below code
if __name__ == '__main__':
import sys
import subprocess
subprocess.check_call(
[sys.executable, "-m", "pip", "install", 'test_plot2-0.1-py3-none-any.whl'], stdout=subprocess.DEVNULL)
from test_plot2 import matplotlib2
usr_fig1 = sine_wave_plot()
usr_fig2 = multi_curve_plot()
usr_fig3 = scatter_plot()
matplotlib2.save_answer(usr_fig1, usr_fig2, usr_fig3)
LAB 3 Welcome to Matplotlib -3 - Bar Plots.
Solution 3: Welcome to Matplotlib -3 - Bar Plots.
import numpy as np
import matplotlib.pyplot as plt
def barplot_of_iris_sepal_length():
# Write your functionality below
# Create a figure of size 9 inches in width, and 7 inches in height. Name it as fig.
fig = plt.figure(figsize=(9, 7))
# Create an axis, associated with figure fig, using add_subplot. Name it as ax.
ax = fig.add_subplot(111)
# Define a list species, with elements ['setosa', 'versicolor', 'virginiica']
species = ['setosa', 'versicolor', 'virginica']
# Define a list index, with values [0.4, 1.4, 2.4].
index = [0.4, 1.4, 2.4]
# Define another list sepal_lenwith values [6.01, 6.94, 7.69]. These values represent the mean sepal length of iris flowers belonging to three species.
sepal_len = [6.01, 6.94, 7.69]
# Draw a bar plot using the bar function, such that the height of each vertical bar display the sepal length of a species label it as Sepal Length.
# Use index and sepal_len as variables. Set bar width as 0.4, color as blue, and border color of the bar as red.
ax.bar(index, sepal_len, color='blue', width=0.4, edgecolor='red', label='Sepal Length')
# Label X-Axis as 'Species', Label Y-Axis as 'Sepal Length (cm)'.
# Set Title as 'Mean Sepal Length of Iris Species'
# Limit X-Axis from 0 to 3, Limit Y-Axis from 0 to 9.
ax.set(title='Mean Sepal Length of Iris Species',
xlabel='Species', ylabel='Sepal Length (cm)',
xlim=(0, 3), ylim=(0, 9))
# Set ticks on X-Axis at 0.4, 1.4, and 2.4.
ax.set_xticks(index)
# Set X_Axis tick labels to ['setosa', 'versicolor', 'virginica'].
ax.set_xticklabels(species)
ax.legend()
return fig
def barplot_of_iris_measurements():
# Write your functionality below
# Create a figure of size 9 inches in width, and 7 inches in height. Name it as fig.
fig = plt.figure(figsize=(9, 7))
# Create an axis, associated with figure fig, using add_subplot. Name it as ax.
ax = fig.add_subplot(111)
# Define the Following lists:
sepal_len = [6.01, 6.94, 7.59]
sepal_wd = [4.42, 3.77, 3.97]
petal_len = [2.46, 5.26, 6.55]
petal_wd = [1.24, 2.33, 3.03]
species = ['setosa', 'versicolor', 'virginica']
species_index1 = [0.7, 1.7, 2.7]
species_index2 = [0.9, 1.9, 2.9]
species_index3 = [1.1, 2.1, 3.1]
species_index4 = [1.3, 2.3, 3.3]
# Draw vertical bars showing the mean sepal length of a species.
# Set the color of the bars to m, boundary line color to grey, width of bars as 0.2, and label it as Sepal Length.
# Use bar with species_index1 and sepal_len.
ax.bar(species_index1, sepal_len, width=0.2, color='m', edgecolor='grey',
label='Sepal Length')
# Draw vertical bars showing the mean sepal length of a species.
# Set the color of the bars to y, boundary line color to grey, width of bars as 0.2, and label it as Sepal Width.
# Use bar with species_index2 and sepal_wd.
ax.bar(species_index2, sepal_wd, width=0.2, color='y', edgecolor='grey',
label='Sepal Width')
# Draw vertical bars showing the mean sepal length of a species.
# Set the color of the bars to c, boundary line color to grey, width of bars as 0.2, and label it as Petal Length.
# Use bar with species_index3 and petal_len.
ax.bar(species_index3, petal_len, width=0.2, color='c', edgecolor='grey',
label='Petal Length')
# Draw vertical bars showing the mean sepal length of a species.
# Set the color of the bars to orange, boundary line color to grey, width of bars as 0.2, and label it as Petal Width.
# Use bar with species_index4 and petal_wd.
ax.bar(species_index4, petal_wd, width=0.2, color='orange', edgecolor='grey',
label='Petal Width')
# Label X-Axis as 'Species', Label Y-Axis as 'Iris Measurements (cm)'.
# Set Title as 'Mean Measurements of Ires Species'
# Limit X-Axis from 0.5 to 3.5, Limit Y-Axis from 0 to 10.
ax.set(title='Mean Measurements of Ires Species',
xlabel='Species', ylabel='Iris Measurements (cm)',
xlim=(0.5, 3.5), ylim=(0, 10))
# Mark major tick on X-Axis at 1.0,2.0,3.0
ax.set_xticks([1.0, 2.0, 3.0])
# Lable th emajor ticks on X-Axis as setosa, versicolor and virginica respectively.
ax.set_xticklabels(species)
ax.legend()
return fig
def hbarplot_of_iris_petal_length():
# Write your functionality below
fig = plt.figure(figsize=(15, 5))
ax = fig.add_subplot(111)
species = ['setosa', 'versicolor', 'virginica']
index = [0.1, 1.1, 2.1]
petal_len = [2.67, 5.49, 6.37]
ax.set(title='Mean Petal Length of Iris Species',
xlabel='Petal Length (cm)', ylabel='Species')
ax.barh(index, petal_len, height=0.4, color='m', edgecolor='c')
ax.set_yticks([0.10, 1.10, 2.10])
ax.set_yticklabels(species)
ax.legend()
return fig
# Refer '__main__' method code which is given below if required.
if __name__ == '__main__':
# Starting from here:
# Note: Do Not modify the below code
if __name__ == '__main__':
import sys
import subprocess
subprocess.check_call(
[sys.executable, "-m", "pip", "install", 'test_plot3-0.1-py3-none-any.whl'], stdout=subprocess.DEVNULL)
from test_plot3 import matplotlib3
usr_fig1 = barplot_of_iris_sepal_length()
usr_fig2 = barplot_of_iris_measurements()
usr_fig3 = hbarplot_of_iris_petal_length()
matplotlib3.save_answer(usr_fig1, usr_fig2, usr_fig3)
LAB 4: Welcome to Matplotlib -4 - Histograms and Box Plots.
Solution 4: Welcome to Matplotlib -4 - Histograms and Box Plots.
import numpy as np
import matplotlib.pyplot as plt
def hist_of_a_sample_normal_distribution():
# Write your functionality below
# Create a figure of size 9 inches in width, and 7 inches in height. Name it as fig.
fig = plt.figure(figsize=(9, 7))
# Create an axis, associated with figure fig, using add_subploat. Name it as ax.
ax = fig.add_subplot(111)
# Set random see to 100 using the expression np.random.seed(100)
np.random.seed(100)
# Create a normal distribution dist_arr of 1000 values, with mean 35 and standard deviation 3.0. Use the hist function.
dist_arr = 35 + 3.0*np.random.randn(1000)
# Label X-Axis as dist_arr, Label Y-Axis as 'Bin Count'.
# Set title as Histogram of a Single Dataset.
ax.set(title="Histogram of a Single Dataset", ylabel='Bin Count', xlabel='dist_arr')
ax.hist(dist_arr, bins=35)
return fig
def boxplot_of_four_normal_distribution():
# Write your functionality below.
# Create a figure of size 9 inches in width, and 7 inches in height. Name it as fig.
fig = plt.figure(figsize=(9, 7))
# Create an axis, associated with figure fig, using add_subploat. Name it as ax.
ax = fig.add_subplot(111)
# Set random see to 100 using the expression np.random.seed(100)
np.random.seed(100)
# Create a normal distribution arr_1 of 2000 values, with mean 35 and standard deviation 6.0. Use np.random.randn.
arr_1 = 35 + 6.0*np.random.randn(2000)
# Create a normal distribution arr_2 of 2000 values, with mean 25 and standard deviation 4.0. Use np.random.randn.
arr_2 = 25 + 4.0*np.random.randn(2000)
# Create a normal distribution arr_3 of 2000 values, with mean 45 and standard deviation 8.0. Use np.random.randn.
arr_3 = 45 + 8.0*np.random.randn(2000)
# Create a normal distribution arr_4 of 2000 values, with mean 55 and standard deviation 10.0. Use np.random.randn.
arr_4 = 55 + 10.0*np.random.randn(2000)
# Create a list labels with elements ['arr_1', 'arr_2', 'arr_3', 'arr_4']
labels = ['arr_1', 'arr_2', 'arr_3', 'arr_4']
# Draw a Boxplot arr_1, arr_2, arr_3, arr_4 with notches and label it using the labels list. USe the boxplot function.
# Choose 'o' symbol for outlier, and fill color inside boxes by setting patch_artist argument to True.
norml_dist_list = [arr_1, arr_2, arr_3, arr_4]
ax.boxplot(norml_dist_list, labels=labels, notch=True, sym='o', patch_artist=True)
# Label X_Axes as 'Dataset', Label Y-Axes as 'Value'. Set Title as "Box Plot of Multiple Dataset".
ax.set(title="Box Plot of Multiple Dataset", ylabel='Value', xlabel='Dataset')
return fig
# Refer '__main__' method code which is given below if required.
if __name__ == '__main__':
# Starting from here:
# Note: Do Not modify the below code
if __name__ == '__main__':
import sys
import subprocess
subprocess.check_call(
[sys.executable, "-m", "pip", "install", 'test_plot4-0.1-py3-none-any.whl'], stdout=subprocess.DEVNULL)
from test_plot4 import matplotlib4
usr_fig1 = hist_of_a_sample_normal_distribution()
usr_fig2 = boxplot_of_four_normal_distribution()
matplotlib4.save_answer(usr_fig1, usr_fig2)
LAB 5: Welcome to Matplotlib -5 - Applying Styles.
Solution 5: Welcome to Matplotlib -5 - Applying Styles.
#
import numpy as np
import matplotlib.pyplot as plt
# Task 1:
def generate_plot_with_style1():
# Write your functionality below
# Create a function barplot with 'ggplot' style. Use 'with' to apply the style to the code generating the barplot.
with plt.style.context(['ggplot']):
# Create a figure of size 9 inches in width, and 7 inches in height. Name it as fig.
fig = plt.figure(figsize=(9, 7))
# Create an axis, associated with figure fig, using add_subplot. Name it as ax.
ax = fig.add_subplot(111)
# Define the Following lists:
sepal_len = [6.01, 6.94, 7.59]
sepal_wd = [4.42, 3.77, 3.97]
petal_len = [2.46, 5.26, 6.55]
petal_wd = [1.24, 2.33, 3.03]
species = ['setosa', 'versicolor', 'virginica']
species_index1 = [0.8, 1.8, 2.8]
species_index2 = [1.0, 2.0, 3.0]
species_index3 = [1.2, 2.2, 3.2]
species_index4 = [1.4, 2.4, 3.4]
# Draw vertical bars showing mean sepal length of a species. Set width of the bars as 0.2, and label it as Sepal Length.
# Use bar with species_index1 and sepal_len.
ax.bar(species_index1, sepal_len, width=0.2, label='Sepal Length')
# Draw vertical bars showing mean sepal length of a species. Set width of the bars as 0.2, and label it as Sepal Width.
# Use bar with species_index2 and sepal_wd.
ax.bar(species_index2, sepal_wd, width=0.2, label='Sepal Width')
# Draw vertical bars showing mean sepal length of a species. Set width of the bars as 0.2, and label it as Petal Length.
# Use bar with species_index3 and petal_len.
ax.bar(species_index3, petal_len, width=0.2, label='Petal Length')
# Draw vertical bars showing mean sepal length of a species. Set width of the bars as 0.2, and label it as Petal Width.
# Use bar with species_index4 and petal_wd.
ax.bar(species_index4, petal_wd, width=0.2, label='Petal Width')
# Label X-Axis as Species.
# Label Y-Axis as Iris Measurements (cm)
# Set Title as 'Mean Measurements of Ires Species'
# Limit X-Axis from 0.5 to 3.7
# Limit Y-Axis from 0 to 10.
ax.set(title='Mean Measurements of Ires Species',
xlabel='Species', ylabel='Iris Measurements (cm)',
xlim=(0.5, 3.7), ylim=(0, 10))
# Mark major ticks on X-Axis at 1.0,2.0, and3.0.
# Label the major ticks on X-Axis as setosa, versicolor, and virginica respectively.
ax.set_xticks([1.0, 2.0, 3.0])
ax.set_xticklabels(species)
return fig
# Task 2:
def generate_plot_with_style2():
# Write your functionality below
# Regenerate the barplot defined in 'generate_plot_with_style1' using 'seaborn-colorblind' style.
# Use 'with' for applying the style.
with plt.style.context(['seaborn-colorblind']):
fig = plt.figure(figsize=(9, 7))
ax = fig.add_subplot(111)
sepal_len = [6.01, 6.94, 7.59]
sepal_wd = [4.42, 3.77, 3.97]
petal_len = [2.46, 5.26, 6.55]
petal_wd = [1.24, 2.33, 3.03]
species = ['setosa', 'versicolor', 'virginica']
species_index1 = [0.8, 1.8, 2.8]
species_index2 = [1.0, 2.0, 3.0]
species_index3 = [1.2, 2.2, 3.2]
species_index4 = [1.4, 2.4, 3.4]
# Limit X-Axis from 0.5 to 3.5
ax.set(title='Mean Measurements of Ires Species',
xlabel='Species', ylabel='Iris Measurements (cm)',
xlim=(0.5, 3.5), ylim=(0, 10))
ax.bar(species_index1, sepal_len, width=0.2, label='Sepal Length')
ax.bar(species_index2, sepal_wd, width=0.2, label='Sepal Width')
ax.bar(species_index3, petal_len, width=0.2, label='Petal Length')
ax.bar(species_index4, petal_wd, width=0.2, label='Petal Width')
ax.set_xticks([1.0, 2.0, 3.0])
ax.set_xticklabels(species)
return fig
# Task 3:
def generate_plot_with_style3():
# Write your functionality below
# Regenerate the barplot defined in 'generate_plot_with_style1' using 'grayscale' style.
# Use 'with' for applying the style.
with plt.style.context(['grayscale']):
fig = plt.figure(figsize=(9, 7))
ax = fig.add_subplot(111)
sepal_len = [6.01, 6.94, 7.59]
sepal_wd = [4.42, 3.77, 3.97]
petal_len = [2.46, 5.26, 6.55]
petal_wd = [1.24, 2.33, 3.03]
species = ['setosa', 'versicolor', 'virginica']
species_index1 = [0.8, 1.8, 2.8]
species_index2 = [1.0, 2.0, 3.0]
species_index3 = [1.2, 2.2, 3.2]
species_index4 = [1.4, 2.4, 3.4]
# Limit X-Axis from 0.5 to 3.5
ax.set(title='Mean Measurements of Ires Species',
xlabel='Species', ylabel='Iris Measurements (cm)',
xlim=(0.5, 3.5), ylim=(0, 10))
ax.bar(species_index1, sepal_len, width=0.2, label='Sepal Length')
ax.bar(species_index2, sepal_wd, width=0.2, label='Sepal Width')
ax.bar(species_index3, petal_len, width=0.2, label='Petal Length')
ax.bar(species_index4, petal_wd, width=0.2, label='Petal Width')
ax.set_xticks([1.0, 2.0, 3.0])
ax.set_xticklabels(species)
return fig
# Refer '__main__' method code which is given below if required.
if __name__ == '__main__':
# Starting from here:
# Note: Do Not modify the below code
if __name__ == '__main__':
import sys
import subprocess
subprocess.check_call(
[sys.executable, "-m", "pip", "install", 'test_plot5-0.1-py3-none-any.whl'], stdout=subprocess.DEVNULL)
from test_plot5 import matplotlib5
usr_fig1 = generate_plot_with_style1()
usr_fig2 = generate_plot_with_style2()
usr_fig3 = generate_plot_with_style3()
matplotlib5.save_answer(usr_fig1, usr_fig2, usr_fig3)
LAB 6: Welcome to Matplotlib -6 - Multiple Plots.
Solution 6: Welcome to Matplotlib -6 - Multiple Plots.
#
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec
# Task 1:
def generate_figure1():
# Write your functionality below
# Define a numpy array 'x' with expression 'np.arrange(0.0,10.0, 0.01)'
x = np.arange(0.0, 10.0, 0.01)
# Define another numpy array 'arr_s1' with expression 'np.sin(3*np.pi*x)'
arr_s1 = np.sin(3*np.pi*x)
# Define another numpy array 'arr_s2' with expression 'np.sin(6*np.pi*x)'
arr_s2 = np.sin(6*np.pi*x)
# Create figure of size 12 inches in width, and 7 inches in hight. Name it as fig.
fig = plt.figure(figsize=(12, 7))
# Create an axes, using plt.subplot function. Name it as axes1.
# The subplot must point to the first virtual grid created by 2 rows and 1 columns.
# Set 'title' argument to 'Sin(3*pi*x)'.
axes1 = plt.subplot(2, 1, 1, title='Sin(3*pi*x)')
# Draw a line plot of 'x' and 'arr_s1' using the 'plot' function on 'axes1'.
axes1.plot(x, arr_s1)
# Create another axes, using plt.subplot function. Name it as axes2.
# The subplot must point to the second virtual grid created by 2 rows and 1 columns.
# Set 'title' argument to 'Sin(6*pi*x)'. Set 'sharex' argument to 'axes1' and 'sharey' to 'axes1'.
axes2 = plt.subplot(2, 1, 2, title='Sin(6*pi*x)', sharex=axes1, sharey=axes1)
# Draw a line plot of 'x' and 'arr_s2' using the 'plot' function on 'axes2'.
axes2.plot(x, arr_s2)
return fig
# Task 2:
def generate_figure2():
# Write your functionality below
# Set random seed to 1500 using the expression 'np.random.seed(1500)'.
np.random.seed(1500)
# Define a numpy array 'x' with expression 'np.random.rand(10)'
x = np.random.rand(10)
# Define another numpy array 'y' with expression 'np.random.rand(10)'
y = np.random.rand(10)
# Define one more numpy array 'z' with expression 'np.sqrt(x**2 + y*2)'
z = np.sqrt(x**2 + y**2)
# Create a figure of size 9 inches in width, and 7 inches in height. Name it as fig.
fig = plt.figure(figsize=(9, 7))
# Create an axes, using plt.subplot function. Name it as axes1.
# The subplot must point to the first virtual grid created by 2 rows and 2 columns.
# Set 'title' argument to 'Scatter plot with Diamond Markers'.
axes1 = plt.subplot(2, 2, 1, title='Scatter plot with Diamond Markers')
# Draw a scatter plot of 'x' and 'y' using 'scatter' function on 'axes1'.
# Set arguement 's' to 80, 'c' to z and 'marker' to 'd'.
axes1.scatter(x, y, s=80, c=z, marker="d")
# Add ticks on X-Axis at 0.0,0.5,1.0,1.5 and ticks on Y-Axis at -0.2, 0.2, 0.6, 1.0 respectively.
axes1.set_xticks([0.0, 0.5, 1.0, 1.5])
axes1.set_yticks([-0.2, 0.2, 0.6, 1.0])
# Create an axes, using plt.subplot function. Name it as axes2.
# The subplot must point to the Second virtual grid created by 2 rows and 2 columns.
# Set 'title' argument to 'Scatter plot with Circle Markers'.
axes2 = plt.subplot(2, 2, 2, title='Scatter plot with Circle Markers')
# Draw a scatter plot of 'x' and 'y' using 'scatter' function on 'axes2'.
# Set arguement 's' to 80, 'c' to z and 'marker' to 'o'.
axes2.scatter(x, y, s=80, c=z, marker="o")
# Add ticks on X-Axis at 0.0,0.5,1.0,1.5 and ticks on Y-Axis at -0.2, 0.2, 0.6, 1.0 respectively.
axes2.set_xticks([0.0, 0.5, 1.0, 1.5])
axes2.set_yticks([-0.2, 0.2, 0.6, 1.0])
# Create an axes, using plt.subplot function. Name it as axes3.
# The subplot must point to the Third virtual grid created by 2 rows and 2 columns.
# Set 'title' argument to 'Scatter plot with Plus Markers'.
axes3 = plt.subplot(2, 2, 3, title='Scatter plot with Plus Markers')
# Draw a scatter plot of 'x' and 'y' using 'scatter' function on 'axes3'.
# Set arguement 's' to 80, 'c' to z and 'marker' to '+'.
axes3.scatter(x, y, s=80, c=z, marker="+")
# Add ticks on X-Axis at 0.0,0.5,1.0,1.5 and ticks on Y-Axis at -0.2, 0.2, 0.6, 1.0 respectively.
axes3.set_xticks([0.0, 0.5, 1.0, 1.5])
axes3.set_yticks([-0.2, 0.2, 0.6, 1.0])
# Create an axes, using plt.subplot function. Name it as axes4.
# The subplot must point to the Fourth virtual grid created by 2 rows and 2 columns.
# Set 'title' argument to 'Scatter plot with Upper Triangle Markers'.
axes4 = plt.subplot(2, 2, 4, title='Scatter plot with Upper Triangle Markers')
# Draw a scatter plot of 'x' and 'y' using 'scatter' function on 'axes4'.
# Set arguement 's' to 80, 'c' to z and 'marker' to '^'.
axes4.scatter(x, y, s=80, c=z, marker="^")
# Add ticks on X-Axis at 0.0,0.5,1.0,1.5 and ticks on Y-Axis at -0.2, 0.2, 0.6, 1.0 respectively.
axes4.set_xticks([0.0, 0.5, 1.0, 1.5])
axes4.set_yticks([-0.2, 0.2, 0.6, 1.0])
plt.tight_layout()
return fig
# Task 3:
def generate_figure3():
# Write your functionality below
# Define a numpy array X with expression 'np.arrange(1,301,3)'
x = np.arange(1, 301, 3)
# Define another numpy array 'y1' with expression 'y1= x'
y1 = x
# Define another numpy array 'y2' with expression 'y2 = x**2'
y2 = x**2
# Define another numpy array 'y3' with expression 'y3= x**3'
y3 = x**3
# Create a figure of size 9 inhes in width, and 7 inches in height. Name it as fig.
fig = plt.figure(figsize=(9, 7))
# Define a grid 'gr' of 2 rows and 2 coloumns, using 'GridSpec' function. Ensure that 'matplotlib.gridspec' is imported, before defining the grid.
gr = gridspec.GridSpec(2, 2)
# Create an axes, using plt.subplot function. Name it as axes1.
# The subplot must span the 1st row and 1st column of the defined grid 'gr'.
# Set 'title' argument to 'y=x'.
axes1 = plt.subplot(gr[0, 0], title='y = x')
# Draw a line plot of 'x' and 'y1' using 'plot' function on 'axes1'.
axes1.plot(x, y1)
# Create an axes, using plt.subplot function. Name it as axes2.
# The subplot must span the 2nd row and 1st column of the defined grid 'gr'.
# Set 'title' argument to 'y=x**2'.
axes2 = plt.subplot(gr[1, 0], title='y = x**2')
# Draw a line plot of 'x' and 'y2' using 'plot' function on 'axes2'.
axes2.plot(x, y2)
# Create an axes, using plt.subplot function. Name it as axes3.
# The subplot must span all rows and 2nd column of the defined grid 'gr'.
# Set 'title' argument to 'y=x**3'.
axes3 = plt.subplot(gr[:, 1], title='y = x**3')
# Draw a line plot of 'x' and 'y3' using 'plot' function on 'axes3'.
axes3.plot(x, y3)
plt.tight_layout()
return fig
# Refer '__main__' method code which is given below if required.
if __name__ == '__main__':
# Starting from here:
# Note: Do Not modify the below code
if __name__ == '__main__':
import sys
import subprocess
subprocess.check_call(
[sys.executable, "-m", "pip", "install", 'test_plot6-0.2-py3-none-any.whl'], stdout=subprocess.DEVNULL)
from test_plot6 import matplotlib6
usr_fig1 = generate_figure1()
usr_fig2 = generate_figure2()
usr_fig3 = generate_figure3()
matplotlib6.save_answer(usr_fig1, usr_fig2, usr_fig3)