用跳过坐标绘制平行坐标

2024-09-27 07:27:39 发布

您现在位置:Python中文网/ 问答频道 /正文

人们在100米,400米,1600米的赛道上比赛,他们的结束时间被记录下来。我想在平行坐标图中显示每个赛车手的数据。有些选手可能跑不完这条赛道。在这种情况下,我想以某种方式标记它,或者用一个无穷大的点,或者用一个特定轨迹的颜色。在

例如,我在绘画中绘制了一个平行坐标图: enter image description here
拉兹曼还没跑完1600米的赛道,这条赛道上标着x

下面给出了一个数据集示例“赛车.csv“:

RACER,TRACK.100m,TRACK.400m,TRACK.1500m
Superman,0.1,0.5,1
Lazyman,200,900,Inf

我试过用熊猫来解决:

^{pr2}$

这给出了在1600m处没有Lazyman的Inf值的绘图: enter image description here

我还为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')

我走近了:

enter image description here
因为这显示了一个无穷大的值,但没有对其进行任何注释。在

任何解决方案,无论是Python还是R,都会受到欢迎。此外,建议标记未完成的比赛是赞赏的。在


Tags: csv数据标记time时间情况trackinf
1条回答
网友
1楼 · 发布于 2024-09-27 07:27:39

使用R和ggplot2

建立一些虚假数据:

df <- data.frame(ID = factor(c(rep(1, 3), rep(2, 3), rep(3, 3)), labels = c('Realman', 'Lazyman', 'Superman')),
             race = factor(rep(seq(1,3,1), 3), labels = c('100m', '400m', '1600m')),
             runTime = c(8.9, 20.5, 150.9, 100.1, 300.3, +Inf, 1.2, 5, +Inf))

        ID  race runTime
# 1  Realman  100m     8.9
# 2  Realman  400m    20.5
# 3  Realman 1600m   150.9
# 4  Lazyman  100m   100.1
# 5  Lazyman  400m   300.3
# 6  Lazyman 1600m     Inf
# 7 Superman  100m     1.2
# 8 Superman  400m     5.0
# 9 Superman 1600m     Inf

结果:

enter image description here

代码:

^{pr2}$

相关问题 更多 >

    热门问题