5 Stimmen

Matlab-ähnliche mehrzeilige Darstellung in Mathematica

Ich habe also eine Matrix von Werten, bei der die Zeilen Datensätzen entsprechen, und ich möchte jeden dieser Werte mit ListPlot darstellen, aber ich möchte eine andere x-Achse als den Index haben. In Matlab würde ich haben:

x = 0:4;

ys = [10 20 40 80 160; 
      20 40 80 160 320; 
      30 60 120 240 480]';

plot(x,ys)

und dies würde drei Zeilen mit den x-Werten 0-4 und den y-Werten für jede Spalte ergeben.

In Mathematica kam ich dem am nächsten, indem ich

x = Range[0,4];

ys = {{10, 20, 40, 80, 160},
      {20, 40, 80, 160, 320},
      {30, 60, 120, 240, 480}};

ListPlot[Transpose[{x,#}]& /@ ys]

Mathematica graphics

Ist dies der richtige Weg? Es scheint ein bisschen kryptisch zu sein. Ich hoffe, es gibt eine Funktion oder Option, die ich übersehe.

5voto

Leonid Shifrin Punkte 22309

Da in Ihrem speziellen Fall die Punkte äquidistant sind, können Sie Folgendes verwenden

ListPlot[ys, DataRange -> x[[{1,-1}]]]

Ich hoffe, das ist weniger kryptisch. Sie können natürlich auch die Bereichswerte direkt verwenden:

ListPlot[ys, DataRange -> {0, 4}]

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X