R 第一次执行代码时颜色不正确
我有一个在一页上绘制多个堆叠条形图的代码。我指定了一个调色板,这样每个数据组都与每个图表中的相同颜色相关联。我发现第一张图表中的颜色不正确,但在随后的所有图表中都是正确的。如果我在同一个R会话中重新运行代码,所有图表的颜色都正确。但是,如果退出R并运行代码,第一个图表的颜色也会错误 我的代码相当复杂,所以我把简单的例子放在一起,说明了这个问题。同样,在启动新的R会话后第一次运行代码时,颜色不正确。如果代码在同一R会话中重新运行,则它们是正确的R 第一次执行代码时颜色不正确,r,colors,R,Colors,我有一个在一页上绘制多个堆叠条形图的代码。我指定了一个调色板,这样每个数据组都与每个图表中的相同颜色相关联。我发现第一张图表中的颜色不正确,但在随后的所有图表中都是正确的。如果我在同一个R会话中重新运行代码,所有图表的颜色都正确。但是,如果退出R并运行代码,第一个图表的颜色也会错误 我的代码相当复杂,所以我把简单的例子放在一起,说明了这个问题。同样,在启动新的R会话后第一次运行代码时,颜色不正确。如果代码在同一R会话中重新运行,则它们是正确的 # Data vector for bar plot
# Data vector for bar plot,
#
dvec <- c( 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
1.73, 0, 0, 0, 0, 0,
4.81, 0, 0, 0.03, 0.03, 0,
2.77, 0, 0, 0.42, 1.04, 0,
2.84, 0.02, 0, 2.25, 4.21, 0.02,
1.32, 0.54, 0.01, 3.44, 10.49, 0.01,
0.13, 1.63, 0.02, 4.42, 17.70, 0.03,
0.08, 2.49, 0.03, 8.64, 31.07, 0.02,
0, 3.08, 0.05, 9.04, 50.22, 0.01)
# matrix to pass to barplot, 12 columns, 6 rows
smat <- matrix(dvec,nrow=6)
# use this color palette and plot the barchart
zoopal <- palette(c("magenta","red","darkred","yellow","cyan","blue"))
barplot(smat,space=0,col=zoopal,axes=FALSE,axisnames=FALSE,
xaxs="i",yaxs="i",ann=FALSE)
条形图的数据向量,
#
dvec我可以在当前版本的R和MacOS上复制。这似乎与对
调色板的(不必要的)调用有关。省略那个电话可以解决问题。请注意,这实际上是?调色板
的预期结果,它说:“一个字符向量给出了有效的调色板。”
在我看来,这确实是调色板
的一种相当不实用的行为。它显然是被设计成一个系统副作用,而不是返回一个当前有用的值,并且返回的值应该存储为“oldpal”或类似的值。正如帮助页面上所讨论的,调色板的使用应该是更改(后续)数字到颜色的映射,而不是设置,而不是返回颜色列表。您根本不需要使用调色板()barplot
不使用它,您只需指定颜色向量即可。安威,关于解释:
像这样使用时,通过palete()
总是会有延迟。存储x谢谢!我显然误解了如何使用调色板,并认为它类似于我使用过的其他语言中的颜色处理例程。如果我理解正确,我可以在条形图调用中指定“col=c(“color1”、“color2”、“color3”、“color4”)。这当然值得知道(我对R比较陌生)。@Fleetboat-yep,只要做zoocol谢谢。我在调色板文档中遗漏了这一点。
oldcols <- c("red","green")
newcols <- c("yellow","blue")
palette(oldcols)
palette()
#[1] "red" "green"
runone <- palette(newcols)
runone
#[1] "red" "green"
palette()
#[1] "yellow" "blue"
runtwo <- palette(oldcols)
runtwo
#[1] "yellow" "blue"
palette()
#[1] "red" "green"