使用ListLinePlot进行赛车圈图表

| 我正在尝试获取赛车圈数的位置表,并绘制类似于此http://www.fia.com/zh-CN/sport/championships/f1/2010/bahrain/Pages/lap_chart.aspx的圈数图。 每行对应一个圈,第一圈位于第一行。在每行中按开始/结束行的顺序列出了汽车编号 这张表看起来像这样(4站比赛,6圈: 1 3 2 4 1 3 2 4 1 3 4 2 3 1 4 2 3 1 4 2 3 4 1 2 在上面的示例中,顺序是第一圈之后的1、3、2、4,在6圈比赛结束时,赛车3获胜,赛车4位居第二,依此类推。 错误地绘制很容易,我这样做是:
ListLinePlot[Table[Position[data,x],{x,4}]]
这确实会产生一个圈速图,但它在底部具有第一位置,在顶部具有第四位置,而我真正需要的是y轴以4-3-2-1运行,因此第一位置位于顶部。 如何反转y轴,使其从1(顶部)到n(底部)?     
已邀请:
只需使用Quadrant 4即可解决屏幕位置问题。 这也适用于DNF! (未完成的驱动程序)。 第一位以y = -1绘制,第二位以y = -2绘制,依此类推。 请注意,下面的
{{lap_, y_} :>  {lap - 1, -y}}
中的
y
如何被
-y
代替。
lap
减1,因为我包括了起始位置的数据(圈数=零)。 进行较小的重写,以与不同数量的驾驶员和赛车圈配合使用,并重新格式化代码以提高可读性。 -向导先生
data = 
  {{1, 3, 2, 4},
   {1, 3, 2, 4},
   {1, 3, 4, 2},
   {3, 1, 4, 2},
   {3, 1, 4, 2},
   {3, 4, 1, 2}};

{p, n} = {Max@data, Length@data};

ticks = {#, #} &@Array[{-#, #} &, p];
ticks[[All, 1, 2]] = {\"Pole\", \"Winner\"};

PrependTo[data, Range@p];  (* add starting position *)

ListLinePlot[
 Replace[
   Array[data~Position~# &, p],
   {lap_, y_} :> {lap - 1, -y},
   {2}
 ],
 Frame -> True,
 FrameLabel ->
  {\"Laps Completed\",
   \"Starting Positions\",
   \"Laps Completed\",
   \"Final Positions\"},
 GridLines -> {Range[0, n + 1], None},
 FrameTicks -> {ticks, {All, All}},
 PlotRange -> {Automatic, {-.7, -.3 - p}},
 PlotStyle -> Thickness[.01]
]
在这种情况下,第1辆汽车(在杆位发车的那辆)在完成最后两圈之前就退出了比赛。请注意,#3赛车会自动前进一个位置。     
反转仓位顺序,然后重新标记刻度线:
ListLinePlot[
 Table[Position[data, x] /. {xx_, yy_} :> {xx, 5 - yy}, {x, 4}],
 Ticks -> {Automatic, {{1, 4}, {2, 3}, {3, 2}, {4, 1}}}, 
 PlotStyle -> Thickness[.01]]
    
好吧,有人提出了
BarChart
和brought8ѭ,所以我们开始...
BarChart[Ordering /@ data, ChartLayout -> \"Overlapped\", 
 Joined -> Automatic, BarSpacing -> 0, ChartElementFunction -> ({} &),
  ChartStyle -> 1, ScalingFunctions -> \"Reverse\", Axes -> False, 
 Frame -> {{True, False}, {True, False}}, PlotRange -> {All, All}, 
 BaseStyle -> Thickness[0.01]]
(但是
ListPlot
解决方案可能更容易。可惜的是它尚不支持
ScalingFunctions
。)     
因为我喜欢它,所以我将省去这个“聪明”的实现,但是David的答案要强大得多。
laps = 
  {{1, 3, 2, 4},
   {1, 3, 2, 4},
   {1, 3, 4, 2},
   {3, 1, 4, 2},
   {3, 1, 4, 2},
   {3, 4, 1, 2}};

ListLinePlot[
  -Thread[Ordering /@ laps],
  AxesOrigin -> {1, 0}, PlotStyle -> Thick,
  Ticks -> {All, Array[{-#, #} &, 4]}
]
    
现在如何显示所有y轴:
data = {{1, 3, 2, 4},
   {1, 3, 2, 4},
   {1, 3, 4, 2},
   {3, 1, 4, 2},
   {3, 1, 4, 2},
   {3, 4, 1, 2}};

ListLinePlot[Table[Position[5 - data, x], {x, 4}], 
 Axes -> {True, False}]
    
ScalingFunctions
现在似乎可以与
ListLinePlot
一起使用
data = {{1, 3, 2, 4}, {1, 3, 2, 4}, {1, 3, 4, 2}, {3, 1, 4, 2}, {3, 1,
     4, 2}, {3, 4, 1, 2}};
ListLinePlot[Table[Position[data, x], {x, 4}], 
 ScalingFunctions -> {Identity, \"Reverse\"}, AxesOrigin -> {1, -5}]
我不知道为什么ѭ17y坐标需要为负。     

要回复问题请先登录注册