【发布时间】:2017-07-22 05:42:45
【问题描述】:
人们在 100 米、400 米、1600 米的赛道上比赛,并记录他们的完成时间。我想在平行坐标图中显示每个赛车手的数据。一些赛车手可能无法完成赛道。在这种情况下,我想以某种方式对其进行标记,无论是无限点还是特定轨道的颜色。
作为一个例子,我在paint中绘制了一个平行坐标图:
Lazyman 1600m 的赛道还没有走完,这里标有 x。
以下“racing.csv”中给出了一个示例数据集:
RACER,TRACK.100m,TRACK.400m,TRACK.1500m
Superman,0.1,0.5,1
Lazyman,200,900,Inf
我已经尝试过使用 pandas 的解决方案:
import pandas
from pandas.tools.plotting import parallel_coordinates
import matplotlib.pyplot as plt
d = pandas.read_csv('racing.csv')
f = plt.figure()
parallel_coordinates(d, 'RACER')
f.axes[0].set_yscale('log')
plt.show()
这给出了 Lazyman 在 1600m 处没有 Inf 值的图:
我还为ggplot准备了一个csv(可能有更好的方法):
RACER,TRACK,TIME
Superman,100m,0.1
Superman,400m,0.5
Superman,1600m,1
Lazyman,100m,200
Lazyman,400m,900
Lazyman,1600m,Inf
使用 ggplot:
require(ggplot2)
d <- read.csv('racing2.csv')
g <- ggplot(d) + geom_line(aes(x=TRACK,y=TIME,group=RACER, color=RACER))
g <- g + scale_y_log10()
ggsave('ggplot.png')
我走近了:
任何解决方案,无论是 Python 还是 R,都将受到赞赏。此外,我们感谢有关标记未完成比赛的建议。
【问题讨论】:
-
到目前为止你有什么尝试,懒人不想从0开始...
-
很抱歉,您能否澄清一下。 Lazyman 还没有完成 1600 m,这就是为什么他在无限时被标记为 x。到目前为止,我正在谷歌搜索,如果我找到答案,我会发布它。
-
您必须先从一些数据和一个体面的第一次尝试开始,并解决一个特定的问题。
-
不画400米到1600米之间的线怎么样?
-
@Axeman:这样可以吗?