如何使用metap包的albatros函数中的cols参数来改变某些数据点的颜色?

问题描述 投票:0回答:1

我想在 R Studio 中创建一个信天翁图,所以我下载了metap包(https://www.rdocumentation.org/packages/metap/versions/1.11)。

在描述和示例代码的帮助下,我能够用自己的数据绘制一个图,如下所示。我想要分析的研究使用了不同的方法,我想用不同的颜色显示它们。例如。方法 1 有红色数据点,方法 2 有蓝色,方法 3 有绿色。

我无法弄清楚如何使 cols 参数起作用,每次我输入 NULL 以外的内容时,代码要么不运行,要么收到错误消息。你们能帮帮我吗?

这是cols参数的说明:

pch 参数可以是单个值,也可以是相同值的向量 长度为 p。它可能包含任何合法的输入 图形库中的同名参数将被使用 对于绘制的点。 cols 参数的工作原理类似。

剧情:

enter image description here

我的代码:

albatros(Test_Albatross$p, Test_Albatross$n,
                  contours = list(type = "smd", contvals = c(0.25, 0.5, 0.8), ltys = 1:3),
                  axes = list(ylimit = c(1,100), xlimit = 0.0001,  lefttext = "Negative correlation",
                              righttext = "Positive correlation"),
                  plotpars = list(yscale = NULL, pchs = letters[unclass(Test_Albatross$Kennung)], cols = NULL),
main = "Test2")

我的数据集(Excel):

enter image description here

我已经尝试过:

cols = colors[unclass(Test_Albatross$Method)]
cols = "red"

rgb、十六进制、值、...

r plot
1个回答
0
投票

根据

albatros

的帮助页面
> help(albatros)

plotpars
包含

的列表
  • yscale
    y轴缩放,查看详情
  • pchs
    使用的符号
  • cols
    点的颜色

...
要传递到绘图的参数


这表示

plotpars
参数应仅包含 3 个绘图参数(yscale、pch 和 col),任何其他绘图参数将在
...
中指定。但是,
cols
并未传递给
plot

albatros(Test_Albatross$p, Test_Albatross$n,
         contours = list(type = "smd", contvals = c(0.25, 0.5, 0.8), ltys = 1:3),
         axes = list(ylimit = c(1,100), xlimit = 0.0001,  lefttext = "Negative correlation",
                     righttext = "Positive correlation"),
         plotpars = list(yscale = NULL, 
                         pchs = letters[Test_Albatross$Kennung], 
                         cols = rainbow(10)))

enter image description here


有趣的是,以下确实更改了标签的颜色。不幸的是,轴的颜色现在链接到

col
全局参数,如果指定了该参数,那么这将是轴的颜色。如果指定了向量,则颜色将是第一种颜色。一个技巧是将第一种颜色指定为黑色。但是,第一个标签(“a”)也必须是黑色的。

albatros(Test_Albatross$p, Test_Albatross$n,
         contours = list(type = "smd", contvals = c(0.25, 0.5, 0.8), ltys = 1:3),
         axes = list(ylimit = c(1,100), xlimit = 0.0001,  lefttext = "Negative correlation",
                     righttext = "Positive correlation"),
         plotpars = list(yscale = NULL, 
                         pchs = letters[Test_Albatross$Kennung]),
         col = c("black", rainbow(9)))

enter image description here


如果您不希望第一个标签是黑色的,那么还有另一种选择。但这是相当乏味的。再次运行命令,出现完整的彩虹颜色。

albatros(Test_Albatross$p, Test_Albatross$n,
         contours = list(type = "smd", contvals = c(0.25, 0.5, 0.8), ltys = 1:3),
         axes = list(ylimit = c(1,100), xlimit = 0.0001,  lefttext = "Negative correlation",
                     righttext = "Positive correlation"),
         plotpars = list(yscale = NULL, 
                         pchs = letters[Test_Albatross$Kennung]),
         col = rainbow(10))

您会得到彩色标签,甚至是第一个标签。但轴是红色的(彩虹的第一种颜色)。然后,我们只需复制构建轴的

albatros
代码,并在现有绘图上自行绘制它们。

xtrans <- function(p) {
  p2 <- ifelse(p > 0.5, 1 - p, p)
  res <- log(1/p2, base = 10)
  res <- ifelse(p > 0.5, -res, res)
  res
}

sigs <- c(0.050, 0.010, 0.001)
i <- 2
while (sigs[i] > 0.001) {
  sigs[i + 1] <- sigs[i]/10
  i <- i + 1
}

ylabs <- c(1, 2, 5)
maxn <- max(Test_Albatross$n)
i <- 3
while (ylabs[i] < maxn) {
  ylabs[i + 1] <- ylabs[i - 2] * 10
  i <- i + 1
}

axis(1, at = c(-xtrans(sigs), 0, xtrans(sigs)), labels = c(sigs, "null", sigs),
     cex.axis = 0.75, las = 3)
axis(2, at=sqrt(ylabs), labels = ylabs, cex.axis = 0.75, las = 2)

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.