Re: combining ArrayPlot with ListLinePlot
- To: mathgroup at smc.vnet.net
- Subject: [mg109904] Re: combining ArrayPlot with ListLinePlot
- From: Patrick Scheibe <pscheibe at trm.uni-leipzig.de>
- Date: Sat, 22 May 2010 00:41:23 -0400 (EDT)
Hi, > I would like to thank everybody for their answers. The problem is not > solved yet. of course this was only a hint which should lead you into the right direction. > I tried setting data range and it did not help. The data used in array > plot has dimensions {44,2000}. > > So I expect x to be in range {1,2000} and y in {1,44}. > However when I right click on Array Plot and select "Show > Coordinates" I can see that x is indeed in the right range, but > y range is something like {-45,82}. A screenshot: Mathematica makes a lot of stuff to create nice plots. This includes frames and spaces around plots. So what you see (and get with Show Coordinates) can be different from the underlying data-range. But there are options for those settings and a look in the ArrayPlot doc would have showed you what to try: nx = 200; ny = 44; data1 = Table[ Re[ArcSec[x + I y]], {y, -Pi, Pi, 2 Pi/(ny - 1.)}, {x, -Pi, Pi, 2 Pi/(nx - 1.)}]; ap = ArrayPlot[data, DataRange -> {{0, nx}, {0, ny}}, PlotRangePadding -> None, Frame -> False, ImagePadding -> None, PlotRangeClipping -> True] This should give you a graphics where the Show Coordinates should be what you expected. The data ranges from {{0, 200}, {0, 44}}. Say, I create now a ListLinePlot with exactly 200 points and the values range from about 2 to 30. lp = ListLinePlot[10 data[[22]], PlotRange -> {{0, nx}, Automatic}, DataRange -> {0, nx}] Combining the two graphics Show[{ap, lp}] creates an image where the function-graph goes from the left image border to the right, as expected. Remembering that the image is 44 units high, the scale of the y-values in the function seem to fit too. What I don't understand is, why you care about that "Show Coordinates" doesn't work as expected. Say I have an ArrayPlot with your data range and I want to draw a line from the left-lower corner to the right-upper corner, then the function is 44x/2000: Show[{ArrayPlot[Table[1, {44}, {2000}], DataRange -> {{0, 2000}, {0, 44}}], Plot[44 x/2000., {x, 0, 2000}, PlotStyle -> Yellow] }] this is what I wanted. Ok, there is space around the graphics, but the contents is correct. Cheers Patrick