# Difficulty with MatrixPlot

I can use matrixplot for plotting basic functions but I am having problems with matrices. If I try to plot Z={{3 Cos[t], 2Sin[t]}, {-8 Cos[t], 5Sin[t]}} for -50<=t<=50 I get a strange narrow box and I am not sure if it's correct at all. I used the following plot commands:

MatrixPlot[Table[UnitStep[{3 Cos[t], 2 Sin[t]}] UnitStep[{-8 Cos[t],5 Sin[t]}], {t, -50, 50}], PlotTheme -> "Detailed"]


Is this the correct way to matrix plot what I mentioned?

• The dimension of the table result is {101, 2} which is the reason for the narrow box. Not clear exactly what you are trying to achieve with MatrixPlot. Commented Aug 14, 2020 at 13:16
• I am just trying to plot this 3x3 matrix with MatrixPlot which according to wolfram generates a plot that gives a visual representation of the values of elements in a matrix. (1) But is what I did correct - was this command sufficient to plot what I wanted as mentioned in the beginning of my question? (2) Is there a better way to visualize Z with the mentioned range? Commented Aug 14, 2020 at 13:32
• What are the elements of the 3x3 matrix? The function Z is a pair of ellipses in parametric form. Maybe you want ParametricPlot[{{3 Cos[t], 2 Sin[t]}, {-8 Cos[t], 5 Sin[t]}}, {t, -50, 50}]? Note that in WL the arguments to trig functions are specified in radians, so you probably don't want the range to be -50 to 50. Commented Aug 14, 2020 at 13:41
• I will try out what you mentioned. But I specifically want to try with MatrixPlot and maybe with ArrayPlot later. It should be possible right? I stated the matrix in my question and declared it randomly as Z. But it could be A or B or M. In mathematica, we state the elements of a matrix inside curly braces. I also made a mistake, Z is a 2x2 matrix as it can be evidently seen. Not a 3x3 one. Commented Aug 14, 2020 at 13:57

In such cases you can use Manipulate

Manipulate[
MatrixPlot[{{3 Cos[t], 2 Sin[t]}, {-8 Cos[t], 5 Sin[t]}}, PlotLabel -> t]
, {t, -50, 50}]


• This is more like what I expected to see but got that weird box instead. Can you point out though what's missing/wrong with my command? Commented Aug 14, 2020 at 14:25
• I am not sure why you are using UnitStep here. Table[UnitStep[{3 Cos[t], 2 Sin[t]}] UnitStep[{-8 Cos[t],5 Sin[t]}], {t, -50, 50}] is not a list of 2x2 matrices. UnitStep[{3 Cos[t], 2 Sin[t]}] UnitStep[{-8 Cos[t], 5 Sin[t]}] gives you a 1x2 matrix. Commented Aug 14, 2020 at 14:38
• I wasn't sure how to include the given interval with the matrix inside MatrixPlot. I used some references from wolfram and gave UnitStep a shot but ig it was used incorrectly. How would UnitStep would then be used for a 2x2 matrix - ie if it's possible to do so with the case I've described? . Commented Aug 14, 2020 at 15:28
• MatrixPlot shows the value of mat[i,j] in i,j box. UnitStep is a step function. UnitStep[t] {{a, b}, {c, d}} is {{a, b}, {c, d}} for t>0 and {{0, 0}, {0, 0}} for t<0. I don't thin you need UnitStep for your problem. Alternatively you can plot each element as a function of t, but you don't need UnitStep there as well. Commented Aug 14, 2020 at 16:32
Clear["Global*"]


As pointed out by Sumit, use Manipulate

Manipulate[
MatrixPlot[{
{3 Cos[t], 2 Sin[t]}, {-8 Cos[t], 5 Sin[t]}},
PlotLegends -> Automatic],
{{t, 1}, -50, 50, 1, Appearance -> "Labeled"}]


To use UnitStep

Attributes[UnitStep]

(* {Listable, NumericFunction, Orderless, Protected, ReadProtected} *)


Since UnitStep is Listable,

UnitStep[{{3 Cos[t], 2 Sin[t]}, {-8 Cos[t], 5 Sin[t]}}]

(* {{UnitStep[3 Cos[t]], UnitStep[2 Sin[t]]}, {UnitStep[-8 Cos[t]],
UnitStep[5 Sin[t]]}} *)


With UnitStep the array elements are either 0 or 1

Manipulate[
MatrixPlot[
UnitStep[{{3 Cos[t2], 2 Sin[t2]}, {-8 Cos[t2], 5 Sin[t2]}}],
PlotLegends -> Automatic],
{{t2, 1}, -50, 50, 1, Appearance -> "Labeled"}]
`