繁体   English   中英

如何在R中可视化多行图形?

[英]How to visualize a multiline graphic in R?

我有下面的R代码,该代码可视化多线图,其中每条线对应一个数据类别。 在代码中,给类别分配了变量nk:我的数据集如下所示:

k   precision   recall
0.25    0.02    1.011
0.25    0.04    1.011
0.5 0.15    0.941
0.5 0.17    0.931
0.5 0.18    0.921
0.5 0.19    0.911
1.0 0.36    0.831
1.0 0.39    0.811
1.0 0.41    0.801

问题在于,它仅显示k = 1.0的线,而不显示k = 0.5和0.25的线。我的问题是? 我如何使用非整数的nk变量来可视化k = 0.5或0.25的线?

dtf$k <- as.numeric(dtf$k)
nk <- max(dtf$k)
xrange <- range(dtf$precision)
yrange <- range(dtf$recall)
plot(xrange, yrange,
 type="n",
 xlab="Precision",
 ylab="Recall"
 )
colors <- rainbow(nk)
linetype <- c(1:nk)
plotchar <- seq(18, 18+nk, 1)
for (i in 1:nk) {
 Ki <- subset(dtf, k==i)
 lines(Ki$precision, Ki$recall,
 type="b",
 lwd=2,
 lty=linetype[i],
 col=colors[i],
 pch=plotchar[i]
 )
}
title("Methods varying K", "Precision Recall")
legend(xrange[1], yrange[2],
 1:nk,
 cex=1.0,
 col=colors,
inset=c(-0.2,0),
 pch=plotchar,
 lty=linetype,
 title="k"
) 

数据

    dtf <- read.table(header = TRUE, text = 'k   precision   recall
0.25    0.02    1.011
0.25    0.04    1.011
0.5 0.15    0.941
0.5 0.17    0.931
0.5 0.18    0.921
0.5 0.19    0.911
1.0 0.36    0.831
1.0 0.39    0.811
1.0 0.41    0.801')
dtf$k <- factor(dtf$k)

ggplot2解决方案

require(ggplot2)
ggplot(dtf, aes(x = precision, y = recall, col = k)) +
  geom_line()

基本解决方案

plot(recall ~ precision, data = dtf, type = 'n')
cols = c('red', 'blue', 'green')
levs <- levels(df$k)
for(i in seq_along(levs)){
  take <- df[df$k == levs[i], ]
  lines(take$precision, take$recall, col = cols[i])
}

暂无
暂无

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

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