R - 多列 fiddle 图

标签 r math graph plot

我正在尝试绘制一个包含许多列的 fiddle 图。我将阅读这样的文件:

data <- read.table("file.txt", as.is=TRUE);

数据文件会有很多行,每一行应该是一列。问题是我事先不知道数据文件会有多少行。根据我通过研究发现的内容,我可以像这样制作 fiddle 图:

vioplot(x, y, z, ....);

这只会给我预设数量的列。我将如何处理所有行?此外,我有一个与列相对应的字符串列表,因此命名参数也需要类似的方法。

感谢任何帮助。

最佳答案

set.seed(101)
write.table(matrix(runif(1000),nrow=10),file="tmpfile.txt")
##

基本上,您想转置数据并将它们变成列列表...

dat <- read.table("tmpfile.txt", as.is=TRUE)
cdat <- as.list(as.data.frame(t(as.matrix(dat))))
names(cdat)[1] <- "x"  ## vioplot() needs the first element to be called 'x'
library(vioplot)

然后使用do.call

do.call(vioplot,cdat)

如果您有一个要使用的名称向量:

do.call(vioplot,c(cdat,list(names=nameVector)))

(其他参数将与 names 一起添加到附加参数列表中)

从长远来看,我建议 (1) 如果可能的话,按列而不是按行存储数据; (2) 熟悉 ggplot2 中的 geom_violin() -- 它更加灵活。

library(reshape2)
mdat <- melt(t(as.matrix(dat)))  ## convert to long format

现在数据存储为 100 行 3 列的数据框,带有变量 Var1 (表示原始数据集中的列)和 Var2(行 来自原始数据集,对应于其中一个变量)。

library(ggplot2)
ggplot(mdat,aes(x=factor(Var2),y=value))+geom_violin()+
   labs(x="variable")

关于R - 多列 fiddle 图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17688240/

相关文章:

javascript - 仅 vis graph2d y 轴整数

php - PHP 中的 Edmonds 最大匹配算法

r - 使用 plot_ly 在条形图中显示数据值

r - Rgraphviz不再可用于R吗?

math - 找到两个整数的最大同余模?

arrays - 给定一个 `first n` 自然数数组,其中一个元素缺失,一个元素重复。找出两个数字

r - 在knitr中抑制readOGR消息

r - 从分成 300 个子字符串的长字符串创建新列?

java - 正弦波在Java中交替失真

php - 大型 PHP 应用程序的依赖关系图