PlotMarkers исчезают при построении ровно двух полилиний в Mathematica? - PullRequest
4 голосов
/ 15 декабря 2011

Не уверен, что это ошибка ММА или я что-то не так делаю.Рассмотрим следующую функцию:

plotTrace[points_] :=
 ListPlot[points,
  Joined -> True,
  PlotMarkers -> Table[i, {i, Length@points}]]

Теперь рассмотрим передачу ей значений, сгенерированных RandomReal.А именно, рассмотрим

RandomReal[1, {nTraces, nPointsPerTrace, 2(*constant = nDimensions*)}]. 

Если nTraces равен 1, то PlotMarkers отображаются для всех значений nPointsPerTrace, которые я пробовал:

Manipulate[
 plotTrace[RandomReal[1, {1, nPointsPerTrace, 2}]], 
 {nPointsPerTrace, 1, 20, 1}]

plotting random points when nTraces == 1

Если nTraces3 или больше, тогда маркеры графика отображаются для всех значений nPointsPerTrace, которые я пробовал

Manipulate[plotTrace[RandomReal[1, {nTraces, nPointsPerTrace, 2}]],
 {nTraces, 3, 20, 1}, {nPointsPerTrace, 1, 20, 1}]

image= 3">

Но если nTraces равно 2, я не вижу маркеры графика, независимо от значения nPointsPerTrace:

Manipulate[plotTrace[RandomReal[1, {2, nPointsPerTrace, 2}]],
 {nPointsPerTrace, 1, 20, 1}]

plotting random points when nTraces == 2

Подсказки, подсказки, советы будут с благодарностью!

Ответы [ 2 ]

5 голосов
/ 15 декабря 2011

Он обрабатывает PlotMarkers -> {1,2} как маркер и размер, а не как два маркера:

In[137]:= ListPlot[{{1, 2, 3}, {4, 5, 6}}, PlotMarkers -> {1, 2}] // InputForm

Out[137]//InputForm=
Graphics[GraphicsComplex[{{1., 1.}, {2., 2.}, {3., 3.}, {1., 4.}, {2., 5.}, {3., 6.}, 
  {1., 1.}, {2., 2.}, {3., 3.}, {1., 4.}, {2., 5.}, {3., 6.}}, 
  {{{Hue[0.67, 0.6, 0.6], Inset[Style[1, FontSize -> 2], 7], 
     Inset[Style[1, FontSize -> 2], 8], Inset[Style[1, FontSize -> 2], 9]}, 
    {Hue[0.9060679774997897, 0.6, 0.6], Inset[Style[1, FontSize -> 2], 10], 
     Inset[Style[1, FontSize -> 2], 11], Inset[Style[1, FontSize -> 2], 12]}, {}}}], 
 {AspectRatio -> GoldenRatio^(-1), Axes -> True, AxesOrigin -> {0, 0}, 
  PlotRange -> {{0, 3.}, {0, 6.}}, PlotRangeClipping -> True, 
  PlotRangePadding -> {Scaled[0.02], Scaled[0.02]}}]
1 голос
/ 15 декабря 2011

Вещи становятся еще более странными, когда вы пробуете разные вещи для PlotMarkers. Ниже не отображаются маркеры сюжета, как в приведенных выше примерах.

pts = RandomReal[1, {2, 10, 2}];
(* No markers *)
ListPlot[pts,
 Joined -> True,
 PlotMarkers -> {1, 2}
 ]

Mathematica graphics

Однако, когда вы изменяете 2 на b, он делает:

pts = RandomReal[1, {2, 10, 2}];
(* Has markers *)
ListPlot[pts,
 Joined -> True,
 PlotMarkers -> {1, b}
 ]

Mathematica graphics

Если вы попытаетесь изменить 1 на что-то, это не сработает:

pts = RandomReal[1, {2, 10, 2}];
(* No markers *)
ListPlot[pts,
 Joined -> True,
 PlotMarkers -> {a, 2}
 ]

Mathematica graphics

Это действительно звучит как ошибка, но я не уверен, зависит ли это от версии или какое-то поведение, которое неочевидно.

...