我尝试创建一个多行的图形,即变量共享相同的x轴但在y轴上不同。我想用ggplot2。问题是ggplot生成一个没有任何行的空图。我希望有6条线(V2-V7)相对于x轴绘制,从1到5。
以下是可能复制的数据代码:
best_sil <- structure(c("1", "2", "3", "4", "5", "0.9301", "0.93", "0.9286",
"0.9209", "0.8989", "0.9", "0.8064", "0.7947", "0.7607", "0.7451",
"0.8042", "0.7847", "0.7832", "0.7578", "0.7269", "0.7487", "0.7105",
"0.6566", "0.5951", "0.6136", "0.6951", "0.677", "0.6588", "0.5922",
"0.505", "0.6889", "0.6471", "0.6524", "0.5932", "0.5068"), .Dim = c(5L,
7L))
然后我使用函数melt(),它通常以一种可用于ggplot2的方式转换数据集,当涉及到绘制多行时:
best_sil2 <- melt(best_sil, id="V1")
现在出现但之前没有的另一个问题是,melt()产生了5行太多(前五行不是绘制的,没有任何意义)。
然后是ggplot函数:
library("ggplot2")
ggplot(data=best_sil2,
aes(x=Var1, y=value, colour=Var2)) +
geom_line()
奇怪的是,当我尝试绘制它时,其他非常相似的数据运行良好(3行):
test.data.frame <- data.frame(Numb_of_var=c(1,2,3,4,5) ,Group1=c(0.93, 0.92, 0.915, 0.90, 0.892), Group2=c(0.9, 0.88, 0.85, 0.825, 0.75), Group3=c(0.89, 0.85, 0.84, 0.83, 0.72))
test.data.frame2 <- melt(test.data.frame, id="Numb_of_var")
ggplot(data=test.data.frame2,
aes(x=Numb_of_var, y=value, colour=variable)) +
geom_line()