Home > OS >  Matplotlib Color gradient on scatter plot based on values from dataframe pandas
Matplotlib Color gradient on scatter plot based on values from dataframe pandas

Time:08-11

I have a dataframe:

d = {'x':[38.23750, 34.07029, 49.71443, 37.77493, 40.71427], 
     'y':[-117.39588, -104.35108, 7.30776,-122.41942, -74.00597],
    'size':[300, 20, 100, 150, 80],
    'density':[10,20,30,40,50]}
df = pd.DataFrame(data=d)

    x               y      size   density
0   38.23750    -117.39588  300     10
1   34.07029    -104.35108  20      20
2   49.71443    7.30776     100     30
3   37.77493    -122.41942  150     40
4   40.71427    -74.00597   80      50

I want to plot the dots so that the size is determined using the df[size] column. I also want to add a color gradient from light blue to dark blue depending on the df[density] column (the smallest value is light blue, the last value is dark blue).

I'm plotting like this, but i dont know how to add a gradient:

x = df['x'] 
y = df['y'] 
s = df['size']
c  =  df['density']
plt.scatter(x, y, s=s, c=c, alpha=0.5)

enter image description here

But I would like such colors (painted in paint)

enter image description here

CodePudding user response:

You need to specify a enter image description here

PS: it's easier to use the data keyword to specify columns as shown in the answer than assigning the dataframe columns to variables.


If you don't find a suitable colormap, you can make your own, e.g. from white to blue:

from matplotlib.colors import LinearSegmentedColormap
blue_cm = LinearSegmentedColormap.from_list('Blue', ['w', 'b'])
  • Related