【问题标题】:How can I make a scatterplot with four colours/symbols for points according to group如何根据组为点制作具有四种颜色/符号的散点图
【发布时间】:2021-06-06 16:57:10
【问题描述】:

我正在使用轴上的两个定量变量制作散点图,并且我想根据名为 group 的第三个分类变量来区分绘图点,该变量有四个选项。 (B、I、IB 或 BI)

plot(x,y,ylab="Accuracy",xlab="Category Learning Judgement (%)",ylim=c(0,45),xlim=c(0,90), col=group)

当我使用此代码时,我收到错误消息: plot.xy(xy, type, ...) 中的错误:颜色名称“B”无效

是否有不同的方法来通过变量分配形状/颜色? 我知道 col=ifelse 但这似乎只创建了两个组。 从我尝试过的col=c("blue","purple","red","yellow") 将它们分成四种颜色,但随机而不是根据我需要的组。

我正在使用没有 ggplot 的 R studio。

【问题讨论】:

  • 如果您包含一个简单的reproducible example,其中包含可用于测试和验证可能解决方案的示例输入和所需输出,则更容易为您提供帮助。也许这已经有所帮助:stackoverflow.com/questions/7721262/…。也许添加col=factor(group)。在基础 R 中,按组着色更加“混乱”,这是人们倾向于使用 ggplot2 的主要原因之一。

标签: r plot


【解决方案1】:

问题在于您的组的名称不是颜色名称,并且使用col= 参数告诉plot 依次获取每种颜色,并根据需要重复,因此第一种颜色是第一种观察,第二种颜色是第二个观察。您需要将您的颜色链接到您的组。最简单的方法是使用factor 来索引类别。首先我们需要一些数据:

set.seed(42)
x <- runif(40)
y <- runif(40)
group <- sample(c("B", "I", "IB", "BI"), 40, replace=TRUE)

现在创建因子并使用它来指示每个组使用哪种颜色:

group <- factor(group, c("B", "I", "IB", "BI"))
clr=c("blue","purple","red","yellow")
idx <- as.numeric(group)
plot(x, y, col=clr[idx], pch=16, cex=2)

由于数据是随机的,所以组没有分开。

【讨论】:

  • 非常感谢您的回答!我对 R 很陌生,所以我不完全理解这里发生了什么。我输入了你写的内容,它出现了一个错误:plot.xy(xy, type, ...) 中的错误:找不到对象'clr'。我想知道我是否应该不准确地写出您输入的内容,而是根据我的数据集对其进行编辑?如果是这样,你能指出来吗?或者如果你知道我做错了什么......非常感谢
  • 抱歉,我遗漏了一行代码。我已经添加了clr=c("blue","purple","red","yellow")
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-07-03
  • 2021-07-20
  • 2019-11-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多