我有一个数据框df
,其中有10列,例如
row.names c(300, 400, 500, 600, 700) X1 X2 X3 X4 X5 X6 X7 X8 X9
1 absTLM_3_4 300 -4.147782e-08 -3.360635e-08 -3.306786e-08 -3.133482e-08 -3.124207e-08 -3.056317e-08 -3.020253e-08 -2.950814e-08 -2.955155e-08
2 absTLM_4_5 400 -3.703708e-08 -3.013687e-08 -2.746570e-08 -2.627163e-08 -2.528328e-08 -2.457543e-08 -2.437666e-08 -2.412295e-08 -2.358447e-08
3 absTLM_5_6 500 -3.575756e-08 -2.694028e-08 -2.457341e-08 -2.331162e-08 -2.262283e-08 -2.180886e-08 -2.104917e-08 -2.101946e-08 -2.081650e-08
4 absTLM_6_7 600 -2.454283e-08 -2.152165e-08 -1.967477e-08 -1.885213e-08 -1.835989e-08 -1.814608e-08 -1.806438e-08 -1.785795e-08 -1.784158e-08
5 absTLM_7_8 700 -2.317125e-10 -1.029456e-08 -1.076342e-08 -1.365264e-08 -1.378578e-08 -1.457421e-08 -1.463740e-08 -1.480280e-08 -1.515121e-0
现在我想在x轴上绘制第1列,而在y轴上绘制第2,5,6列和第8列。为此,我使用以下代码,
x4 <- melt(df, id=names(df)[1], measure=names(df)[c(2, 5, 6, 8)], variable = "cols")
plt <- ggplot(x4) +
geom_line(aes(x=x,y= value, color=cols), size=1) +
labs(x = "x", y = "y")
当我调用绘图对象plt
时,我在eval(expr,envir,enclos)中出现错误:找不到对象'x'。
有人可以指出我应该在这里更改以正确显示情节。
感谢。
答案 0 :(得分:1)
看起来您的列名称有误。试试这个:
x4 <- melt(df, id=names(df)[1], measure=names(df)[c(2, 5, 6, 8)], variable = "cols")
colnames(x4)[1] <- "x"
plt <- ggplot(x4) +
geom_line(aes(x=x,y= value, color=cols), size=1) +
labs(x = "x", y = "y")
答案 1 :(得分:0)
以下代码未正确绘制数据的原因是由于列标题名称c(300, 400, 500, 600, 700)
是数据框df
中第一列的名称。
x4 <- melt(df, id=names(df)[1], measure=names(df)[c(2, 5, 6, 8)], variable = "cols")
plt <- ggplot(x4) +
geom_line(aes(x=x,y= value, color=cols), size=1) +
labs(x = "x", y = "y")
因此,必须首先更改df
的列标题名称,根据Brandon Bertelsen的建议,c(300, 400, 500, 600, 700)
的列标题名称已由以下行更改为x
代码,
colnames(df)[1] <- "x"
更改列标题名称后,可以熔化数据框,之后绘图工作正常,
x4 <- melt(df, id=names(df)[1], measure=names(df)[c(2, 5, 6, 8)], variable = "cols")
plt <- ggplot(x4) +
geom_point(aes(x=x,y= value, color=cols), size=2) +
labs(x = "x", y = "y")
因此情节plt
看起来像这样,