How to Prevent Polygons from Being Filled in Spatial Data Visualization using Python with Rasterio and Geopandas

What will you learn? – Learn how to prevent polygons from being filled while working with raster data and geospatial operations in Python using rasterio and geopandas – Understand how to maintain polygon outlines when visualizing spatial data.

Introduction to the Problem and Solution

When working with spatial data, a common issue arises where polygons are automatically filled during visualization or processing, potentially obscuring important details. In this guide, we’ll address this problem specifically when utilizing rasterio and geopandas libraries in Python.

To avoid filling of polygons, we need to ensure that our plotting configurations are set appropriately. By adjusting certain parameters related to styling and visualization, we can maintain clear polygon boundaries without any internal filling. We’ll delve into these settings further as we progress through the solution.


# Import necessary libraries
import geopandas as gpd
from matplotlib import pyplot as plt

# Read your shapefile using GeoPandas
data = gpd.read_file('path_to_your_shapefile.shp')

# Plot the data without filling polygons
data.boundary.plot(edgecolor='black', linewidth=0.5)


# For raster plots using Rasterio:
import rasterio.plot

with rasterio.open('path_to_your_raster.tif') as src:

# Copyright PHD


When working with spatial data visualization, especially with geopandas for vector data or rasterio for raster data, it is crucial to pay attention to plot configurations. Here’s a breakdown:

  • Utilize the boundary attribute of a GeoDataFrame along with styling options like edgecolor in Matplotlib for clear polygon boundaries.
  • When dealing with raster datasets using Rasterio, simply displaying the image directly will show it without any additional fill.
  1. How do I read a shapefile using Geopandas?

  2. To read a shapefile using Geopandas, you can use gpd.read_file(‘your_shapefile.shp’).

  3. What does setting edgecolor=’black’ do in Matplotlib plots?

  4. Setting edgecolor=’black’ in Matplotlib plots specifies that the color of the edges should be black.

  5. Can I customize line width in boundary plots?

  6. Yes, you can adjust line width by specifying linewidth parameter within .plot() method call.

  7. Is it possible to control polygon fill colors separately?

  8. Certainly! You can specify different colors for both boundary edges (edgecolor) and inner fills (facecolor) independently.

  9. How does Rasterio handle fill colors by default?

  10. Rasterio displays images or rasters as they are without adding any fill color between pixels by default.

  11. Are there alternative libraries for handling spatial data visualization besides Geopandas?

  12. Yes, other libraries like Fiona for reading/writing vector files or Basemap/Matplotlib for basic mapping tasks also exist within Python’s ecosystem.

  13. Can I apply similar concepts discussed here on 3D visualizations too?

  14. While the principles remain similar, adjustments may be needed due to added complexity introduced by third dimension considerations.


Clear delineation of polygon boundaries is crucial for effective communication of spatial information. By leveraging functionalities of libraries such as geopandas, matplotlib, and rasterio, precise visualizations devoid of unwanted fills can be achieved, enhancing map legibility.

Leave a Comment