legendgram icon indicating copy to clipboard operation
legendgram copied to clipboard

Allow for a custom scale/breaks in legendgram

Open lenkahas opened this issue 4 years ago • 0 comments

It would be nice to also be able to use a custom scale for legendgram, in situations where the full colorbar/scale needs to be presented as well as how the data fits into it.

See example, which uses the legendgram function where pal.number is pal.n discussed in issue #12

import pandas as pd import numpy as np import mapclassify as mf from matplotlib.colors import ListedColormap import geopandas as gpd import seaborn as sns import matplotlib.pyplot as plt

data = pd.DataFrame(np.random.gamma(5,5,300), columns = ['var']) # create some random data data['var'] = (data['var']/100)-0.12 # shift is left and on small scale so it it is the same as my situation data = data.iloc[0:265,:] # make it uneven data.hist();

nybb_path = gpd.datasets.get_path('nybb') # get some random spatial data boros = gpd.read_file(nybb_path) boros.set_index('BoroCode', inplace=True)

brk = np.arange(-0.9, 0.9,0.06) # define the custom breaks b = ListedColormap(sns.color_palette("bwr", 30).as_hex()) # get the pallette scheme = mf.UserDefined(data['var'], bins=brk) # define the bins

fig, ax = plt.subplots(1, figsize=(10, 10)) boros.plot(column = 'Shape_Area', cmap = b, ax = ax) ax.axis('off') legendgram(fig,ax, data['var'], breaks = scheme.bins, pal=b, bins = 50, legend_size=(0.4,0.13), # legend size in fractions of the axis loc = 'lower right');


IndexError Traceback (most recent call last) in 10 bins = 50, 11 legend_size=(0.4,0.13), # legend size in fractions of the axis ---> 12 loc = 'lower right');

in llegendgram(f, ax, y, breaks, pal, bins, clip, loc, legend_size, frameon, tick_params) 46 for c in range(k): 47 for b in range(bucket_breaks[c], bucket_breaks[c+1]): ---> 48 patches[b].set_facecolor(pl(c/k)) 49 #--- 50 if clip is not None:

IndexError: list index out of range

image

Maybe the solution could look a little like this

image

lenkahas avatar Jun 19 '20 11:06 lenkahas