Skip to content
Related Articles

Related Articles

Matplotlib.colors.TwoSlopeNorm class in Python
  • Last Updated : 21 Apr, 2020
GeeksforGeeks - Summer Carnival Banner

Matplotlib is an amazing visualization library in Python for 2D plots of arrays. Matplotlib is a multi-platform data visualization library built on NumPy arrays and designed to work with the broader SciPy stack.

Matplotlib.colors.TwoSlopeNorm

The matplotlib.colors.TwoSlopeNorm class is used to normalize data with the set center. It comes handy while mapping data with unequal rates of change around the conceptual center. For example, the range between -3 to 6 has a center 0.

Syntax: class matplotlib.colors.TwoSlopeNorm(vcenter, vmin=None, vmax=None)

Parameters:

  1. vcenter: It holds a float value that defines 0.5 in normalization.
  2. vmin: This is an optional parameter that defines the data value 0.0 in normalization. It defaults to minimum value of the dataset.
  3. vmax: This is an optional parameter that defines the data value 1.0 in normalization. It defaults to maximum value of the dataset.

Method of the class:



  • autoscale_none(self, A): This method is used to clip at vcenter by getting vmax and vmin.

Example 1:




import numpy as np
import matplotlib.pyplot as plt
import matplotlib.cbook as cbook
import matplotlib.colors as colors
  
file = cbook.get_sample_data('topobathy.npz'
                             asfileobj = False)
  
with np.load(file) as example:
    topo = example['topo']
    longi = example['longitude']
    latit = example['latitude']
  
figure, axes = plt.subplots(constrained_layout = True)
  
# creating a colormap that has land
# and ocean clearly delineated and 
# of the same length (256 + 256)
undersea = plt.cm.terrain(np.linspace(0, 0.17, 256))
land = plt.cm.terrain(np.linspace(0.25, 1, 256))
every_colors = np.vstack((undersea, land))
terrain_map = colors.LinearSegmentedColormap.from_list('terrain_map',
    every_colors)
  
# the center is offset so that 
# the land has more dynamic range 
# while making the norm
diversity_norm = colors.TwoSlopeNorm(vmin =-500,
                                     vcenter = 0
                                     vmax = 4000)
  
pcm = axes.pcolormesh(longi, latit, topo,
                      rasterized = True,
                      norm = diversity_norm,
                        
                      cmap = terrain_map, )
axes.set_xlabel('Longitude $[^o E]$')
axes.set_ylabel('Latitude $[^o N]$')
axes.set_aspect(1 / np.cos(np.deg2rad(49)))
  
figure.colorbar(pcm, shrink = 0.6, extend ='both',
                label ='Elevation [m]')
plt.show()

Output:

Exampe 2:




import numpy as np
import matplotlib.pyplot as plt
import matplotlib.colors as mcolors
  
data = np.random.normal(.4, 2, (10, 10))
  
two_slope_norm = mcolors.TwoSlopeNorm(vmin = data.min(), 
                                      vmax = data.max(), 
                                      vcenter = 0)
  
plt.imshow(data, cmap = plt.cm.RdBu, 
           norm = two_slope_norm)
  
plt.colorbar()
plt.show()

Output:

Attention geek! Strengthen your foundations with the Python Programming Foundation Course and learn the basics.

To begin with, your interview preparations Enhance your Data Structures concepts with the Python DS Course.

My Personal Notes arrow_drop_up
Recommended Articles
Page :