RE: Two questions concerning ListDensityPlot ...
- To: mathgroup at smc.vnet.net
- Subject: [mg28507] RE: [mg28497] Two questions concerning ListDensityPlot ...
- From: "David Park" <djmp at earthlink.net>
- Date: Tue, 24 Apr 2001 01:48:45 -0400 (EDT)
- Sender: owner-wri-mathgroup at wolfram.com
Daniel, Here is a color function for a matrix: colorfun[mat_] = With[{max = Abs[Max[Max[mat], -Min[mat]]]}, Which[ #1 == 0, Hue[0, 0, 1], #1 > 0, Hue[0.6, 0.808, 1 - (0.6*#1)/max], True, Hue[0.925, 0.808, 1 + (0.6*#1)/max]]] & ; The following routine generates a random sparse matrix. I made all the positive entries above the diagonal and all the negative entires below the diagonal so we can check that we are orienting the plot correctly. With[{matsize = 50, nonzeros = 300, maxval = 0.5}, mat = Table[0., {matsize}, {matsize}]; Module[{i, j, val}, Do[val = Random[Real, {0, maxval}]; i = Random[Integer, {1, matsize}]; j = Random[Integer, {1, matsize}]; mat[[i,j]] = If[j >= i, val, -val], {nonzeros}]]] The following plots the matrix: ListDensityPlot[Reverse[mat], ColorFunction -> colorfun[mat], ColorFunctionScaling -> False, Background -> RGBColor[0.980407, 0.941206, 0.902005], PlotLabel -> "Sparse Matrix Plot", ImageSize -> 500]; David Park djmp at earthlink.net http://home.earthlink.net/~djmp/ > -----Original Message----- > To: mathgroup at smc.vnet.net > Subject: [mg28507] [mg28497] Two questions concerning ListDensityPlot ... > > > Dear Mathematica experts, > > I'm actually trying to visualize sparsity patterns of matrixes using > Mathematica's ListDensityPlot. However, doing so I have uncounted two > problems ... > > 1. Given a (sparse) matrix A, I'm trying to establish a one-to-one > correspondence between the plot and the matrix it is based on, > i.e. I want > the A[[1,1]] element to be plotted at the upper left and > A[[Dimensions[A][[1]],Dimensions[A][[2]]]] at the lower right > corner. I've > realized this by plotting > Partition[Reverse@Flatten[A],Dimensions[A][[2]]] > instead of A. However, doing so, I do not succeed in adjusting the labels > appropriately since setting > MeshRange->{{0,Dimensions[A][[1]]},{Dimensions[A][[2]],0}} does > not invert > the numbering of the ordinate as I've expected. Therefor my question is: > How can I plot the matrix preserving the one-to-one correspondence and > adjust the mesh such that the upper left corner corresponds to > x=1, y=1 and > the lower right to x=Dimensions[A][[2]], y=Dimensions[A][[1]]? > > 2. I'm desperately looking for a color function that allows the > intermediate values to be kept white, while maxima and minima are colored > red and blue respectively with the "color intensity" indicating their > absolute value. Applied to my sparse matrix problem I want the negative > entries to be blue, the positive to be red whereas the majority > of entries > corresponding to zero should remain white. By the way, any suggestions > concerning the visualization of complex valued entries are also highly > appreciated. Is there an easy way to keep the phase information? > > Sincerely, > Kattnig > two questions concerning ListDensityPlot > >