I would like to draw a stack plot with a colormap as given in Figure 5 of this paper. Here's a screenshot of the same
Currently, I am able to draw a scatter plot of a similar nature.
I would like to convert this scatter plot to a stack plot with a colormap. I am bit lost on ideas to do this. My initial guess is that for each (x,y) point I need list of z points on the colormap spectrum. I wonder however, if there's a simpler way to this. Here's my code to generate the scatter plot with color map
cm = plt.cm.get_cmap('RdYlBu')
plt.xscale('log')
plt.yscale('log')
sc = plt.scatter(x, y, c=z, marker ='x', norm = matplotlib.colors.Normalize(vmin= np.min(z), vmax=np.max(z)), s=35, cmap=cm)
plt.colorbar(sc)
plt.show()
Edit
I feel I need to find a way to convert the z-array
to multiple z-arrays
- one for each bin on the color bar. I can then simply create a stacked area chart from these derived z-arrays
.
Edit 2
I followed Rutger's code and was able to produce this graph for my data. I wonder why there's an issue with the axes limits.
It seems from your example
scatterplot
that you have a lot of points. Plotting these as individual data will cover up a large portion of your data and only show the 'top' ones. This is bad practice and when you have this much data doing some aggregation will improve the visual representation.The example below shows how you can
bin
and average your data by using a 2d histogram. Plotting the result as either an image or a contour is fairly straightforward once your data is in an appropriate format for visual display.Aggregating the data before plotting also increases performance and prevents
Array Too Big
or memory related errors.