繁体   English   中英

从多种颜色的列表中绘制元素

[英]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.

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