Ron*_*Ron 6 plot wolfram-mathematica
我试图把赛车圈的位置表并绘制一个类似的圈图http://www.fia.com/en-GB/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号车排在第2圈,依此类推.
这很容易错误地绘制,我这样做:
ListLinePlot[Table[Position[data,x],{x,4}]]
Run Code Online (Sandbox Code Playgroud)

这确实产生了一圈的图表,但它在顶部底部和四号位第一的位置,而我真正需要的是Y轴运行4-3-2-1所以第一个位置是在顶部.
如何反转y轴使其从1(顶部)到n(底部)?
只需使用Quadrant 4即可解决屏幕位置问题.
这也适用于DNF!(未完成的司机).
第一个位置绘制在y = -1,第二个位置绘制在y = -2,等等.注意如何在下面y替换.-y{{lap_, y_} :> {lap - 1, -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]
]
Run Code Online (Sandbox Code Playgroud)

在完成最后两圈之前,汽车#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]]
Run Code Online (Sandbox Code Playgroud)

现在显示 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}]
Run Code Online (Sandbox Code Playgroud)

| 归档时间: |
|
| 查看次数: |
1322 次 |
| 最近记录: |