Here is what I did.
data={2.18756, 2.17447, 2.17031, 2.16801, 2.31719, 2.36214, 2.14151, \
2.13749, 2.13819, 2.14531, 2.35749, 2.40783, 2.18333, 2.16507, \
2.17598, 2.21962, 3.52217, 3.60957, 2.21752, 2.14844, 2.15905, \
2.76315, 3.70188, 3.83357, 2.25902, 2.17451, 2.18496, 2.83573, \
3.6727, 3.82887, 2.23612, 2.14, 2.17541, 2.76535, 3.61427, 3.80555};
g = ListInterpolation[data, InterpolationOrder -> 1];
data2 = g[#[[1]], #[[2]]] & /@ Tuples[Range@7, 2] // Quiet;
ListDensityPlot[Transpose@Partition[data2, 7],
ColorFunction -> "TemperatureMap", Frame -> True, Mesh -> 5,
InterpolationOrder -> 0, MeshStyle -> Black, FrameTicks -> False,
FrameLabel -> {"IPTG", "Rib"}, PlotLabel -> "Data Heat Map ",
PlotLegends ->
BarLegend[{"TemperatureMap", {1, 5}},
LegendLabel ->
Placed["Fluorescence (MEPE)", Right, Rotate[#, 90 Degree] &],
LegendMarkerSize -> 170], ImageSize -> 200]
Which gives me exactly (more or less) ArrayPlot results. Note that data2 is 7x7
Now I can use ListDensityPlot with InterpolationOrder->1 to get 6x6 smooth heat map.
ListDensityPlot[Transpose@Partition[data2, 7],
ColorFunction -> "TemperatureMap", Mesh -> 5, Frame -> True,
InterpolationOrder -> 1, MeshStyle -> Black, FrameTicks -> False,
FrameLabel -> {"IPTG", "Rib"}, PlotLabel -> "Data Heat Map ",
PlotLegends ->
BarLegend[{"TemperatureMap", {1, 5}},
LegendLabel ->
Placed["Fluorescence (MEPE)", Right, Rotate[#, 90 Degree] &],
LegendMarkerSize -> 170], ImageSize -> 200]
Which is what I want..
Inspared by http://stackoverflow.com/questions/31063591/in-matlab-how-to-smooth-pixels-in-2d-heatmap-using-imagesc