Choosing Colormaps in Matplotlib — Matplotlib 3.1.0 documentation (2024)

Matplotlib has a number of built-in colormaps accessible viamatplotlib.cm.get_cmap. There are also external libraries like[palettable] and [colorcet] that have many extra colormaps.Here we briefly discuss how to choose between the many options. Forhelp on creating your own colormaps, seeCreating Colormaps in Matplotlib.

Overview

The idea behind choosing a good colormap is to find a good representation in 3Dcolorspace for your data set. The best colormap for any given data set dependson many things including:

  • Whether representing form or metric data ([Ware])
  • Your knowledge of the data set (e.g., is there a critical valuefrom which the other values deviate?)
  • If there is an intuitive color scheme for the parameter you are plotting
  • If there is a standard in the field the audience may be expecting

For many applications, a perceptually uniform colormap is the bestchoice --- one in which equal steps in data are perceived as equalsteps in the color space. Researchers have found that the human brainperceives changes in the lightness parameter as changes in the datamuch better than, for example, changes in hue. Therefore, colormapswhich have monotonically increasing lightness through the colormapwill be better interpreted by the viewer. A wonderful example ofperceptually uniform colormaps is [colorcet].

Color can be represented in 3D space in various ways. One way to represent coloris using CIELAB. In CIELAB, color space is represented by lightness,\(L^*\); red-green, \(a^*\); and yellow-blue, \(b^*\). The lightnessparameter \(L^*\) can then be used to learn more about how the matplotlibcolormaps will be perceived by viewers.

An excellent starting resource for learning about human perception of colormapsis from [IBM].

Classes of colormaps

Colormaps are often split into several categories based on their function (see,e.g., [Moreland]):

  1. Sequential: change in lightness and often saturation of colorincrementally, often using a single hue; should be used forrepresenting information that has ordering.
  2. Diverging: change in lightness and possibly saturation of twodifferent colors that meet in the middle at an unsaturated color;should be used when the information being plotted has a criticalmiddle value, such as topography or when the data deviates aroundzero.
  3. Cyclic: change in lightness of two different colors that meet inthe middle and beginning/end at an unsaturated color; should beused for values that wrap around at the endpoints, such as phaseangle, wind direction, or time of day.
  4. Qualitative: often are miscellaneous colors; should be used torepresent information which does not have ordering orrelationships.
# sphinx_gallery_thumbnail_number = 2import numpy as npimport matplotlib as mplimport matplotlib.pyplot as pltfrom matplotlib import cmfrom colorspacious import cspace_converterfrom collections import OrderedDictcmaps = OrderedDict()

Sequential

For the Sequential plots, the lightness value increases monotonically throughthe colormaps. This is good. Some of the \(L^*\) values in the colormapsspan from 0 to 100 (binary and the other grayscale), and others start around\(L^*=20\). Those that have a smaller range of \(L^*\) will accordinglyhave a smaller perceptual range. Note also that the \(L^*\) function variesamongst the colormaps: some are approximately linear in \(L^*\) and othersare more curved.

cmaps['Perceptually Uniform Sequential'] = [ 'viridis', 'plasma', 'inferno', 'magma', 'cividis']cmaps['Sequential'] = [ 'Greys', 'Purples', 'Blues', 'Greens', 'Oranges', 'Reds', 'YlOrBr', 'YlOrRd', 'OrRd', 'PuRd', 'RdPu', 'BuPu', 'GnBu', 'PuBu', 'YlGnBu', 'PuBuGn', 'BuGn', 'YlGn']

Sequential2

Many of the \(L^*\) values from the Sequential2 plots are monotonicallyincreasing, but some (autumn, cool, spring, and winter) plateau or even go bothup and down in \(L^*\) space. Others (afmhot, copper, gist_heat, and hot)have kinks in the \(L^*\) functions. Data that is being represented in aregion of the colormap that is at a plateau or kink will lead to a perception ofbanding of the data in those values in the colormap (see [mycarta-banding] foran excellent example of this).

cmaps['Sequential (2)'] = [ 'binary', 'gist_yarg', 'gist_gray', 'gray', 'bone', 'pink', 'spring', 'summer', 'autumn', 'winter', 'cool', 'Wistia', 'hot', 'afmhot', 'gist_heat', 'copper']

Diverging

For the Diverging maps, we want to have monotonically increasing \(L^*\)values up to a maximum, which should be close to \(L^*=100\), followed bymonotonically decreasing \(L^*\) values. We are looking for approximatelyequal minimum \(L^*\) values at opposite ends of the colormap. By thesemeasures, BrBG and RdBu are good options. coolwarm is a good option, but itdoesn't span a wide range of \(L^*\) values (see grayscale section below).

cmaps['Diverging'] = [ 'PiYG', 'PRGn', 'BrBG', 'PuOr', 'RdGy', 'RdBu', 'RdYlBu', 'RdYlGn', 'Spectral', 'coolwarm', 'bwr', 'seismic']

Cyclic

For Cyclic maps, we want to start and end on the same color, and meet asymmetric center point in the middle. \(L^*\) should change monotonicallyfrom start to middle, and inversely from middle to end. It should be symmetricon the increasing and decreasing side, and only differ in hue. At the ends andmiddle, \(L^*\) will reverse direction, which should be smoothed in\(L^*\) space to reduce artifacts. See [kovesi-colormaps] for moreinformation on the design of cyclic maps.

The often-used HSV colormap is included in this set of colormaps, although itis not symmetric to a center point. Additionally, the \(L^*\) values varywidely throughout the colormap, making it a poor choice for representing datafor viewers to see perceptually. See an extension on this idea at[mycarta-jet].

cmaps['Cyclic'] = ['twilight', 'twilight_shifted', 'hsv']

Qualitative

Qualitative colormaps are not aimed at being perceptual maps, but looking at thelightness parameter can verify that for us. The \(L^*\) values move all overthe place throughout the colormap, and are clearly not monotonically increasing.These would not be good options for use as perceptual colormaps.

cmaps['Qualitative'] = ['Pastel1', 'Pastel2', 'Paired', 'Accent', 'Dark2', 'Set1', 'Set2', 'Set3', 'tab10', 'tab20', 'tab20b', 'tab20c']

Miscellaneous

Some of the miscellaneous colormaps have particular uses for whichthey have been created. For example, gist_earth, ocean, and terrainall seem to be created for plotting topography (green/brown) and waterdepths (blue) together. We would expect to see a divergence in thesecolormaps, then, but multiple kinks may not be ideal, such as ingist_earth and terrain. CMRmap was created to convert well tograyscale, though it does appear to have some small kinks in\(L^*\). cubehelix was created to vary smoothly in both lightnessand hue, but appears to have a small hump in the green hue area.

The often-used jet colormap is included in this set of colormaps. We can seethat the \(L^*\) values vary widely throughout the colormap, making it apoor choice for representing data for viewers to see perceptually. See anextension on this idea at [mycarta-jet].

cmaps['Miscellaneous'] = [ 'flag', 'prism', 'ocean', 'gist_earth', 'terrain', 'gist_stern', 'gnuplot', 'gnuplot2', 'CMRmap', 'cubehelix', 'brg', 'gist_rainbow', 'rainbow', 'jet', 'nipy_spectral', 'gist_ncar']

First, we'll show the range of each colormap. Note that some seemto change more "quickly" than others.

nrows = max(len(cmap_list) for cmap_category, cmap_list in cmaps.items())gradient = np.linspace(0, 1, 256)gradient = np.vstack((gradient, gradient))def plot_color_gradients(cmap_category, cmap_list, nrows): fig, axes = plt.subplots(nrows=nrows) fig.subplots_adjust(top=0.95, bottom=0.01, left=0.2, right=0.99) axes[0].set_title(cmap_category + ' colormaps', fontsize=14) for ax, name in zip(axes, cmap_list): ax.imshow(gradient, aspect='auto', cmap=plt.get_cmap(name)) pos = list(ax.get_position().bounds) x_text = pos[0] - 0.01 y_text = pos[1] + pos[3]/2. fig.text(x_text, y_text, name, va='center', ha='right', fontsize=10) # Turn off *all* ticks & spines, not just the ones with colormaps. for ax in axes: ax.set_axis_off()for cmap_category, cmap_list in cmaps.items(): plot_color_gradients(cmap_category, cmap_list, nrows)plt.show()
  • Choosing Colormaps in Matplotlib — Matplotlib 3.1.0 documentation (1)
  • Choosing Colormaps in Matplotlib — Matplotlib 3.1.0 documentation (2)
  • Choosing Colormaps in Matplotlib — Matplotlib 3.1.0 documentation (3)
  • Choosing Colormaps in Matplotlib — Matplotlib 3.1.0 documentation (4)
  • Choosing Colormaps in Matplotlib — Matplotlib 3.1.0 documentation (5)
  • Choosing Colormaps in Matplotlib — Matplotlib 3.1.0 documentation (6)
  • Choosing Colormaps in Matplotlib — Matplotlib 3.1.0 documentation (7)

Lightness of matplotlib colormaps

Here we examine the lightness values of the matplotlib colormaps.Note that some documentation on the colormaps is available([list-colormaps]).

mpl.rcParams.update({'font.size': 12})# Number of colormap per subplot for particular cmap categories_DSUBS = {'Perceptually Uniform Sequential': 5, 'Sequential': 6, 'Sequential (2)': 6, 'Diverging': 6, 'Cyclic': 3, 'Qualitative': 4, 'Miscellaneous': 6}# Spacing between the colormaps of a subplot_DC = {'Perceptually Uniform Sequential': 1.4, 'Sequential': 0.7, 'Sequential (2)': 1.4, 'Diverging': 1.4, 'Cyclic': 1.4, 'Qualitative': 1.4, 'Miscellaneous': 1.4}# Indices to step through colormapx = np.linspace(0.0, 1.0, 100)# Do plotfor cmap_category, cmap_list in cmaps.items(): # Do subplots so that colormaps have enough space. # Default is 6 colormaps per subplot. dsub = _DSUBS.get(cmap_category, 6) nsubplots = int(np.ceil(len(cmap_list) / dsub)) # squeeze=False to handle similarly the case of a single subplot fig, axes = plt.subplots(nrows=nsubplots, squeeze=False, figsize=(7, 2.6*nsubplots)) for i, ax in enumerate(axes.flat): locs = [] # locations for text labels for j, cmap in enumerate(cmap_list[i*dsub:(i+1)*dsub]): # Get RGB values for colormap and convert the colormap in # CAM02-UCS colorspace. lab[0, :, 0] is the lightness. rgb = cm.get_cmap(cmap)(x)[np.newaxis, :, :3] lab = cspace_converter("sRGB1", "CAM02-UCS")(rgb) # Plot colormap L values. Do separately for each category # so each plot can be pretty. To make scatter markers change # color along plot: # http://stackoverflow.com/questions/8202605/ if cmap_category == 'Sequential': # These colormaps all start at high lightness but we want them # reversed to look nice in the plot, so reverse the order. y_ = lab[0, ::-1, 0] c_ = x[::-1] else: y_ = lab[0, :, 0] c_ = x dc = _DC.get(cmap_category, 1.4) # cmaps horizontal spacing ax.scatter(x + j*dc, y_, c=c_, cmap=cmap, s=300, linewidths=0.0) # Store locations for colormap labels if cmap_category in ('Perceptually Uniform Sequential', 'Sequential'): locs.append(x[-1] + j*dc) elif cmap_category in ('Diverging', 'Qualitative', 'Cyclic', 'Miscellaneous', 'Sequential (2)'): locs.append(x[int(x.size/2.)] + j*dc) # Set up the axis limits: # * the 1st subplot is used as a reference for the x-axis limits # * lightness values goes from 0 to 100 (y-axis limits) ax.set_xlim(axes[0, 0].get_xlim()) ax.set_ylim(0.0, 100.0) # Set up labels for colormaps ax.xaxis.set_ticks_position('top') ticker = mpl.ticker.FixedLocator(locs) ax.xaxis.set_major_locator(ticker) formatter = mpl.ticker.FixedFormatter(cmap_list[i*dsub:(i+1)*dsub]) ax.xaxis.set_major_formatter(formatter) ax.xaxis.set_tick_params(rotation=50) ax.set_xlabel(cmap_category + ' colormaps', fontsize=14) fig.text(0.0, 0.55, 'Lightness $L^*$', fontsize=12, transform=fig.transFigure, rotation=90) fig.tight_layout(h_pad=0.0, pad=1.5) plt.show()
  • Choosing Colormaps in Matplotlib — Matplotlib 3.1.0 documentation (8)
  • Choosing Colormaps in Matplotlib — Matplotlib 3.1.0 documentation (9)
  • Choosing Colormaps in Matplotlib — Matplotlib 3.1.0 documentation (10)
  • Choosing Colormaps in Matplotlib — Matplotlib 3.1.0 documentation (11)
  • Choosing Colormaps in Matplotlib — Matplotlib 3.1.0 documentation (12)
  • Choosing Colormaps in Matplotlib — Matplotlib 3.1.0 documentation (13)
  • Choosing Colormaps in Matplotlib — Matplotlib 3.1.0 documentation (14)

Grayscale conversion

It is important to pay attention to conversion to grayscale for colorplots, since they may be printed on black and white printers. If notcarefully considered, your readers may end up with indecipherableplots because the grayscale changes unpredictably through thecolormap.

Conversion to grayscale is done in many different ways [bw]. Some of thebetter ones use a linear combination of the rgb values of a pixel, butweighted according to how we perceive color intensity. A nonlinear method ofconversion to grayscale is to use the \(L^*\) values of the pixels. Ingeneral, similar principles apply for this question as they do for presentingone's information perceptually; that is, if a colormap is chosen that ismonotonically increasing in \(L^*\) values, it will print in a reasonablemanner to grayscale.

With this in mind, we see that the Sequential colormaps have reasonablerepresentations in grayscale. Some of the Sequential2 colormaps have decentenough grayscale representations, though some (autumn, spring, summer,winter) have very little grayscale change. If a colormap like this was usedin a plot and then the plot was printed to grayscale, a lot of theinformation may map to the same gray values. The Diverging colormaps mostlyvary from darker gray on the outer edges to white in the middle. Some(PuOr and seismic) have noticeably darker gray on one side than the otherand therefore are not very symmetric. coolwarm has little range of gray scaleand would print to a more uniform plot, losing a lot of detail. Note thatoverlaid, labeled contours could help differentiate between one side of thecolormap vs. the other since color cannot be used once a plot is printed tograyscale. Many of the Qualitative and Miscellaneous colormaps, such asAccent, hsv, and jet, change from darker to lighter and back to darker graythroughout the colormap. This would make it impossible for a viewer tointerpret the information in a plot once it is printed in grayscale.

mpl.rcParams.update({'font.size': 14})# Indices to step through colormap.x = np.linspace(0.0, 1.0, 100)gradient = np.linspace(0, 1, 256)gradient = np.vstack((gradient, gradient))def plot_color_gradients(cmap_category, cmap_list): fig, axes = plt.subplots(nrows=len(cmap_list), ncols=2) fig.subplots_adjust(top=0.95, bottom=0.01, left=0.2, right=0.99, wspace=0.05) fig.suptitle(cmap_category + ' colormaps', fontsize=14, y=1.0, x=0.6) for ax, name in zip(axes, cmap_list): # Get RGB values for colormap. rgb = cm.get_cmap(plt.get_cmap(name))(x)[np.newaxis, :, :3] # Get colormap in CAM02-UCS colorspace. We want the lightness. lab = cspace_converter("sRGB1", "CAM02-UCS")(rgb) L = lab[0, :, 0] L = np.float32(np.vstack((L, L, L))) ax[0].imshow(gradient, aspect='auto', cmap=plt.get_cmap(name)) ax[1].imshow(L, aspect='auto', cmap='binary_r', vmin=0., vmax=100.) pos = list(ax[0].get_position().bounds) x_text = pos[0] - 0.01 y_text = pos[1] + pos[3]/2. fig.text(x_text, y_text, name, va='center', ha='right', fontsize=10) # Turn off *all* ticks & spines, not just the ones with colormaps. for ax in axes.flat: ax.set_axis_off() plt.show()for cmap_category, cmap_list in cmaps.items(): plot_color_gradients(cmap_category, cmap_list)
  • Choosing Colormaps in Matplotlib — Matplotlib 3.1.0 documentation (15)
  • Choosing Colormaps in Matplotlib — Matplotlib 3.1.0 documentation (16)
  • Choosing Colormaps in Matplotlib — Matplotlib 3.1.0 documentation (17)
  • Choosing Colormaps in Matplotlib — Matplotlib 3.1.0 documentation (18)
  • Choosing Colormaps in Matplotlib — Matplotlib 3.1.0 documentation (19)
  • Choosing Colormaps in Matplotlib — Matplotlib 3.1.0 documentation (20)
  • Choosing Colormaps in Matplotlib — Matplotlib 3.1.0 documentation (21)

Color vision deficiencies

There is a lot of information available about color blindness (e.g.,[colorblindness]). Additionally, there are tools available to convert imagesto how they look for different types of color vision deficiencies.

The most common form of color vision deficiency involves differentiatingbetween red and green. Thus, avoiding colormaps with both red and green willavoid many problems in general.

References

[colorcet](1, 2) https://colorcet.pyviz.org
[Ware]http://ccom.unh.edu/sites/default/files/publications/Ware_1988_CGA_Color_sequences_univariate_maps.pdf
[Moreland]http://www.kennethmoreland.com/color-maps/ColorMapsExpanded.pdf
[list-colormaps]https://gist.github.com/endolith/2719900#id7
[mycarta-banding]https://mycarta.wordpress.com/2012/10/14/the-rainbow-is-deadlong-live-the-rainbow-part-4-cie-lab-heated-body/
[mycarta-jet](1, 2) https://mycarta.wordpress.com/2012/10/06/the-rainbow-is-deadlong-live-the-rainbow-part-3/
[kovesi-colormaps]https://arxiv.org/abs/1509.03700
[bw]http://www.tannerhelland.com/3643/grayscale-image-algorithm-vb6/
[colorblindness]http://www.color-blindness.com/
[IBM]https://doi.org/10.1109/VISUAL.1995.480803
[palettable]https://jiffyclub.github.io/palettable/

Total running time of the script: ( 0 minutes 4.634 seconds)

Download Python source code: colormaps.py

Download Jupyter notebook: colormaps.ipynb

Keywords: matplotlib code example, codex, python plot, pyplotGallery generated by Sphinx-Gallery

Choosing Colormaps in Matplotlib — Matplotlib 3.1.0 documentation (2024)

FAQs

How to specify colormap in matplotlib? ›

To set a colormap (cmap) in Matplotlib, use the cmap parameter in plotting functions like plt. scatter() or plt. imshow() , e.g., plt. imshow(data, cmap='viridis') .

How do you choose the color of the plot in matplotlib? ›

To change the color of a plot, simply add a color parameter to the plot function and specify the value of the color.

How to choose a colormap? ›

Choosing Colormaps
  1. Whether representing form or metric data ([Ware])
  2. Your knowledge of the data set (e.g., is there a critical value from which the other values deviate?)
  3. If there is an intuitive color scheme for the parameter you are plotting.
  4. If there is a standard in the field the audience may be expecting.

What is the color range of matplotlib Colormap? ›

Some of the values in the colormaps span from 0 to 100 (binary and the other grayscale), and others start around L ∗ = 20 . Those that have a smaller range of will accordingly have a smaller perceptual range.

How to define a colormap? ›

Colormaps are three-column arrays containing RGB triplets in which each row defines a distinct color. The correspondence between the colors and your data values depends on the type of visualization you create. You can let MATLAB® control this correspondence, or you can customize it.

How to use colormap for plot? ›

How to Plot Lines with Colors Through Colormap in Matplotlib
  1. Step 1: Import Necessary Libraries. First, we need to import the necessary libraries. ...
  2. Step 2: Create Data. Next, we create some data to plot. ...
  3. Step 3: Create a Colormap. ...
  4. Step 4: Normalize Your Data. ...
  5. Step 5: Map Y-values to Colormap. ...
  6. Step 6: Plot the Line with Colors.
Jan 2, 2024

How do I choose a color for a plot? ›

Typically, lower values are associated with lighter colors, and higher values with darker colors. However, this is because plots tend to be on white or similarly light backgrounds. On a dark background, it's common to have the reverse case, where higher values are indicated with brighter, lighter colors.

What are the color options in Matplotlib? ›

matplotlib. colors
  • b : blue.
  • g : green.
  • r : red.
  • c : cyan.
  • m : magenta.
  • y : yellow.
  • k : black.
  • w : white.

How many colors are there in Matplotlib? ›

By default, the built in colormaps have 256 colors, but this doesn't always have to be the case, as we'll see in the next section.

How do I choose a map color? ›

When you're choosing colors for a map, you have three major categories to choose from. Color schemes exist for sequential (less-to-more), diverging (+ / - deviation from an average value), and categorical (movie genres in your Netflix queue) data.

How many colors are there in Colormap? ›

Each predefined colormap provides a palette of 256 colors by default. However, you can specify any number of colors by passing a whole number to the predefined colormap function.

What are the different types of color mapping? ›

There are three main types of color schemes applied to maps: Qualitative, Sequential and Diverging. Binary schemes are also used to visualize nominal differences between two categories. Variation in all three perceptual dimensions of color – Hue, Saturation and Lightness – are applied to show differences in the data.

How to set colormap in Matplotlib? ›

set_cmap() is a function in matplotlib that is used to set the default colormap for the current image or plot. A color map is a mapping from data values to colors, and it is essential in visualizing data through color variations, particularly in heatmaps, contour plots, and other types of color-mapped visualizations.

How to get color from colormap Matplotlib? ›

We can retrieve colors from any Colormap by calling it with a float or a list of floats in the range [0, 1]; e.g. cmap(0.5) will give the middle color.

What is the default Matplotlib color? ›

Matplotlib indexes color at draw time and defaults to black if cycle does not include color.

How do I change the default Colormap in matplotlib? ›

set_cmap() is a function in matplotlib that is used to set the default colormap for the current image or plot. A color map is a mapping from data values to colors, and it is essential in visualizing data through color variations, particularly in heatmaps, contour plots, and other types of color-mapped visualizations.

How to redefine a color for a specific value in a matplotlib colormap? ›

How to redefine a color for a specific value in a Matplotlib...
  1. Get a colormap instance, defaulting to rc values if *name* is None using get_cmap() method, with gray colormap.
  2. Set the color for low out-of-range values when "norm. ...
  3. Using imshow() method, display data an image, i.e., on a 2D regular raster.
May 11, 2021

How do I specify RGB in matplotlib? ›

Specifying Colors
  1. an RGB or RGBA tuple of float values in [0, 1] (e.g., (0.1, 0.2, 0.5) or (0.1, 0.2, 0.5, 0.3) )
  2. a hex RGB or RGBA string (e.g., '#0F0F0F' or '#0F0F0F0F' )
  3. a string representation of a float value in [0, 1] inclusive for gray level (e.g., '0.5' )
  4. one of {'b', 'g', 'r', 'c', 'm', 'y', 'k', 'w'}

How to use color code in matplotlib? ›

Matplotlib recognizes the following formats to specify a color. RGB or RGBA (red, green, blue, alpha) tuple of float values in a closed interval [0, 1]. Case-insensitive hex RGB or RGBA string. Case-insensitive RGB or RGBA string equivalent hex shorthand of duplicated characters.

Top Articles
The Best Vegan Chocolate Cake
The Best Vegan Buttercream
Cpmc Mission Bernal Campus & Orthopedic Institute Photos
Netr Aerial Viewer
Katie Pavlich Bikini Photos
Www.1Tamilmv.cafe
It's Official: Sabrina Carpenter's Bangs Are Taking Over TikTok
Moon Stone Pokemon Heart Gold
Satyaprem Ki Katha review: Kartik Aaryan, Kiara Advani shine in this pure love story on a sensitive subject
His Lost Lycan Luna Chapter 5
Cash4Life Maryland Winning Numbers
Overnight Cleaner Jobs
CHESAPEAKE WV :: Topix, Craigslist Replacement
Free Robux Without Downloading Apps
Nestle Paystub
Dityship
Bme Flowchart Psu
Tokioof
Bestellung Ahrefs
Inevitable Claymore Wow
Nonne's Italian Restaurant And Sports Bar Port Orange Photos
Moparts Com Forum
Viprow Golf
Po Box 35691 Canton Oh
Traveling Merchants Tack Diablo 4
X-Chromosom: Aufbau und Funktion
Www.craigslist.com Savannah Ga
A Cup of Cozy – Podcast
Cookie Clicker Advanced Method Unblocked
Bocca Richboro
14 Top-Rated Attractions & Things to Do in Medford, OR
Egusd Lunch Menu
Cowboy Pozisyon
lol Did he score on me ?
Marlene2295
Tu Housing Portal
Taktube Irani
Diggy Battlefield Of Gods
Armor Crushing Weapon Crossword Clue
Napa Autocare Locator
1v1.LOL Game [Unblocked] | Play Online
301 Priest Dr, KILLEEN, TX 76541 - HAR.com
Encompass.myisolved
Japanese Big Natural Boobs
Engr 2300 Osu
Weekly Math Review Q2 7 Answer Key
Tattoo Shops In Ocean City Nj
Vagicaine Walgreens
Random Animal Hybrid Generator Wheel
Bf273-11K-Cl
Ajpw Sugar Glider Worth
Sam's Club Fountain Valley Gas Prices
Latest Posts
Article information

Author: Horacio Brakus JD

Last Updated:

Views: 5912

Rating: 4 / 5 (71 voted)

Reviews: 94% of readers found this page helpful

Author information

Name: Horacio Brakus JD

Birthday: 1999-08-21

Address: Apt. 524 43384 Minnie Prairie, South Edda, MA 62804

Phone: +5931039998219

Job: Sales Strategist

Hobby: Sculling, Kitesurfing, Orienteering, Painting, Computer programming, Creative writing, Scuba diving

Introduction: My name is Horacio Brakus JD, I am a lively, splendid, jolly, vivacious, vast, cheerful, agreeable person who loves writing and wants to share my knowledge and understanding with you.