【问题标题】:How do I make a scatterplot of two columns in R when如何在R中制作两列的散点图
【发布时间】:2021-02-15 14:54:39
【问题描述】:

我正在尝试制作两列(V13 和 V21)的散点图。我想要 x 轴上的行号和 y 轴上的每一列 - 在同一个图中。所以每一列都有自己的一组 y 值。我希望行号位于 x 轴上。然而,当我去绘制这个时,我得到了这个:

xy.coords(x, y, xlabel, ylabel, log) 中的错误:“x”和“y” 长度不同

我正在使用的数据框称为“Vs.highvar”。数据有 1000 个 obs 的 2 个变量,我希望 x 轴是行数(1000),所以我想这就是问题所在。我该怎么做呢?我是否必须将数据拆分为两个单独的列/两个单独的数据框?我对 R 很陌生。我试过 split()separate()plot()ggplot2.scatterplot()scatterplot()

到目前为止的代码:

Vs <- read.csv(file="x.csv", 
               header=TRUE,
               fill=TRUE)

#find variables with largest variance 
head(Vs)
variances <- apply(X=Vs, MARGIN=2, FUN=var)
sortedvars <- sort(variances, 
                   decreasing=TRUE, 
                   index.return=TRUE)$ix[1:2]

Vs.highvar <- Vs[, sortedvars]
Vs.highvar #returns variables V13 and V21

#create scatterplot
plot(nrow(Vs.highvar), Vs.highvar$V13, 
     main="Variances")

【问题讨论】:

  • 我认为问题在于您的“nrow(Vs.highvar)”会产生一个数字,而“Vs.highvar$V13”会产生 1000 个不同的数字。这是您可能想要的示例:df1&lt;-data.frame(y = rnorm(1000)) plot(x = 1:length(df1$y),df1$y)

标签: r plot scatter-plot


【解决方案1】:

我不确定您希望情节如何。不过,您总是需要相似数量的 x 和 y 值。 nrow(Vs.highvar) 是一个数字。

如果 x 轴应该是一个运行数字(一个计数器),那么您需要一个序列,您可以使用 1:nrow(Vs.highvar) 获得该序列:尝试 plot(1:nrow(Vs.highvar), Vs.highvar$V13, main="Variances")

(否则,如果您想对多个 y 值使用相同的值,则需要复制总行数( nrow(Vs.highvar) )。您可以使用 rep() 函数执行此操作。 试试:plot(rep(nrow(Vs.highvar), nrow(Vs.highvar)), Vs.highvar$V13, main="Variances")

此外,还有带有参数addpoints() 函数。当设置为 TRUE 时,您可以将第二个数据系列(=表格的列)添加到现有绘图中。

plot(1:nrow(Vs.highvar), Vs.highvar$V13, main="Variances")
points(1:nrow(Vs.highvar), Vs.highvar$V21, add=T)

编辑:我重组了上面的文字。

【讨论】:

  • 这帮助我创建了情节本身,尽管我无法理解它。我用了基本上我想要的
  • 对不起,我搞砸了突出显示,我的想法有点快。下次我尽量记住它。
猜你喜欢
  • 2020-05-07
  • 1970-01-01
  • 1970-01-01
  • 2020-10-16
  • 1970-01-01
  • 2014-05-16
  • 1970-01-01
  • 1970-01-01
  • 2021-12-12
相关资源
最近更新 更多