我开始学习R用于数据分析,最重要的是,用于数据可视化。
由于我仍处于切换过程中,我正在尝试重现我在R中使用Graphpad Prism或Origin Pro所做的活动。在大多数情况下,一切都很顺利,但我找不到用于绘图的智能解决方案单个图中的多个y列。
我通常从用于数据可视化的软件中得到的结果如下:
每一条黑色迹线都是一个测量值,我想在R中获得相同的图形。在Prism或Origin中,这将在XY图形中进行单个复制粘贴。
我导出了数据矩阵(一个X表示时间,多个Y值,这是您在图像中看到的痕迹)。
我使用以下命令在R中导入了数据:
library(ggplot2) #loaded ggplot2
Data <- read.csv("Directory/File.txt", header=F, sep="") #imported data
DF <- data.frame(Data) #transformed data into data frame
如果我现在绘制数据,我会获得一系列列,其中第一列(称为V1)是X轴,而所有其他列(V2到V140)是我想要放在同一图表上的痕迹。
为了绘制数据,我尝试了不同的解决方案:
ggplot(data=DF, aes(x=DF$V1, y=DF[V2:V140]))+geom_line()+theme_bw() #did not work
plot(DF, xy.coords(x=DF$V1, y=DF$V2:V140)) #gives me an error
plot(DF, xy.coords(x=V1, y=c(V2:V10))) #gives me an error
我按照EZH指南尝试了matplot
,但没有成功:
我使用的代码如下:matplot(x=DF$V1, type="l", lty = 2:100)
我找到的唯一解决方案是为每个单独的列单独绘制命令,但这是一个疯狂的解决方案。列数因我的数据而异,手动输入140列的命令是疯了。
你会建议什么?
提前谢谢。
此处还附有一些数据。Data: single X, multiple Y
答案 0 :(得分:1)
我尝试使用matplot()。我使用了一个没有趋势的非常样本数据。所以我的代码输出看起来很糟糕,但我主要关注的是代码。既然你已经尝试了matplot(),那么只要你做得对,就重新检查下面的解决方案吧!
set.seed(100)
df = matrix(sample(1:685765,50000,replace = T),ncol = 100)
colnames(df)=c("x",paste0("y", 1:99))
dt=as.data.frame(df)
matplot(dt[["x"]], y = dt[,c(paste0("y",1:99))], type = "l")
答案 1 :(得分:0)
如果你想在基础R
中进行绘图,你必须制作一个图并一次添加一行,但这并不难。
我们首先制作一些样本数据。由于链接中的数据似乎都在相同的比例上,我假设您的数据框只有y
个值,而x值是分开存储的。
plotData <- as.data.frame(matrix(sort(rnorm(500)),ncol = 5))
xval <- sort(sample(200, 100))
现在我们可以用第一列初始化一个图。
plot(xval, plotData[[1]], type = "l",
ylim = c(min(plotData), max(plotData)))
type = "l"
制作线条图而不是散点图ylim = c(min(plotData), max(plotData))
确保y轴适合所有数据。现在我们可以添加其余的值。
apply(plotData[-1], 2, lines, x = xval)
plotData[-1]
删除我们已经绘制的列apply
函数2
作为第二个参数意味着我们想要在每一列上执行一个函数,lines
定义了我们apply
列的功能。 lines
在当前情节中添加了一个新行。x = xval
将额外参数(x
)传递给lines
函数。答案 2 :(得分:0)
如果您使用ggplot2绘制数据,则应将数据转换为长格式;
library(ggplot2)
library(reshape2)
dat <- read.delim('AP.txt', header = F)
# plotting only first 9 traces
# my rstudio will crach if I plot the full data;
df <- melt(dat[1:10], id.vars = 'V1')
ggplot(df, aes(x = V1, y = value, color = variable)) + geom_line()
# if you want all traces to be in same colour, you can use
ggplot(df, aes(x = V1, y = value, group = variable)) + geom_line()