简体   繁体   English

如何在格子中添加水平线到xy图

[英]How to add horizontal line to xy plot in lattice

I'm using lattice to generate a plot that looks like the image below 我正在使用晶格生成一个看起来像下图的图

The code I'm using to generate the plot is: 我用来生成图的代码是:

xyplot(RMSE ~ Dimensions, data=afterdim,groups = paste("", Dim_Reduction),
type = "l", auto.key =list(spline = "bottom", points = FALSE, lines = TRUE), 
xlab="Dimensions", ylab="RMSE",scales=list(ylim=c(0,1)))

I would like to draw a horizontal line on this graph at y-axis 0.23 with a different color. 我想在此图表上以y-axis 0.23绘制一条水平线,颜色不同。 Purpose of adding the horizontal line is to show a baseline. 添加水平线的目的是显示基线。 Is this possible to do? 这可能吗?

在此输入图像描述

Sample data I'm using to plot is: 我用来绘制的样本数据是:

Dim_Reduction, Dimensions, Time, RMSE
PCA, 9, 15.39, 0.287
PCA, 8, 16.84, 0.290
PCA, 7, 14.13, 0.289
PCA, 6, 12.14, 0.292
PCA, 5, 12.54, 0.293
PCA, 4, 11.23, 0.295
ICA, 11, 20.23, 0.287
ICA, 10, 20.88, 0.288
ICA, 9, 16.34, 0.290
ICA, 8, 16.99, 0.294
ICA, 7, 14.34, 0.291
ICA, 6, 13.33, 0.292
ICA, 5, 12.12, 0.294

You can try the following code 您可以尝试以下代码

# data
afterdim <- read.table(header = TRUE, text = "
Dim_Reduction  Dimensions  Time RMSE
PCA, 9, 15.39, 0.287
PCA, 8, 16.84, 0.290
PCA, 7, 14.13, 0.289
PCA, 6, 12.14, 0.292
PCA, 5, 12.54, 0.293
PCA, 4, 11.23, 0.295
ICA, 11, 20.23, 0.287
ICA, 10, 20.88, 0.288
ICA, 9, 16.34, 0.290
ICA, 8, 16.99, 0.294
ICA, 7, 14.34, 0.291
ICA, 6, 13.33, 0.292
ICA, 5, 12.12, 0.294")

xyplot(RMSE ~ Dimensions, data=afterdim,groups =  Dim_Reduction,
       type = c("l", "g"), auto.key =list(spline = "bottom", points = FALSE, lines = TRUE), 
       xlab="Dimensions", ylab="RMSE",scales=list(ylim=c(0,1)),
       panel=function(...) {
           panel.xyplot(...)
           panel.abline(h=.29)
       })

Need to read both ?xyplot section on 'scales' and ?llines: 需要阅读'scale'和?llines上的两个?xyplot部分:

mylattice <- xyplot(RMSE ~ Dimensions, data=afterdim, groups = Dim_Reduction,
            panel =function(x,y,groups,...){ 
                           panel.xyplot(x,y,groups,...);
                           panel.lines(x=3:12, y=rep(0.23,10), col="red") },
             scales=list( y=list( limits= c(0.22,0.3))),
             type = "l", xlab="Dimensions", ylab="RMSE")
 png(); print(mylattice); dev.off()

在此输入图像描述

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM