Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wolfram mathematica 重新审视赛车圈图_Wolfram Mathematica_Plot - Fatal编程技术网

Wolfram mathematica 重新审视赛车圈图

Wolfram mathematica 重新审视赛车圈图,wolfram-mathematica,plot,Wolfram Mathematica,Plot,这是我第一次发帖,所以如果基于预先存在的问题问一个新问题是不好的形式,我很抱歉 我正在尝试创建一个类似于此处所示的“大腿图”: 我的需要有点扭曲。我正在为一项不同的运动绘制圈位置图,我的数据结构也不同。数据按车队和车队在每圈结束时的位置列出。例如,以下是数据示例: BRA = {03, 01, 01, 01}; CAN = {14, 14, 06, 10}; CRO = {10, 08, 11, 12}; DEN = {05, 05, 04, 11}; FRA = {13, 11, 14, 1

这是我第一次发帖,所以如果基于预先存在的问题问一个新问题是不好的形式,我很抱歉

我正在尝试创建一个类似于此处所示的“大腿图”:

我的需要有点扭曲。我正在为一项不同的运动绘制圈位置图,我的数据结构也不同。数据按车队和车队在每圈结束时的位置列出。例如,以下是数据示例:

BRA = {03, 01, 01, 01};
CAN = {14, 14, 06, 10};
CRO = {10, 08, 11, 12};
DEN = {05, 05, 04, 11};
FRA = {13, 11, 14, 13};
GBR = {04, 02, 02, 02};
GER = {15, 15, 12, 09};
GRE = {16, 16, 16, 16};
IRL = {01, 03, 08, 06};
NOR = {02, 04, 09, 05};
NZL = {06, 06, 05, 08};
POL = {08, 07, 03, 03};
POR = {11, 13, 15, 15};
SUI = {07, 09, 10, 07};
SWE = {09, 10, 07, 04};
USA = {12, 12, 13, 14};
在这个例子中,巴西队在第一圈结束时排名第三,然后在第二圈结束时进入第一,在第三圈保持领先,然后到达终点

我已经创建了我所需要的图表,通过手动重新键入数据的格式来适应前面示例中发布的代码,但是必须有一种更有效的方法。如有任何建议,我们将不胜感激

还有一个问题。。。目前,给定圈结束时的位置是均匀分布的,然而在真正的比赛中,第一名比第二名领先20秒,而第二名可能比第三名领先10秒。是否有办法绘制每个位置,以反映领先于下一个竞争对手的相对时间

以下是我当前的工作代码:

data = {{09, 10, 01, 06, 04, 11, 14, 12, 15, 03, 13, 16, 05, 02, 07, 08}, 
{01, 06, 09, 10, 04, 11, 12, 03, 14, 15, 05, 16, 13, 02, 07, 08}, 
{01, 06, 12, 04, 11, 02, 15, 09, 10, 14, 03, 07, 16, 05, 13, 08}, 
{01, 06, 12, 15, 10, 09, 14, 11, 07, 02, 04, 03, 05, 16, 13, 08}};

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

ListLinePlot[
 Replace[Array[data~Position~# &, 
   p], {lap_, y_} :> {lap - 1, -y}, {2}], 

Frame -> True,

FrameLabel -> {"Rounding", "Position", "Rounding", 
   "Final Positions"}, GridLines -> {Range[0, n + 1], None},

FrameTicks -> {
{{{-1, "IRL"}, {-2, "NOR"}, {-3, "BRA"}, {-4, "GBR"}, {-5, 
  "DEN"}, {-6, "NZL"}, {-7, "SUI"}, {-8, "POL"}, {-9, 
  "SWE"}, {-10, "CRO"}, {-11, "POR"}, {-12, "USA"}, {-13, 
  "FRA"}, {-14, "CAN"}, {-15, "GER"}, {-16, "GRE"}},

 {{-1, "1 BRA"}, {-2, "2 GBR"}, {-3, "3 POL"}, {-4, "4 SWE"}, {-5, 
  "5 NOR"}, {-6, "6 IRL"}, {-7, "7 SUI"}, {-8, "8 NZL"}, {-9, 
  "9 GER"}, {-10, "10 CAN"}, {-11, "11 DEN"}, {-12, 
  "12 CRO"}, {-13, "13 FRA"}, {-14, "14 USA"}, {-15, 
  "15 POR"}, {-16, "16 GRE"}}},

{{{0, "W1"}, {1, "L1"}, {2, "W2"}, {3, "F"}},
{{0, "W1"}, {1, "L1"}, {2, "W2"}, {3, "F"}}}},

PlotRange -> {Automatic, {-.7, -.3 - p}},

PlotStyle -> Thickness[.003]]

这里介绍了如何以最少的手动操作重新格式化数据

tot = {
  BRA = {03, 01, 01, 01},  CAN = {14, 14, 06, 10},  CRO = {10, 08, 11, 12},  
  DEN = {05, 05, 04, 11},  FRA = {13, 11, 14, 13},  GBR = {04, 02, 02, 02},
  GER = {15, 15, 12, 09},  GRE = {16, 16, 16, 16},  IRL = {01, 03, 08, 06},
  NOR = {02, 04, 09, 05},  NZL = {06, 06, 05, 08},  POL = {08, 07, 03, 03},
  POR = {11, 13, 15, 15},  SUI = {07, 09, 10, 07},  SWE = {09, 10, 07, 04},
  USA = {12, 12, 13, 14}}
那就做吧

data = Ordering /@ Transpose@tot
在你提到的问题中使用@DavidCarraher的答案

编辑

如果您有每个团队(每圈)的计时,以下是绘制时间比例图的框架:

lapTimes   = RandomReal[{0, 1}, {10, 5}];(*ten teams,five laps*)
ListLinePlot[Accumulate /@ lapTimes, PlotRange -> {{1, 5}, All}]

最后的下一行是赢家(花费的时间更少)

相关