`PlotLabel` pour les tracés dans une` Table`
J'ai un Tablecontenant deux parcelles, donné par
Table[
Plot[{Re[f[n]] /. j -> 3, Im[f[n]] /. j -> 3}, {n, 0, 15},
GridLines -> Automatic, PlotRange -> All, PlotLegends -> {"Real", "Imaginary"},
PlotLabel -> f[n]],
{f, {Sum[Sinc[Pi*(#1 - i*j)], {i, 1, Floor[#1]}] & ,
(-1 + E^(2*I*Pi*#1))/(j*(-1 + E^((2*I*Pi*#1)/j))) & }}
]
Comme vous pouvez le voir, Mathematica a réécrit la première PlotLabel(c'est-à-dire Sum[Sinc[Pi*(#1 - i*j)], {i, 1, Floor[#1]}] &) dans une expression qu'elle considère plus utile ou naturelle. Je ne veux pas que ça fasse ça. Je veux PlotLabelque cette intrigue ressemble à ceci:
c'est-à-dire, comme s'il était écrit PlotLabel -> "expr". Mais l'autre label est déjà ce que je veux.
J'ai expérimenté l'utilisation StringFormmais cela n'aide pas. Comment puis-je faire cela? Ou n'est-ce pas possible?
Réponses
Table[Plot[{Re[ReleaseHold@f] /. j -> 3, Im[ReleaseHold@f] /. j -> 3}, {n, 0, 15},
GridLines -> Automatic,
PlotRange -> All, ImageSize -> 350,
PlotLegends -> {"Real", "Imaginary"},
PlotLabel -> f],
{f, {HoldForm@Sum[Sinc[Pi*(n - i*j)], {i, 1, Floor[n]}],
HoldForm[(-1 + E^(2*I*Pi*n))/(j*(-1 + E^((2*I*Pi*n)/j)))]}}]
Vous pouvez remplacer HoldFormet ReleaseHoldpar Deferet First, respectivement, pour obtenir le même résultat.
Comme Bob Hanlon l'a suggéré dans les commentaires, dans les versions 12.0+, vous pouvez utiliser ReImPlotcomme suit:
Table[ReImPlot[ReleaseHold[f] /. j -> 3, {n, 0, 15},
GridLines -> Automatic, PlotRange -> All, ImageSize -> 350,
PlotLegends -> "ReIm",
ReImLabels -> {"Real", "Imaginary"},
ReImStyle -> {ColorData[97][1], {ColorData[97][2], Dashing[{}]}},
PlotLabel -> f],
{f, {HoldForm@Sum[Sinc[Pi*(n - i*j)], {i, 1, Floor[n]}],
HoldForm[(-1 + E^(2*I*Pi*n))/(j*(-1 + E^((2*I*Pi*n)/j)))]}}]