gpt4 book ai didi

为系列绘制的 R plotCI 错误分配的颜色

转载 作者:行者123 更新时间:2023-12-04 03:36:40 24 4
gpt4 key购买 nike

在 Windows 7 上的 R v2.14.0 x64 中,我使用 gplots 库中的 plotCI 函数,并尝试使用以下方法根据数据框中的数据设置每个图的颜色:

plotCI(
x = data[1:2,3],
ui = data[1:2,5],
li = data[1:2,4],
col=data[1:2,6],
lty = 1, pch=20, xaxt ="n", xlim = c(1,42), ylim = c(0,100),
gap = 0 )

除了绘制点的颜色外,该图正确出现,这些点被错误地分配给了错误的系列(但是,系列内的颜色是一致的)。

我有一个结构数据框(仅前 7 行):
     size qim       X1   lower    upper color
1 1000 1 100.0000 99.6000 100.0000 blue
2 1000 2 99.8000 99.4000 100.0000 blue
3 1000 3 98.2000 96.6000 99.2000 blue
4 1000 4 62.7000 58.8000 65.7000 blue
5 1000 5 10.4000 9.0000 12.5000 blue
6 1000 6 3.9000 2.9000 4.9000 blue
7 5000 1 99.9000 99.4000 100.0000 red

我使用以下方法对数据框进行排序:
data <- data.unsorted[with(data,order(qim,size)),]

排序似乎正确发生,结果数据框:
 size qim       X1   lower    upper color
1 1000 1 100.0000 99.6000 100.0000 blue
7 5000 1 99.9000 99.4000 100.0000 red
13 10000 1 99.7000 99.4000 99.9000 green
19 40909 1 98.5000 98.5000 98.5000 black
25 152228 1 98.1000 98.1000 98.1000 black
31 241707 1 98.9000 98.9000 98.9000 black
37 434844 1 97.4000 97.4000 97.4000 black

在结果图中,第一条线绘制为红色,第二条线绘制为蓝色(反转)。

是我做错了什么,还是对此有其他解释?

最佳答案

这里有一个因素/字符混淆。 color变量作为因子被读入 R,因此其基础数值根据值的字母顺序分配:“black”=1,“blue”=2,(可能)“green”=3,“red” =4。然后根据 R 的默认调色板映射颜色:1=黑色,2=红色,3=绿色,4=蓝色。这导致了(诚然看似奇怪的)对应关系:“黑色”=黑色,“蓝色”=红色,“绿色”=绿色,“红色”=蓝色(!!)。修复实际上非常简单:只需使用 as.character您身边的color多变的。

data.unsorted <- read.table(textConnection(
" size qim X1 lower upper color
1 1000 1 100.0000 99.6000 100.0000 blue
2 1000 2 99.8000 99.4000 100.0000 blue
3 1000 3 98.2000 96.6000 99.2000 blue
4 1000 4 62.7000 58.8000 65.7000 blue
5 1000 5 10.4000 9.0000 12.5000 blue
6 1000 6 3.9000 2.9000 4.9000 blue
7 5000 1 99.9000 99.4000 100.0000 red"),
header=TRUE)


library(gplots)
data <- data.unsorted[with(data,order(qim,size)),]

我还要指出一个 with语句使阅读代码变得更加容易,并确保您获得正确的列:
with(data[1:2,],
plotCI(x=X1,li=lower,ui=upper,
col=as.character(color),
lty=1,pch=20,
xaxt="n",
xlim=c(1,42),ylim=c(0,100),
gap=0))

关于为系列绘制的 R plotCI 错误分配的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8302662/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com