问题
I am trying to produce a figure/plot with more than a single heatmap (matrix with color shading according to the cell value). At the moment using Plots;
pyplot()
and heatmap(mat)
is enough to produce a heatmap.
It is not clear to me how to produce a single figure with more though. After looking at this page example subplots for how to use the layout, and then the example histogram, I cannot seem to produce working examples for the two together.
The question is how to produce a figure with two different matrices displayed via heatmap or some other function to do the same?
(as an extra side, could you also explain the context of the 'using' statement and how it relates to the 'backend'?)
回答1:
The easiest way is to make a Vector of heatmaps, then plot those
using Plots
hms = [heatmap(randn(10,10)) for i in 1:16];
plot(hms..., layout = (4,4), colorbar = false)
The using
statement calls the Plots
library. The "backend" is another package, loaded by Plots, that does the actual plotting. Plots itself has no plotting capabilities - it translates the plot call to a plot call for the backend package.
Explanation of the code above:
Plotting with Plots is a two-step process. 1: plot
generates a Plot
object with all the information for the plot; 2: when a Plot
object is returned to the console, it automatically calls julia´s display
function, which then generates the plot. But you can do other things with the Plot
object first, like put it in an array.
The heatmap
call is a short form of plot(randn(10,10), seriestype = :heatmap)
, so it just creates a Plot object. 16 Plot objects are stored in the vector.
Passing a number of Plot objects to plot
creates a new, larger Plot, with each of the incoming Plot
objects as subplots. The splat operator ...
simply passes each element of the Array{Plot}
to plot
as an individual argument.
来源:https://stackoverflow.com/questions/46335316/generating-subplots-of-heatmaps-in-julia-lang