R使用不同长度

时间:2017-05-15 20:10:25

标签: r ggplot2 roc

我研究这个问题,所有技巧都失败了。我正在尝试在ggplot中构建ROC曲线。不同的机器学习模型返回不同长度的观测向量。我的目标是将它们收集在一个地块,颜色和传说中。

当所有数据具有相同的X轴长度(观察次数)时,这很容易。所有x和y都在[0到1]的范围内。问题是不同数量的观察。我想避免插入和强制向量到相同的长度,因为每个观察都带有重要的信息。

到目前为止,我发现最好的方法是在同一个地块上添加新的线条层。

也许其他类型的情节?或来自其他包装的专业地块。

请帮忙。谢谢!

ggplot(vector_1, aes(x, y ) ) + geom_line() + ???? new layers ???

我的目标是获得这样的情节,但有更多的线条: enter image description here

这是vector1 - 34观察结果:

vector_1_x:

0 0.02325581 0.02325581 0.04651163 0.04651163 0.06976744 0.09302326 0.11627907 0.13953488 0.1627907 0.18604651 0.20930233 0.23255814 0.25581395 0.27906977 0.30232558 0.3255814 0.37209302 0.39534884 0.41860465 0.44186047 0.46511628 0.48837209 0.51162791 0.53488372 0.62790698 0.65116279 0.74418605 0.76744186 0.86046512 0.90697674 0.93023256 0.97674419 1

vector_1_y:

0 0 0.1666667 0.1666667 0.3333333 0.3333333 0.3333333 0.3333333 0.3333333 0.3333333 0.3333333 0.3333333 0.3333333 0.3333333 0.3333333 0.3333333 0.5 0.5 0.5 0.6666667 0.6666667 0.6666667 0.6666667 0.6666667 0.6666667 0.6666667 0.8333333 0.8333333 0.8333333 1 1 1 1 1

这是vector2 - 50次观察:

vector_2_x:

0 0 0.02325581 0.04651163 0.04651163 0.06976744 0.09302326 0.11627907 0.13953488 0.1627907 0.18604651 0.20930233 0.23255814 0.25581395 0.25581395 0.27906977 0.30232558 0.3255814 0.34883721 0.37209302 0.39534884 0.39534884 0.41860465 0.44186047 0.46511628 0.48837209 0.51162791 0.51162791 0.53488372 0.55813953 0.58139535 0.60465116 0.62790698 0.65116279 0.65116279 0.6744186 0.69767442 0.72093023 0.74418605 0.76744186 0.79069767 0.81395349 0.8372093 0.86046512 0.88372093 0.90697674 0.93023256 0.95348837 0.97674419 1

vector_2_x:

0 0.1666667 0.1666667 0.1666667 0.3333333 0.3333333 0.3333333 0.3333333 0.3333333 0.3333333 0.3333333 0.3333333 0.3333333 0.3333333 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.6666667 0.6666667 0.6666667 0.6666667 0.6666667 0.6666667 0.8333333 0.8333333 0.8333333 0.8333333 0.8333333 0.8333333 0.8333333 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

1 个答案:

答案 0 :(得分:3)

vector_1vector_2放入他们自己的数据框中,如下所示:

df1 <- data.frame(x = vector_1_x, y = vector_1_y)
df2 <- data.frame(x = vector_2_x, y = vector_2_y)

然后,您可以为每个data.frame图层指定不同的ggplot

ggplot() +
  geom_line(data = df1, aes(vector_1_x, vector_1_y), colour = "red") +
  geom_line(data = df2, aes(vector_2_x, vector_2_y), colour = "green")

更新

我上面所写的内容对于几行来说是可以的,但是将所有向量放在他们自己的data.frame中并且指示符变量表明它属于哪一行会更加清晰。这看起来像是:

x    y    vector
1    1    "line1"
2    3    "line1"
3    6    "line1"
...  ...  ...
1    8    "line2"
2    6    "line2"
3    2    "line2"
...  ...  ...

然后你可以拥有一个ggplot图层:

ggplot(data = df) + geom_line(aes(x, y, colour = vector))