Open navigation menu
Close suggestions
Search
Search
en
Change Language
Upload
Sign in
Sign in
Download free for days
0 ratings
0% found this document useful (0 votes)
30 views
Chapter 3 Plotting and Visualizing Your Data
Uploaded by
Ha
Copyright
© © All Rights Reserved
Available Formats
Download as PDF or read online on Scribd
Download now
Download
Save Chapter 3 Plotting and Visualizing Your Data For Later
Download
Save
Save Chapter 3 Plotting and Visualizing Your Data For Later
0%
0% found this document useful, undefined
0%
, undefined
Embed
Share
Print
Report
0 ratings
0% found this document useful (0 votes)
30 views
Chapter 3 Plotting and Visualizing Your Data
Uploaded by
Ha
Copyright
© © All Rights Reserved
Available Formats
Download as PDF or read online on Scribd
Download now
Download
Save Chapter 3 Plotting and Visualizing Your Data For Later
Carousel Previous
Carousel Next
Save
Save Chapter 3 Plotting and Visualizing Your Data For Later
0%
0% found this document useful, undefined
0%
, undefined
Embed
Share
Print
Report
Download now
Download
You are on page 1
/ 14
Search
Fullscreen
Patrick Gray (patrick.c.gray at duke) - https://github.com/patrickcgray Chapter 3: Plotting and visualizing your data with matplotlib Introduction matplotlib is avery powerful plotting library for making amazing visualizations for publications, personal use, or even web and desktop applications. matplotlib can create almost any two dimensional visualization you can think of, including histograms, scatter plots, bivariate plots, and image displays. For some inspiration, check out the natplotlit example gallery which includes the source code required to generate each example. matplotlib API - state-machine versus object-oriented One part of matplotlib that may be initially confusing is that matplotlib contains two main methods of making plots - the object-oriented method, and the state-machine method. A very good overview of the difference between the two usages is provided by Jake Vanderplas, Specifically, # Pyplot state-machine © Object-oriented f you need a primer on matplotlib beyond what is here | suggest: Python Like you Mean tor the matplotlib users guide, in general, | think you should use the object-oriented API. While more complicated, is a much more powerful way of creating plots and should be used when developing more complicatec visualizations. | always recommend the OO API. Image display We will begin by reading our example image into a NumPy memory array as shown in Chapter 2 import rasterio import numpy as np # open our raster dataset dataset = rasterio.open(' . . /data/L£70220491999322EDCO1_stack.gtif") image = dataset. read() Let's check out some of this datasets characteristics# How many bands does this image have? ‘nun_bands = dataset.count print("Number of bands in image: (n}\n'format(nsnum_bands)) # How many rows and columns? rows, cols = dataset.shape print('Inage size is: (r} rows x (c} colunns\n’ format (r=rows, ¢=cols)) # what driver was used to open the raster? driver = dataset.driver print('Raster driver: {4)\n" «format (d=driver)) # What is the raster's projection? proj = dataset.crs print(‘*Inage projection:') print(proj) Number of bands in image: 8 Image size is: 25@ rows x 25@ columns Raster driver: GTift Image projection: =PSG:32615 Note that if you have the full dataset read in with you can do: red_band = image[2, :, :] # this pulls out the 3rd band print(red_band. shape) (250, 258) This pulls out the band at index 2 which is the 3rd band because python indexing starts at 0 Which is equal to simply doing red_band_read = dataset.read(3) # this pulls out the 3rd band print (red_band_read. shape) if mp.array_equal(red_band_read, red_band): + ore they equal? print(‘They are the sane.) (250, 250) They are the same. f you have a large dataset the second dataset read(3) may be preferable because you save on memory Basic plotting First thing to do is to import matplot Lit into our namespace. | will be using a special feature of the [Python utility which allows me to “inline" matplotlib figures by entering the %natplotlib inline command.5]: Amport matplotlib.pyplot as plt Xmatplotlib inline With natplotlib imported, we can summon up a figure and make our first plot: # Array of @ - 9 x = np.arange(1@) # 10 random numbers, between @ and 10 y = np.randon.randint (2, 10, size=10) # plot them as Lines plt.plot(x, y) 5]: [
specify "Ls" (“Linestyle") as a null string # plot them as just points plt.plot(x, y, ‘ro', >), [ematplotlib.lines.Line2d at @x7f35a225d100> 8 . . 6 . . 4 . 2 . ° 0 2 a 6 3 As | mentioned earlier, we'll be using Matplotib’s object oriented API, instead of its function-based API. Let's briefly draw a distinction between these two APIs: # prepare 50 x-coordinates and 58 y-coordinates x = np.Linspace(-np.pi, np.pi, 50)8 y = np.sin(x) # Plot using motplotlib's functional apr: # a single function call produces a plot; conventent but Less flexible plt.plot(x, y) [
100 075 050 025 0.00 025 -0850 -075 100 # Plot using matplotlib's object-oriented API: # we generate o figure and axis object: “fig’ and “ax” fig, ax = plt-subplots() # we then use these objects to draw-on and manipulate our plot ax.plot(x, y) [
100 075 050 025 0.00 025 -0850 -075 100 3 2 4 o© @ 2 3 Although the code that invokes the functional API is simpler, its far less powerful and flexible than the object-oriented API, which produces figure (fig) and axes (ax) objects that we can leverage to customize our plot. You will ikely see tutorials utilize the functional API in their examples, so itis useful to understand the distinction here, Shortly, you will learn how to leverage Matplotlib’s object- oriented API in powerful ways Plotting 2D arraysOne typical thing that we might want to do would be to plot one band against another. In order to do this, we will need to transform, or flatten , our 2 dimensional arrays of each band's values into 1 dimensional arrays red image[3, :, :] image[4, :, :] print(*Array shape before: {shp} (size is {sz})'.format(shp=red.shape, szered.size)) red_flat = np.ndarray.flatten(red) nir_flat = np.ndarray.flatten(nir) print(‘Array shape after: {shp} (size is {sz})'.format(shp=red_flat.shape, sz=red_flat. Array shape before: (250, 250) (size is 62500) Array shape after: (62500,) (size is 62500) We have retained the number of entries in each of these raster bands, but we have flattened them from 2 dimensions into 1. Now we can plot them. Since we just want points, we can use scatter for a scatterplot. Since there are no lines in a scatterplot, it has a slightly different syntax. Fig, ax = plt.subplots() # Make the plot ax.scatter(red_flat, nir_flat, color: # Add some oxis Labels ax.set_xlabel( ‘Red Reflectance" ) ax.set_ylabel(‘NIR label’) # Add a title ax.set_title(‘Tasseled Cap, eh?') Text(0.5, 1.0, ‘Tasseled Cap, eh?') Tasseled Cap, eh? #08 200 3000 NR tabet y 1000 300 1500 2000 2500 3000 3500 4000 4500 5000 Red Reflectance f we wanted the two axes to have the same limits, we can calculate the limits and apply themfig, ax = plt.subplots() # Make the plot ax.scatter(red_flat, nir_flat, color="r', marker='0") # Calculate min and max plot_min = min(red.min(), nir.min()) plot_max = max(ned.max(), nir.max()) ax.set_xLim((plot_min, plot_max)) ax.set_ylim((plot_min, plot_max)) # Add some oxis Labels ax.set_xlabel( ‘Red Reflectance" ) ax.set_ylabel(‘NIR label’) # Add a title ax.set_title(‘Tasseled Cap, eh?') Text(0.5, 1.0, ‘Tasseled Cap, eh?") Tasseled Cap, eh? s000 4000 2200 . 2000 1000 1000 ~~=«2000~=~=«ODS*«OSC«C Red Reflectance What if we want to view average intensities of each band? # numbers 1-8 x = np.arange(1,9) # Lets get the average value of each band y = npemean(inage, axis=(1,2)) Fig, ax = plt.subplots() # plot them as Lines ax.plot(x, y) # Add some axis Labels ax.set_xlabel( ‘Band #') ax,set_ylabel( ‘Reflectance Value") w Add a title ax,set_title("Band Intensities") Text(@.5, 1.0, "Band Intensities")In Band Intensities Reflectance Value Ba 8 ss 8 500 1 2 3 4 § 6 9 68 Band = ‘tis common to have this high reflectance in the NIR band (band 4 here) Plotting 2D arrays - images With so much data available to look at, it can be hard to understand what is going on with the mess of points shown above. Luckily our datasets aren't just a mess of points - they have a spatia structure. To show the spatial structure of our images, we could make an image plot of one of our bands using imshow to display an image on the axes: # use the matpLotltb.pyplot function “imshow" for an image -- nir at first fig, ax = plt.subplots() ax.imshow(image[3, :, :])
0 50 «100150200 Well, it looks like there is something going on - maybe a river in the center and some bright vegetation to the bottom left of the image. What's lacking is any knowledge of what the colors meanLuckily, matplotlib can provide us a colorbar, # use "imshow" for an image -- nir at first fig, ax = plt-subplots() ing = ax.imshow(image[3, :, :]) fig.colorbar(img, ax=ax) # we have to pass the current plot as an argument thus have to
0150-200 ff we want a greyscale image, we can manually specify a colormap: Well also begin showing some more advanced plotting capabilities in matplotlb such as putting ‘multiple plots in a single output. Here we'll compare the NIR to Red in greyscale. fig, (ax, ax2) = plt-subplots(1,2, figsize=(10,3)) # 2 axes on a 1x2 grid # note that we could also use indexing for our axes: # fig, ox = plt.subplots(1, 2) # axl = ax[@] # find max reflectance to put them on the same colorbar scale max_ref = np.anax([np.anax(image[3:,:]), np-amax(image[2:,:])]) # nin in first subplot nir = ax1.imshow(image[3, :, axd.set_title("NIR Sand! nir.set_clim(vmin=@, vmax=max_ref) J, crap=plt.cm.Greys) fig.colorbar(nir, ax=ax1) # Now red band in the second subplot ed = ax2.imshow(inage[2, :, :], chap=plt.cm.Greys) ax2.set_title("Red Band") ed.set_clim(vmin=@, vmax=max_ref) Fig.colorbar(red, ax=ax2)
NIR Band Red Band o 5000 0 5000 % 000 0 / 000 100 3000 100 . , 3000 150 200 80 2000 20 1000 20 1000 ° ° os 100 150. 200 o 2 io so ao Plotting 3D arrays - multispectral images Greyscale images are nice, but the most information we can receive comes from looking at the interplay among different bands. To accomplish this, we can map different spectral bands to the Red, Green, and Blue channels on our monitors Before we can do this, the natplotlib imshow help tells us that we need to normalize our bands into a 0 - 1 range. To do so, we will perform a simple linear scale fitting 0 reflectance to 0 and 80% reflectance to 1, clipping anything larger or smaller. Remember If we are going from a Int16 datatype (e.g., reflectance scaled by 10,000x) to a decimal between @ and 1, we will need to use a Float! from rasterio.plot import reshape_as_raster, reshape_as_image # Extract reference to SWIRL, NIR, and Red bands index = np.array([4, 3, 2)) colors = image[index, :, :].astype(np.floatss) max_val = 5000 mmin_val # Enforce maximum and minimum values colors{colors{:, :, :] > max_val] = max_val colors{colors(:, :, :] < min_val] = min_val for b in range(colors.shape(@]): colors(b, :, :] = colors[b, :, :] *1/ (max_val = min_val) # rasters are in the format (bands, rows, cols] whereas images are typically [rows, col # and so our array needs to be reshaped print(colors.shape) colors_reshaped = reshape_as_image(colors) print(colors_reshaped. shape) (3, 250, 250) (250, 250, 3) We've got a correctly shaped and normalized image now.Let's calculate NDVI on this dataset to compare it to the color image. In [18. np.seterr(divide='ignore’, invalid=' ignore’) bandNIR banded ndvi = (bandNIR.astype( float) -bandRed. astype( float) )/(bandNIR.astype(float)+bandRed.ast Now let's plot it all 1) 18)" 44g, axs = plt.subplots(1, 2, Flgsize=(10, 5)) # Show the color image axs[@].imshow(colors_reshaped) axs[@].set_title(‘Color Image’) # Show Nor axs[1].imshow(ndvi, cmap="Rdy1Gn") axs[1].set_title('NOVI') outfie): Text(@.5, 1.8, "NDVI') Color image 100 350 200 so 00200 Pretty informative now! There is a slighly easier way to do this rasterio has its own show function that is built to handle rasters. We saw this in chapter 1 briefly. in [201 4 this functions build on matplotlib and make them custom for rasterio from rasterio.plot import show In [21 Fig, ax = plt. subplots (Figsize=(6,6)) # display just band 4 (WIR) show((dataset.read(4)), axeax)
° 0 300 150 700 And if we want to show a color image we can use raste adjust_band function from rasterio.plot import adjust_band rgb = image[0:3] # read in red, green, blue rgb_norm = adjust_band(rgb) # normalize bands to range between 1.0 to 0.0 rgb_reshaped = reshape_as_image(rgb_norm) # reshape to [rows, cols, bands] Fig, axs = plt.subplots(1, 2, figsize=(10, 5)) # the rasterio show function takes in [bands, rows, cols] so we don't need to reshape show(rgb_norm, axzaxs[@]) axs(0].set_title("RG8 from rasterio show") # plot with normal matpLotlib functions axs[ 1] -imshow(rgb_reshaped) axs[1]-set_title("RG8 in matplotlib inshow") Text(@.5, 1.0, ‘RGB in matplotlib imshow' )RGB in matplotlib imshow RGB from rasterio show 50 50 100 100 150 150 200 200 30 S000 displaying all three bands side by side (22,7) red channel" ) green channel" ) subplots(1,3, figsiz ds’, title ‘Greens’, title: cmap="Blues', title='blue channel’) fig, (axr, axg, axb) = plt. show( (dataset, 1), axsaxr, show((dataset, 2), ax=axg, show((dataset, 3), ax=axb, ‘center’: "blue channel"}> If we want to see a histogram of the data we use the show_| function from rasterio.plot inport show hist Fig, ax = plt.subplots(#igsize=(19,5)) show_hist(dataset, ax-ax)Histogram mE _
.
at Ox7135a05c5e40> 3 100 20000 10000 | ° al 0 2000 3000) ow Let's look at an overlapping histogram, maybe that'll be more informative: fig, ax = plt.subplots(Figsize=(10,5)) show_hist(dataset, ax=ax, bins=50, lw=0.0, histtype='stepfilled’, title World Histogram overlaid tacked=False, alpha=0.3, "World Histogram overlai 3000 “
.
at Ox7F35a0619d60> 0 1000 2000 3000 2000 ow Let's look at another raster world = rasterio.open("../data/world.rgb.tif") print(world. shape) fig, ax = plt.subplots(Figsize=(10,5)) show((world), axeax, cnap='viridis") (256, 512)
3000In Check out more documentation for the rasteric plotting functions here: https://rasterio.readthedocs.io/en/latest/api/rasterio.plot html#rasterio.plot show Wrapup We've seen how natplotlib canbe combined with aumpy and rasterio to easily visualize and explore our remote sensing data. In the next chapter (link to webpage or Notebook) we wil cover how to open and read vector data
You might also like
Shadow Work Journal Free PDF
PDF
91% (164)
Shadow Work Journal Free PDF
30 pages
Hourglass Workout Program by Luisagiuliet 2
PDF
76% (21)
Hourglass Workout Program by Luisagiuliet 2
51 pages
Book of Wisdom 2
PDF
87% (164)
Book of Wisdom 2
70 pages
Book of Wisdom Revival of Wisdom
PDF
89% (93)
Book of Wisdom Revival of Wisdom
72 pages
12 Week Program: Summer Body Starts Now
PDF
87% (46)
12 Week Program: Summer Body Starts Now
70 pages
Knee Ability Zero Now Complete As A Picture Book 4 PDF Free
PDF
94% (68)
Knee Ability Zero Now Complete As A Picture Book 4 PDF Free
49 pages
Aussie Fitness - Low Calorie High Protein Recipes (BOOTLEG)
PDF
100% (12)
Aussie Fitness - Low Calorie High Protein Recipes (BOOTLEG)
462 pages
The Hold Me Tight Workbook - Dr. Sue Johnson
PDF
100% (16)
The Hold Me Tight Workbook - Dr. Sue Johnson
187 pages
GB Level Up Guide 3 Elevate PDF
PDF
79% (28)
GB Level Up Guide 3 Elevate PDF
115 pages
Read People Like A Book by Patrick King-Edited
PDF
58% (78)
Read People Like A Book by Patrick King-Edited
12 pages
Livingood, Blake - Livingood Daily Your 21-Day Guide To Experience Real Health
PDF
77% (13)
Livingood, Blake - Livingood Daily Your 21-Day Guide To Experience Real Health
260 pages
Cheat Code To The Universe
PDF
94% (78)
Cheat Code To The Universe
34 pages
Facial Gains Guide (001 081)
PDF
91% (45)
Facial Gains Guide (001 081)
81 pages
Curse of Strahd
PDF
95% (467)
Curse of Strahd
258 pages
The Psychiatric Interview - Daniel Carlat
PDF
91% (34)
The Psychiatric Interview - Daniel Carlat
473 pages
Hadestown Piano Vocal Score
PDF
95% (21)
Hadestown Piano Vocal Score
341 pages
Sisterly Lust Walkthrough
PDF
77% (96)
Sisterly Lust Walkthrough
26 pages
Can't Hurt Me
PDF
67% (27)
Can't Hurt Me
10 pages
Kris Gethins 12 Week Muscle Builder Ebook
PDF
100% (14)
Kris Gethins 12 Week Muscle Builder Ebook
45 pages
The Borax Conspiracy
PDF
91% (57)
The Borax Conspiracy
14 pages
Book of Wisdom - Part 2
PDF
92% (26)
Book of Wisdom - Part 2
41 pages
Carl Hart, Charles Ksir - Drugs, Society, and Human Behavior (2015)
PDF
100% (17)
Carl Hart, Charles Ksir - Drugs, Society, and Human Behavior (2015)
495 pages
Couples Therapy Workbook
PDF
95% (44)
Couples Therapy Workbook
157 pages
Dare To Lead by Brené Brown
PDF
45% (11)
Dare To Lead by Brené Brown
2 pages
Combs Indictment
PDF
91% (11)
Combs Indictment
14 pages
D&D Player Handbook 5e
PDF
96% (336)
D&D Player Handbook 5e
293 pages
Shortcut To Shred Ebook Revised 9-9-2015 PDF
PDF
88% (8)
Shortcut To Shred Ebook Revised 9-9-2015 PDF
15 pages
Five Wishes (Rev 06.2011)
PDF
57% (7)
Five Wishes (Rev 06.2011)
12 pages
34 Mystery of The Seven Keys Guide 1.0
PDF
100% (3)
34 Mystery of The Seven Keys Guide 1.0
108 pages
Trauma-Focused ACT - Russ Harris
PDF
95% (39)
Trauma-Focused ACT - Russ Harris
568 pages
Anastasia: The New Broadway Musical (LIBRETTO)
PDF
94% (174)
Anastasia: The New Broadway Musical (LIBRETTO)
117 pages
COSMIC CONSCIOUSNESS OF HUMANITY - PROBLEMS OF NEW COSMOGONY (V.P.Kaznacheev,. Л. V. Trofimov.)
PDF
94% (213)
COSMIC CONSCIOUSNESS OF HUMANITY - PROBLEMS OF NEW COSMOGONY (V.P.Kaznacheev,. Л. V. Trofimov.)
212 pages
I Hate You - Don't Leave Me
PDF
80% (54)
I Hate You - Don't Leave Me
6 pages
New Oxford Annotated Bible With Apocrypha (NRSV) 4e, The - Bible
PDF
95% (61)
New Oxford Annotated Bible With Apocrypha (NRSV) 4e, The - Bible
2,440 pages
TDA Birth Certificate Bond Instructions
PDF
97% (284)
TDA Birth Certificate Bond Instructions
4 pages
Repair+manuals Chilton Manuales
PDF
39% (93)
Repair+manuals Chilton Manuales
26 pages
The Secret Language of Attraction
PDF
86% (107)
The Secret Language of Attraction
278 pages
The Definitive Guide To Project 2025Fnl Project 2025
PDF
90% (10)
The Definitive Guide To Project 2025Fnl Project 2025
67 pages
How To Develop and Write A Grant Proposal
PDF
83% (542)
How To Develop and Write A Grant Proposal
17 pages
Supreme Mathematics
PDF
80% (25)
Supreme Mathematics
1 page
Credit Repair Letters To Remove Debt Strawman
PDF
98% (270)
Credit Repair Letters To Remove Debt Strawman
75 pages
Penis Enlargement Secret
PDF
60% (124)
Penis Enlargement Secret
12 pages
Workbook For The Body Keeps The Score
PDF
88% (52)
Workbook For The Body Keeps The Score
111 pages
Blue Beam Project
PDF
70% (20)
Blue Beam Project
3 pages
Donald Trump & Jeffrey Epstein Rape Lawsuit and Affidavits
PDF
83% (1016)
Donald Trump & Jeffrey Epstein Rape Lawsuit and Affidavits
13 pages
KamaSutra Positions
PDF
78% (69)
KamaSutra Positions
55 pages
KamaSutra Positions
PDF
68% (84)
KamaSutra Positions
55 pages
Into The Wild Shadow Work Journal PDF n1cr4g
PDF
96% (27)
Into The Wild Shadow Work Journal PDF n1cr4g
79 pages
7 Hermetic Principles
PDF
93% (30)
7 Hermetic Principles
3 pages
27 Feedback Mechanisms Pogil Key
PDF
77% (13)
27 Feedback Mechanisms Pogil Key
6 pages
Frank Hammond - List of Demons
PDF
92% (92)
Frank Hammond - List of Demons
3 pages
Phone Codes
PDF
78% (27)
Phone Codes
5 pages
36 Questions That Lead To Love
PDF
91% (35)
36 Questions That Lead To Love
3 pages
Sample Mental Health Progress Note
PDF
96% (47)
Sample Mental Health Progress Note
3 pages
How 2 Setup Trust
PDF
97% (307)
How 2 Setup Trust
3 pages
2025 MandateForLeadership FULL
PDF
70% (10)
2025 MandateForLeadership FULL
920 pages
Jeffrey Epstein's Little Black Book
PDF
83% (83)
Jeffrey Epstein's Little Black Book
91 pages
Bessel Van Der Kolk - The Body Keeps The Score - Brain, Mind, and Body in The Healing of Trauma-Penguin (2014)
PDF
100% (12)
Bessel Van Der Kolk - The Body Keeps The Score - Brain, Mind, and Body in The Healing of Trauma-Penguin (2014)
490 pages
House of Leaves - Mark Z Danielewski
PDF
80% (20)
House of Leaves - Mark Z Danielewski
750 pages
How To Kiss A Woman's Breast
PDF
60% (114)
How To Kiss A Woman's Breast
14 pages
MQ Cheat Sheet
PDF
0% (1)
MQ Cheat Sheet
22 pages
(Psilocybin) How To Grow Magic Mushrooms A Simple Psilocybe Cubensis Growing Technique PDF
PDF
75% (8)
(Psilocybin) How To Grow Magic Mushrooms A Simple Psilocybe Cubensis Growing Technique PDF
48 pages
Singer's Anthology Master Song and Show Index 2008 PDF
PDF
37% (43)
Singer's Anthology Master Song and Show Index 2008 PDF
38 pages
Cellular Communication POGIL
PDF
80% (10)
Cellular Communication POGIL
5 pages
36 Questions To Fall in Love 1
PDF
97% (32)
36 Questions To Fall in Love 1
2 pages
The 36 Questions That Lead To Love - The New York Times
PDF
94% (34)
The 36 Questions That Lead To Love - The New York Times
3 pages
100 Questions To Ask Your Partner
PDF
80% (35)
100 Questions To Ask Your Partner
2 pages
25 Most Valuable US Pennies
PDF
94% (16)
25 Most Valuable US Pennies
4 pages
Satanic Calendar
PDF
25% (56)
Satanic Calendar
4 pages
DBT Assignment Workbook F0220
PDF
100% (65)
DBT Assignment Workbook F0220
218 pages
The Startup Guide - Create A Business Plan
PDF
88% (199)
The Startup Guide - Create A Business Plan
26 pages
Do You Like Big Girls V01
PDF
21% (24)
Do You Like Big Girls V01
161 pages
The 36 Questions That Lead To Love - The New York Times
PDF
95% (21)
The 36 Questions That Lead To Love - The New York Times
3 pages
7 Philosophies of Education
PDF
75% (8)
7 Philosophies of Education
8 pages
The Encyclopedia of Ancient and Forbidden Knowledge
PDF
94% (34)
The Encyclopedia of Ancient and Forbidden Knowledge
440 pages
Jeffrey Epstein39s Little Black Book Unredacted PDF
PDF
75% (12)
Jeffrey Epstein39s Little Black Book Unredacted PDF
95 pages
14 Easiest & Hardest Muscles To Build (Ranked With Solutions)
PDF
100% (7)
14 Easiest & Hardest Muscles To Build (Ranked With Solutions)
27 pages
The Book of Enoch
PDF
100% (80)
The Book of Enoch
265 pages
Starbucks Underfilled Latte Lawsuit
PDF
68% (76)
Starbucks Underfilled Latte Lawsuit
24 pages
Independent Contractor Agreements
PDF
80% (839)
Independent Contractor Agreements
3 pages
ALCHEMIST
PDF
64% (14)
ALCHEMIST
4 pages
1001 Songs
PDF
70% (71)
1001 Songs
1,798 pages
Trademark License Agreement
PDF
79% (382)
Trademark License Agreement
3 pages
The 4 Hour Workweek, Expanded and Updated by Timothy Ferriss - Excerpt
PDF
23% (954)
The 4 Hour Workweek, Expanded and Updated by Timothy Ferriss - Excerpt
38 pages
Zodiac Sign & Their Most Common Addictions
PDF
63% (30)
Zodiac Sign & Their Most Common Addictions
9 pages
Muslim Rule in Sub Continent
PDF
No ratings yet
Muslim Rule in Sub Continent
21 pages
EESD2022 Paper 36
PDF
No ratings yet
EESD2022 Paper 36
6 pages
Image Segmentation With Kmeans
PDF
No ratings yet
Image Segmentation With Kmeans
17 pages
Chapter 1 Exploring Rasterio
PDF
100% (1)
Chapter 1 Exploring Rasterio
5 pages
Chapter 5 Classification of Land Cover
PDF
No ratings yet
Chapter 5 Classification of Land Cover
13 pages