R中的图表不显示数据

时间:2018-01-28 21:00:36

标签: r charts

我有以下数据框:

        vector_builtin  vector_loop     vector_recursive
1            0.00        0.10             0.34
2            0.00        0.10             0.36
3            0.00        0.08             0.36
4            0.00        0.11             0.34
5            0.00        0.11             0.36

我想在折线图中显示三列。

我已将ggplot2导入R并且图表显示时没有数据或行。

代码:

library(ggplot2)
indexes <- row.names(df.new)
ggplot(df.new, aes(x=vector_recursive, y=indexes))

图表输出 enter image description here

我想要的输出 图表显示折线图中的三个系列。

enter image description here

2 个答案:

答案 0 :(得分:1)

确保您的数据格式为ggplot2。在您的代码中,geom_line希望您提供数据中的哪些列应与哪个问题相对应。下面我重新创建了您的数据,将来考虑使用dput向其他人提供数据,这有助于解决您的具体问题。

df=data.frame(vector_builtin=c(0.00,0.00,0.00,0.00,0.00),
           vector_loop=c(0.10,0.10,0.08,0.11,0.11),
           vector_recursive=c(0.34,0.36,0.36,0.34,0.36))

但是,您没有指定x轴是什么,因此我们将创建一个包含该信息的新变量,例如:

df$x=1:5

现在,我建议将数据重新整形为长格式,ggplot2首选。您也可以在此处使用其他答案并指定每个答案,但可以使用reshape2的{​​{1}}函数。

melt

现在,当您正确识别要绘制的列的名称时,library(reshape2) df.m = melt(df, id.vars="x") 将正确绘制数据:

ggplot2

答案 1 :(得分:0)

使用来自OP的ggplot2和df的一个非常基本的例子可以是:

df <- read.table(text = "time vector_builtin  vector_loop     vector_recursive
1            0.00        0.10             0.34
2            0.00        0.10             0.36
3            0.00        0.08             0.36
4            0.00        0.11             0.34
5            0.00        0.11             0.36", header = T, stringsAsFactors = F)

p <- ggplot() +
     geom_line(aes(time, vector_builtin, colour = "red"), data =  df) + 
     geom_line(aes(time, vector_loop, colour = "green"), data =  df) +
     geom_line(aes(time, vector_recursive, colour = "blue"), data =  df) +
     labs(x="Time(s)", y="Value") + # Labels for axis 
     scale_color_manual("Data Types", values=c(red="red",green="green",blue="blue"),
                 labels=c("vector_builtin", "vector_loop", "vector_recursive" ))

print(p)

enter image description here