Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Creating a 1D heat map from a line graph

Is it possible to create a 1D heat map from data in a line graph? i.e. I'd like the highest values in y to represent the warmer colours in a heat map. I've attached an example image of the heat map I'd like it to look like as well as data I currently have in the line graph.

1D heat map and graph example:

enter image description here

To get the heatmap in the image shown I used the following code in python with matplotlib.pyplot:

heatmap, xedges, yedges = np.histogram2d(x, y, bins=(np.linspace(0,length_track,length_track+1),1))
extent = [0, length_track+1, 0, 50]
plt.imshow(heatmap.T, extent=extent, origin='lower', cmap='jet',vmin=0,vmax=None)

But I believe this only works if the data is represented as a scatter plot.

like image 581
bs10reh Avatar asked Aug 23 '17 13:08

bs10reh


People also ask

Is a heat map a graph?

Description. Heat Map Chart, or Heatmap is a two-dimensional visual representation of data, where values are encoded in colors, delivering a convenient, insightful view of information. Essentially, this chart type is a data table with rows and columns denoting different sets of categories.


1 Answers

If we assume that the data is equally spaced, one may use an imshow plot to recreate the plot from the question.

import matplotlib.pyplot as plt
import numpy as np; np.random.seed(1)
plt.rcParams["figure.figsize"] = 5,2

x = np.linspace(-3,3)
y = np.cumsum(np.random.randn(50))+6

fig, (ax,ax2) = plt.subplots(nrows=2, sharex=True)

extent = [x[0]-(x[1]-x[0])/2., x[-1]+(x[1]-x[0])/2.,0,1]
ax.imshow(y[np.newaxis,:], cmap="plasma", aspect="auto", extent=extent)
ax.set_yticks([])
ax.set_xlim(extent[0], extent[1])

ax2.plot(x,y)

plt.tight_layout()
plt.show()

enter image description here

like image 189
ImportanceOfBeingErnest Avatar answered Sep 21 '22 22:09

ImportanceOfBeingErnest