Matplotlib Data Visualization Notebook
Matplotlib Data Visualization Notebook
📊 Introduction to Matplotlib
Matplotlib is a widely used data visualization library in Python that enables the creation
of static, animated, and interactive visualizations. It provides an easy-to-use interface
for plotting data and is highly customizable.
Types of Data
Numerical Data
Categorical Data
[Link]('default')
2D Line plot
[Link] 1/77
2/12/25, 3:38 PM 15-Matplotlib
Bivariate Analysis
categorical -> numerical and numerical -> numerical
Use case - Time series data
[Link](year,price)
[Link] 2/77
2/12/25, 3:38 PM 15-Matplotlib
[Link](batsman['index'],batsman['V Kohli'])
[Link] 3/77
2/12/25, 3:38 PM 15-Matplotlib
[Link] 4/77
2/12/25, 3:38 PM 15-Matplotlib
[Link] 5/77
2/12/25, 3:38 PM 15-Matplotlib
[Link] 6/77
2/12/25, 3:38 PM 15-Matplotlib
[Link] 7/77
2/12/25, 3:38 PM 15-Matplotlib
[Link](loc='upper right')
[Link] 8/77
2/12/25, 3:38 PM 15-Matplotlib
[Link](year,price)
[Link](0,75000)
[Link](2017,2019)
[Link] 9/77
2/12/25, 3:38 PM 15-Matplotlib
In [88]: # grid
[Link](batsman['index'],batsman['V Kohli'],color='#D9F10F',linestyle='solid',l
[Link](batsman['index'],batsman['RG Sharma'],color='#FC00D6',linestyle='dashdo
[Link]()
[Link] 10/77
2/12/25, 3:38 PM 15-Matplotlib
In [89]: # show
[Link](batsman['index'],batsman['V Kohli'],color='#D9F10F',linestyle='solid',l
[Link](batsman['index'],batsman['RG Sharma'],color='#FC00D6',linestyle='dashdo
[Link]()
[Link]()
[Link] 11/77
2/12/25, 3:38 PM 15-Matplotlib
Scatter Plots
Bivariate Analysis
numerical vs numerical
Use case - Finding correlation
y = 10*x + 3 + [Link](0,300,50)
y
[Link] 12/77
2/12/25, 3:38 PM 15-Matplotlib
In [91]: [Link](x,y)
[Link] 13/77
2/12/25, 3:38 PM 15-Matplotlib
[Link] 14/77
2/12/25, 3:38 PM 15-Matplotlib
In [93]: [Link](df['avg'],df['strike_rate'],color='red',marker='+')
[Link]('Avg and SR analysis of Top 50 Batsman')
[Link]('Average')
[Link]('SR')
[Link] 15/77
2/12/25, 3:38 PM 15-Matplotlib
In [94]: # size
tips = sns.load_dataset('tips')
# slower
[Link](tips['total_bill'],tips['tip'],s=tips['size']*20)
[Link] 16/77
2/12/25, 3:38 PM 15-Matplotlib
Bar chart
[Link] 17/77
2/12/25, 3:38 PM 15-Matplotlib
Bivariate Analysis
Numerical vs Categorical
Use case - Aggregate analysis of groups
[Link](colors,children,color='black')
[Link] 18/77
2/12/25, 3:38 PM 15-Matplotlib
[Link] 19/77
2/12/25, 3:38 PM 15-Matplotlib
[Link]([Link]([Link][0]), df['batsman'])
[Link]()
In [100… [Link]([Link][0])
In [101… # a problem
children = [10,20,40,10,30]
colors = ['red red red red red red','blue blue blue blue','green green green gre
[Link](colors,children,color='black')
[Link](rotation='vertical')
[Link] 20/77
2/12/25, 3:38 PM 15-Matplotlib
[Link]()
[Link]()
[Link] 21/77
2/12/25, 3:38 PM 15-Matplotlib
Histogram
Univariate Analysis
Numerical col
Use case - Frequency Count
data = [32,45,56,10,15,27,61]
[Link](data,bins=[10,25,40,55,70])
[Link] 22/77
2/12/25, 3:38 PM 15-Matplotlib
0 12 62
1 17 28
2 20 64
3 27 0
4 30 10
136 624 75
138 632 54
139 633 0
140 636 54
In [105… [Link](df['batsman_runs'],bins=[0,10,20,30,40,50,60,70,80,90,100,110,120])
[Link]()
[Link] 23/77
2/12/25, 3:38 PM 15-Matplotlib
Pie Chart
[Link] 24/77
2/12/25, 3:38 PM 15-Matplotlib
Univariate/Bivariate Analysis
Categorical vs numerical
Use case - To find contibution on a standard scale
[Link]()
In [108… # dataset
df = pd.read_csv('[Link]')
df
[Link] 25/77
2/12/25, 3:38 PM 15-Matplotlib
0 AB de Villiers 31
1 CH Gayle 175
2 R Rampaul 0
3 SS Tiwary 2
4 TM Dilshan 33
5 V Kohli 11
In [109… [Link](df['batsman_runs'],labels=df['batsman'],autopct='%0.1f%%')
[Link]()
[Link] 26/77
2/12/25, 3:38 PM 15-Matplotlib
Changing styles
In [112… [Link]
[Link] 27/77
2/12/25, 3:38 PM 15-Matplotlib
Out[112… ['Solarize_Light2',
'_classic_test_patch',
'_mpl-gallery',
'_mpl-gallery-nogrid',
'bmh',
'classic',
'dark_background',
'fast',
'fivethirtyeight',
'ggplot',
'grayscale',
'seaborn-v0_8',
'seaborn-v0_8-bright',
'seaborn-v0_8-colorblind',
'seaborn-v0_8-dark',
'seaborn-v0_8-dark-palette',
'seaborn-v0_8-darkgrid',
'seaborn-v0_8-deep',
'seaborn-v0_8-muted',
'seaborn-v0_8-notebook',
'seaborn-v0_8-paper',
'seaborn-v0_8-pastel',
'seaborn-v0_8-poster',
'seaborn-v0_8-talk',
'seaborn-v0_8-ticks',
'seaborn-v0_8-white',
'seaborn-v0_8-whitegrid',
'tableau-colorblind10']
In [113… [Link]('dark_background')
[Link] 28/77
2/12/25, 3:38 PM 15-Matplotlib
Save figure
In [115… arr = [Link]('[Link]')
[Link](arr,bins=[10,20,30,40,50,60,70],log=True)
[Link]('[Link]')
[Link]('default')
[Link] 29/77
2/12/25, 3:38 PM 15-Matplotlib
Out[117…
Unnamed: Temporal Tempora
Position Country City/Town Year PM2.5 PM10
0 coverage coverage.1
50% -<
2 2 3 India Gaya 2016 149 275 NaN
75%
In [119… [Link](iran_series.index,iran_series.values,label='Iran',linestyle='dashed')
[Link](china_series.index,china_series.values,label='China',
linestyle='dotted',color='red')
[Link]('Year')
[Link]('PM2.5')
[Link]('PM2.5 Over the years')
[Link](df['Year'].value_counts().index)
[Link]()
[Link]()
[Link]()
[Link] 30/77
2/12/25, 3:38 PM 15-Matplotlib
[Link]('Bins')
[Link]('Probability')
[Link]('Histogram of PM10')
[Link]()
[Link]()
In [122… [Link](chile_df['PM2.5'],chile_df['PM10'],marker="+",color='red',
label='Chile')
[Link](poland_df['PM2.5'],poland_df['PM10'],marker="D",color='black',
label='Poland')
[Link]('PM2.5')
[Link]('PM10')
[Link]('PM2.5 Vs PM10 for Chile and Poland')
[Link]()
[Link]()
[Link]()
[Link] 31/77
2/12/25, 3:38 PM 15-Matplotlib
In [124… [Link](freq_ser,labels=freq_ser.index,autopct='%0.1f%%')
[Link]()
[Link] 32/77
2/12/25, 3:38 PM 15-Matplotlib
[Link]('Country')
[Link]('Frequency Count')
[Link]()
[Link] 33/77
2/12/25, 3:38 PM 15-Matplotlib
In [129… [Link](values,labels=labels,autopct='%0.1f%%',explode=[0,0,0.1,0,0,0],
shadow=True)
[Link]("Sales in March")
[Link]()
[Link] 34/77
2/12/25, 3:38 PM 15-Matplotlib
marker='o', linewidth=3)
[Link](monthList, df['toothpaste'], label = 'Tooth Paste', marker='o',
linewidth=3)
[Link](monthList, df['bathingsoap'], label = 'Bathing Soap', marker='o',
linewidth=3)
[Link](monthList, df['shampoo'], label = 'Shampoo', linestyle='dashdot',
linewidth=3)
[Link](monthList, df['moisturizer'], label = 'Moisturizer', marker='o',
linewidth=3)
[Link](monthList, df['facewash'], label = 'Face Wash', linestyle='dashed',
linewidth=2)
[Link]('Month Number')
[Link]('Sales units in number')
[Link](loc='upper right')
[Link](monthList)
[Link]('Sales data')
[Link]()
[Link] 35/77
2/12/25, 3:38 PM 15-Matplotlib
In [133… i = -1
for col in final_df.columns[1:7]:
[Link](final_df.index + i,final_df[col],width=0.15,label=col)
i = i - 0.15
[Link](final_df.index-1.4,final_df.index)
[Link]('Product')
[Link]('Sales')
[Link]()
[Link]()
[Link] 36/77
2/12/25, 3:38 PM 15-Matplotlib
In [134… all_cols = []
[Link] 37/77
2/12/25, 3:38 PM 15-Matplotlib
Advance Matplotlib
In [135… import warnings
[Link]('ignore')
[Link] 38/77
2/12/25, 3:38 PM 15-Matplotlib
Plot Size
In [139… [Link](figsize = (5,3))
[Link] 39/77
2/12/25, 3:38 PM 15-Matplotlib
Annotation
In [140… batters = pd.read_csv("[Link]")
[Link] 40/77
2/12/25, 3:38 PM 15-Matplotlib
[Link] 41/77
2/12/25, 3:38 PM 15-Matplotlib
In [143… x = [1,2,3,4]
y = [5,6,7,8]
[Link](x,y)
[Link](1,5,'Point 1')
[Link](2,6,'Point 2')
[Link](3,7,'Point 3')
[Link](4,8,'Point 4',fontdict={'size':12,'color':'brown'})
[Link] 42/77
2/12/25, 3:38 PM 15-Matplotlib
[Link](110,color='red')
[Link](130,color='green')
[Link](30,color='red')
Subplots
In [146… fig,ax = [Link]()
[Link]('avg','strike_rate',data = batters)
ax.set_title('something')
ax.set_xlabel('Avg')
ax.set_ylabel('Strike rate')
[Link]()
[Link] 43/77
2/12/25, 3:38 PM 15-Matplotlib
ax[1].set_title('Avg Vs Runs')
ax[1].set_ylabel('Runs')
ax[1].set_xlabel('Avg')
[Link] 44/77
2/12/25, 3:38 PM 15-Matplotlib
ax[0,0].scatter(batters['avg'],batters['strike_rate'],c= 'red')
ax[0,1].scatter(batters['avg'],batters['runs'],c = 'green')
ax[1,0].hist(batters['avg'])
ax[1,1].hist(batters['runs'])
Out[148… (array([499., 40., 19., 19., 9., 6., 4., 4., 3., 2.]),
array([ 0. , 663.4, 1326.8, 1990.2, 2653.6, 3317. , 3980.4, 4643.8,
5307.2, 5970.6, 6634. ]),
<BarContainer object of 10 artists>)
[Link] 45/77
2/12/25, 3:38 PM 15-Matplotlib
ax1 = fig.add_subplot(2,2,1)
[Link](batters['avg'],batters['strike_rate'],color='red')
ax2 = fig.add_subplot(2,2,2)
[Link](batters['runs'])
ax3 = fig.add_subplot(2,2,3)
[Link](batters['avg'])
Out[149… (array([102., 125., 103., 82., 78., 43., 22., 14., 2., 1.]),
array([ 0. , 5.56666667, 11.13333333, 16.7 , 22.26666667,
27.83333333, 33.4 , 38.96666667, 44.53333333, 50.1 ,
55.66666667]),
<BarContainer object of 10 artists>)
ax[1,1]
[Link] 46/77
2/12/25, 3:38 PM 15-Matplotlib
3D Scatter Plots
In [151… batters
fig = [Link]()
ax = [Link](projection='3d')
ax.scatter3D(batters['runs'],batters['avg'],batters['strike_rate'],marker='+')
ax.set_title('IPL batsman analysis')
ax.set_xlabel('Runs')
ax.set_ylabel('Avg')
ax.set_zlabel('SR')
[Link] 47/77
2/12/25, 3:38 PM 15-Matplotlib
3D Line Plot
In [152… x = [0,1,5,25]
y = [0,10,13,0]
z = [0,13,20,9]
fig = [Link]()
ax = [Link](projection='3d')
ax.scatter3D(x,y,z,s=[100,100,100,100])
ax.plot3D(x,y,z,color='red')
3D Surface Plots
In [5]: x = [Link](-10,10,100)
y = [Link](-10,10,100)
xx, yy = [Link](x,y)
z = xx**2 + yy**2
[Link]
fig = [Link](figsize=(12,8))
ax = [Link](projection='3d')
p = ax.plot_surface(xx,yy,z,cmap='viridis')
[Link](p)
[Link] 48/77
2/12/25, 3:38 PM 15-Matplotlib
fig = [Link](figsize=(12,8))
ax = [Link](projection='3d')
p = ax.plot_surface(xx,yy,z,cmap='viridis')
[Link](p)
[Link] 49/77
2/12/25, 3:38 PM 15-Matplotlib
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
Cell In[11], line 6
4 import [Link] as plt
5 import warnings
----> 6 [Link]("ignore")
fig = [Link](figsize=(12,8))
ax = [Link](projection='3d')
p = ax.plot_surface(xx,yy,z,cmap='viridis')
[Link](p)
C:\Users\goura\AppData\Local\Temp\ipykernel_200\[Link]: RuntimeWarning: i
nvalid value encountered in log
z = [Link](xx) + [Link](xx)
Out[12]: <[Link] at 0x22267c08b50>
[Link] 50/77
2/12/25, 3:38 PM 15-Matplotlib
ax = [Link](projection='3d')
p = ax.plot_surface(xx,yy,z,cmap='viridis')
[Link](p)
[Link] 51/77
2/12/25, 3:38 PM 15-Matplotlib
Contour Plots
In [17]: # 3D Surface Plot
fig = [Link](figsize=(12, 8))
ax = fig.add_subplot(projection='3d') # Corrected way to add 3D subplot
p = ax.plot_surface(xx, yy, z, cmap='viridis')
[Link](p)
[Link] 52/77
2/12/25, 3:38 PM 15-Matplotlib
[Link]()
[Link] 53/77
2/12/25, 3:38 PM 15-Matplotlib
fig = [Link](figsize=(12,8))
ax = [Link]()
p = [Link](xx,yy,z,cmap='viridis')
[Link](p)
[Link] 54/77
2/12/25, 3:38 PM 15-Matplotlib
Heatmap
In [23]: delivery = pd.read_csv("ball_deliveries.csv")
[Link]()
Royal
Sunrisers DA
0 1 1 Challengers 1 1 S Dhawan
Hyderabad Warner
Bangalore
Royal
Sunrisers DA
1 1 1 Challengers 1 2 S Dhawan
Hyderabad Warner
Bangalore
Royal
Sunrisers DA
2 1 1 Challengers 1 3 S Dhawan
Hyderabad Warner
Bangalore
Royal
Sunrisers DA
3 1 1 Challengers 1 4 S Dhawan
Hyderabad Warner
Bangalore
Royal
Sunrisers DA
4 1 1 Challengers 1 5 S Dhawan
Hyderabad Warner
Bangalore
5 rows × 21 columns
[Link] 55/77
2/12/25, 3:38 PM 15-Matplotlib
In [26]: [Link](figsize=(10,5))
[Link](grid)
[Link](delivery['over'].unique(), list(range(1,21)))
[Link]([Link](0,6), list(range(1,7)))
[Link]()
Pandas Plot()
In [27]: # on a series
s = [Link]([1,2,3,4,5,6,7])
[Link](kind='pie')
[Link] 56/77
2/12/25, 3:38 PM 15-Matplotlib
[Link]()
In [29]: # Scatter plot -> labels -> markers -> figsize -> color -> cmap
[Link](kind='scatter',x='total_bill',y='tip',title='Cost Analysis',marker='+'
figsize=(10,6),s='size',c='sex',cmap='viridis')
[Link] 57/77
2/12/25, 3:38 PM 15-Matplotlib
[Link] 58/77
2/12/25, 3:38 PM 15-Matplotlib
In [32]: [Link](kind='line',x='Date')
In [33]: stocks[['Date','AAPL','FB']].plot(kind='line',x='Date')
[Link] 59/77
2/12/25, 3:38 PM 15-Matplotlib
In [35]: [Link]('sex')['total_bill'].mean().plot(kind='bar')
C:\Users\goura\AppData\Local\Temp\ipykernel_200\[Link]: FutureWarning: Th
e default of observed=False is deprecated and will be changed to True in a future
version of pandas. Pass observed=False to retain current behavior or observed=Tru
e to adopt the future default and silence this warning.
[Link]('sex')['total_bill'].mean().plot(kind='bar')
Out[35]: <Axes: xlabel='sex'>
[Link] 60/77
2/12/25, 3:38 PM 15-Matplotlib
In [36]: temp['2015'].plot(kind='bar')
In [37]: [Link](kind='bar')
[Link] 61/77
2/12/25, 3:38 PM 15-Matplotlib
In [39]: # histogram
# using stocks
[Link] 62/77
2/12/25, 3:38 PM 15-Matplotlib
stocks[['MSFT','FB']].plot(kind='hist',bins=40)
[Link]()
0 Dhawan 120 0 50
1 Rohit 90 1 24
3 SKY 45 130 45
4 Pandya 12 34 10
In [41]: df['match1'].plot(kind='pie',labels=df['batsman'].values,autopct='%0.1f%%')
[Link] 63/77
2/12/25, 3:38 PM 15-Matplotlib
df[['match1','match2','match3']].plot(kind='pie',subplots=True,figsize=(15,8))
[Link](kind='line',subplots=True)
[Link] 64/77
2/12/25, 3:38 PM 15-Matplotlib
tips.pivot_table(index=['day','time'],columns=['sex','smoker'],values='total_bil
).plot(kind='pie',subplots=True,figsize=(20,10))
C:\Users\goura\AppData\Local\Temp\ipykernel_200\[Link]: FutureWarning: Th
e default value of observed=False is deprecated and will change to observed=True
in a future version of pandas. Specify observed=False to silence this warning and
retain the current behavior
tips.pivot_table(index=['day','time'],columns=['sex','smoker'],values='total_bi
ll',aggfunc='mean'
Out[44]: array([<Axes: ylabel='(Male, Yes)'>, <Axes: ylabel='(Male, No)'>,
<Axes: ylabel='(Female, Yes)'>, <Axes: ylabel='(Female, No)'>],
dtype=object)
[Link]('default')
In [46]: df = pd.read_csv('[Link]
[Link]()
[Link] 65/77
2/12/25, 3:38 PM 15-Matplotlib
2017-
0 Delhi 2235.4 135.00 0.00 135.0 0
09-01
2017-
1 Haryana 2720.0 2470.00 0.00 2470.0 0
09-01
2017- Himachal
2 3378.0 379.00 0.00 231.0 0
09-01 Pradesh
Jammu
2017-
3 and 1285.0 150.00 0.00 0.0 0
09-01
Kashmir
2017-
4 Punjab 3826.3 2697.65 77.65 2620.0 0
09-01
C:\Users\goura\AppData\Local\Temp\ipykernel_200\[Link]: SettingWithCopyW
arning:
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead
ax[0].scatter(temp_df['Monitored Cap.(MW)'],temp_df[
'Total Cap. Under Maintenace (MW)'],c=temp_df['Power Station'])
ax[0].axvline(temp_df['Monitored Cap.(MW)'].mean(),c='red')
ax[0].axhline(temp_df['Total Cap. Under Maintenace (MW)'].mean(),c='black')
ax[0].set_xlabel('Monitored Cap')
ax[0].set_ylabel('Total Cap under Maintaince')
ax[0].set_title('Monitored Vs Under Maintainence Cap')
ax[1].scatter(temp_df['Monitored Cap.(MW)'],temp_df['Actual(MU)'],
c=temp_df['Power Station'])
ax[1].axvline(temp_df['Monitored Cap.(MW)'].mean(),c='red')
ax[1].axhline(temp_df['Actual(MU)'].mean(),c='black')
ax[1].set_xlabel('Monitored Cap')
ax[1].set_ylabel('Actual(MU)')
ax[1].set_title('Monitored Vs Actual(MU)')
[Link] 66/77
2/12/25, 3:38 PM 15-Matplotlib
ax = [Link](projection='3d')
ax.scatter3D(temp_df['Monitored Cap.(MW)'],
temp_df['Total Cap. Under Maintenace (MW)'],
temp_df['Forced Maintanence(MW)'],c=temp_df['Power Station'])
ax.set_xlabel('Monitored Cap.(MW)')
ax.set_ylabel('Total Cap. Under Maintenace (MW)')
ax.set_zlabel('Forced Maintanence(MW)')
ax.set_title('3D plot of various metrics')
[Link]()
In [52]: x = [Link](-10,10,100)
y = [Link](-10,10,100)
xx, yy = [Link](x,y)
[Link] 67/77
2/12/25, 3:38 PM 15-Matplotlib
z = [Link](xx) - [Link](yy)
ax = [Link](projection='3d')
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')
ax.plot_surface(xx,yy,z, cmap='viridis')
[Link]()
ax = [Link]()
[Link](xx,yy,z, cmap='viridis')
ax.set_xlabel('X')
ax.set_ylabel('Y')
[Link]()
[Link] 68/77
2/12/25, 3:38 PM 15-Matplotlib
ax = [Link]()
[Link](xx,yy,z, cmap='viridis')
ax.set_xlabel('X')
ax.set_ylabel('Y')
[Link]()
[Link] 69/77
2/12/25, 3:38 PM 15-Matplotlib
Out[56]: Prev
Date Symbol Series Open High Low Last Close VWAP Vol
Close
2000-
0 HDFCBANK EQ 157.40 166.00 170.00 166.00 170.00 170.00 169.52 3
01-03
2000-
1 HDFCBANK EQ 170.00 182.00 183.45 171.00 174.00 173.80 174.99 16
01-04
2000-
2 HDFCBANK EQ 173.80 170.00 173.90 165.00 168.00 166.95 169.20 15
01-05
2000-
3 HDFCBANK EQ 166.95 168.00 170.00 165.30 168.95 168.30 168.44 8
01-06
2000-
4 HDFCBANK EQ 168.30 162.15 171.00 162.15 170.75 168.35 166.79 8
01-07
In [58]: nifty.set_index('Date',inplace=True)
[Link] 70/77
2/12/25, 3:38 PM 15-Matplotlib
temp_df['Symbol'] = temp_df['Symbol'].astype('category')
temp_df.plot(kind='scatter', x='Close', y='Volume', c='Symbol',
colormap='viridis')
[Link] 71/77
2/12/25, 3:38 PM 15-Matplotlib
data
Out[65]: time x y z
[Link] 72/77
2/12/25, 3:38 PM 15-Matplotlib
ax = [Link](projection='3d')
[Link](data['time'],data['x'],data['y'], c=data['z'])
ax.set_xlabel('time')
ax.set_ylabel('X - Axis')
ax.set_zlabel('Y - Axis')
xx,yy = [Link](x,y)
z = [Link]([Link](xx**2 + yy**2))
ax.plot_surface(xx,yy,z,cmap='viridis')
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')
[Link]()
[Link] 73/77
2/12/25, 3:38 PM 15-Matplotlib
[Link](xx,yy,z,cmap='viridis')
ax.set_xlabel('X')
ax.set_ylabel('Y')
[Link]()
[Link] 74/77
2/12/25, 3:38 PM 15-Matplotlib
[Link](xx,yy,z,cmap='viridis')
ax.set_xlabel('X')
ax.set_ylabel('Y')
[Link]()
xx,yy = [Link](x,y)
z = [Link](np.log2(xx**2 + yy**2))
ax.plot_surface(xx,yy,z,cmap='viridis')
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')
[Link]()
[Link] 75/77
2/12/25, 3:38 PM 15-Matplotlib
[Link](xx,yy,z,cmap='viridis')
ax.set_xlabel('X')
ax.set_ylabel('Y')
[Link]()
[Link] 76/77
2/12/25, 3:38 PM 15-Matplotlib
[Link](xx,yy,z,cmap='viridis')
ax.set_xlabel('X')
ax.set_ylabel('Y')
[Link]()
In [ ]:
[Link] 77/77