[英]Plot Elements from List of Lists in Multiple Colors
我正在尝试从列表列表中绘制元素,特别是使用外部列表索引作为ax值和内部列表的每个元素的值作为ay值,根据它所属的类为每个点着色。 一个示例列表,带有2个子列表:
sample.list <- list(list("A"=0,"B"=0.14285, "C"=0.75), list("A"=0.138,"B"=0,"C"=0.1))
[[1]]
[[1]]$A
[1] 0
[[1]]$B
[1] 0.14285
[[1]]$C
[1] 0.75
[[2]]
[[2]]$A
[1] 0.138
[[2]]$B
[1] 0
[[2]]$C
[1] 0.1
我想要的输出将在这些点处绘制第一个子列表
(1, 0), (1, 0.14285), (1, 0.5)
(即子列表元素沿x=1
形成一条垂直线),第二个子列表将类似地绘制。 此外,每个子列表元素将具有不同的颜色A
可以是红色, B
可以是绿色等。为明确起见,我试图在一张图表上完成所有这些操作。 此外,列表元素的数量可以根据数据集而有所不同。 非常感谢您提供任何有关如何解决此问题的指示!
library(plyr)
library(ggplot2)
library(reshape2)
df <- melt(ldply(sample.list, data.frame))
df2 <- ddply(df, .(variable), function(x) { x$index <- 1:nrow(x); x})
ggplot(df2, aes(index, value, color = variable)) +
geom_point(size=3) + scale_x_continuous(breaks = seq(1:max(df2$index)))
这是那些非ggplot-er的基本解决方案:
plot(1:length(sample.list),ylim=c(0,max(unlist(sample.list))),xaxt="n",ann=FALSE)
axis(1,at=1:length(sample.list),labels=1:length(sample.list))
invisible(
sapply(
1:length(sample.list),
function(x) {
tmp2plot <- sample.list[[x]]
points(rep(x,length(tmp2plot)),unlist(tmp2plot),col=1:length(tmp2plot),pch=19)
}
)
)
title(xlab="Index",ylab="Value")
结果:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.