       Re: combining ArrayPlot with ListLinePlot

• To: mathgroup at smc.vnet.net
• Subject: [mg109923] [mg109923] Re: combining ArrayPlot with ListLinePlot
• From: "David Park" <djmpark at comcast.net>
• Date: Sat, 22 May 2010 23:34:10 -0400 (EDT)
• References: <ht1ul8\$35o\$1@smc.vnet.net> <22897006.1274440296212.JavaMail.root@n11> <002a01caf8dc\$98d57520\$ca805f60\$@net> <2870450.1274492022439.JavaMail.root@n11>

```Vadim,

The following is a method to obtain the ListLinePlot on top of the
MatrixPlot:

nplevels = RandomReal[{1, 255}, {44, 1000}];
psig = RandomReal[{0, 1}, 1000];
lp = ListLinePlot[{psig}];
ap = MatrixPlot[nplevels,
AspectRatio -> 1/GoldenRatio,
FrameTicks -> True,
DataRange -> {{0, 1000}, {0, 1}}];
Show[ap, lp]

You might want different y scales on the left and right sides for the two
sets of data, which you could get by using the FrameTicks option and writing
custom ticks for one side.

The following is a method to obtain the two plots in a column with the x
axes aligned. The trick here is to use the same ImageMargins option in the
two plots such that the left hand tick values for both plots will both fit
in the allotted space.

nplevels = RandomReal[{1, 255}, {44, 1000}];
psig = RandomReal[{0, 1}, 1000];
lp = ListLinePlot[{psig},
Frame -> True,
ImageMargins -> {{20, 10}, {20, 20}}];
ap = MatrixPlot[nplevels,
AspectRatio -> 1/GoldenRatio,
FrameTicks -> {{Automatic, None}, {Automatic, None}},
DataReversed -> False,
DataRange -> {{0, 1000}, All},
ImageMargins -> {{20, 10}, {20, 20}}];
GraphicsColumn[{ap, lp}]

David Park
djmpark at comcast.net
http://home.comcast.net/~djmpark/

From: Vadim Zaliva [mailto:krokodil at gmail.com]

On May 21, 2010, at 4:56 , David Park wrote:

> It might help if you could post the actual, evaluable, Mathematica code,
or
> maybe the code for a simplified case with simulated data that still
exhibits
> the same problem.
>
> Just describing what you did in general terms or posting screen shots will
> sometimes not capture the source of the problem.

David,

Here is the sample code demonstrating what I am trying to do:

nplevels = RandomReal[{1, 255}, {44, 1000}]
ap = MatrixPlot[nplevels, FrameTicks -> True]
psig = RandomReal[{0, 1}, 1000];
lp = ListLinePlot[{psig}]
Show[ap, lp]

I am trying to combine a matrix representing 2D image with a plot of some
signal related to this image. I think the source of my problem is that while
X coordinates match, the ranges of Y coordinates very different. It is 1-255
for image data and 0-1 for the signal.

Ideally I would like to have an image plot on top of ListLinePlot. Of course
I can combine them via GraphicsColumn, but I want them to be aligned along X
coordinates.

Thanks!