2016-01-13 25 views
-1

我想创建一个绘图表与RoundrobinPrediction点,没有颜色,其中RoundrobinPrediction型之分是不同的,它有一个传说。我想为结果添加最适合的线条。情节multipoints和最佳拟合线

我无法将所有这些功能添加到一个有2点的图中。我习惯了Gnuplot,但我不知道如何用R来做到这一点。我如何用R来做到这一点?

[1]的输入数据

Inputdata,Roundrobin,Prediction 
1,178,188 
2,159,185 
3,140,175 

[2]脚本来生成数据

no_faults_data <- read.csv("testresults.csv", header=TRUE, sep=",") 

# Graph 1 
plot(no_faults_data$Inputdata, no_faults_data$Roundrobin,ylim = range(c(no_faults_data$Roundrobin,no_faults_data$Prediction)),xlab="Input data size (MB)", ylab="Makespan (seconds)") 
points(no_faults_data$Inputdata, no_faults_data$Prediction) 
abline(no_faults_data$Inputdata, no_faults_data$Roundrobin, untf = FALSE, \dots) 
abline(no_faults_data$Inputdata, no_faults_data$Prediction, untf = FALSE, \dots) 
legend("top", notitle, c("Round-robin","Prediction"), fill=terrain.colors(2), horiz=TRUE) 
+0

看看abline()..https://stat.ethz.ch/R-manual/R-devel/library/graphics/html/abline.html – MLavoie

+0

我知道有'abline',问题是我不知道如何将所有这些结合在一个图中。我习惯于Gnuplot而不是R. – xeon123

回答

1

在基础R你将不得不先创建一个拟合模型:

robin <- lm(Roundrobin ~ Inputdata, data = no_faults_data) 
pred <- lm(Prediction ~ Inputdata, data = no_faults_data) 

plot(no_faults_data$Inputdata, no_faults_data$Roundrobin, 
    ylim = range(c(no_faults_data$Roundrobin,no_faults_data$Prediction)), 
    xlab = "Input data size (MB)", ylab = "Makespan (seconds)", 
    col = "green", pch = 19, cex = 1.5) 
points(no_faults_data$Inputdata, no_faults_data$Prediction, pch = 22, cex = 1.5) 
abline(robin, lty = 1) 
abline(pred, lty = 5) 
legend(1.1, 155, legend = c("Round-robin","Prediction"), pch = c(19,22), col = c("green","black"), 
     bty = "n", cex = 1.2) 

其中给出:

enter image description here

要进一步定制基本R图,请参阅?par?legend


随着ggplot2你需要将你的数据重塑为长格式:

library(reshape2) 
library(ggplot2) 
ggplot(melt(no_faults_data, id="Inputdata"), 
     aes(x=Inputdata, y=value, shape=variable, color=variable)) + 
    geom_point(size=4) + 
    geom_smooth(method = "lm", se = FALSE) + 
    theme_minimal() 

这给:

enter image description here


使用的数据:

no_faults_data <- read.csv(text="Inputdata,Roundrobin,Prediction 
1,178,188 
2,159,185 
3,140,175", header=TRUE) 
+0

图例中可能有不同的点吗? '传奇(...,pch =(9,19),c(“循环赛”,“预测”),fill = c(“绿色”,“白色”))' – xeon123

+0

@ xeon123查看更新,HTH – Jaap

0

您应该查看ggplot2包进行绘图。可能不需要您提供的3分数据,但它会比默认数据更好。

df <- data.frame("Inputdata" = c(1,2,3,1,2,3), "score" = c(178,159,140,188,185,175), "scoreType" = c(rep("Roundrobin",3), rep("Prediction",3))) 

p <- ggplot(data=df, aes(x=Inputdata, y=score, group=scoreType, shape = scoreType)) + geom_point(size=5) 
p <- p + ggtitle("My Title") 
p+stat_smooth(method="lm",se = FALSE) 

enter image description here

在这里,您按评分的类型,让GG的情节让传说为您服务。 stat_smooth在这里使用lm。