首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按R中的系数绘制“stripchart”时,使用“pch”的矢量化绘制参数

按R中的系数绘制“stripchart”时,使用“pch”的矢量化绘制参数
EN

Stack Overflow用户
提问于 2018-08-12 08:53:40
回答 2查看 120关注 0票数 0

我经常喜欢通过创建一个向量来指定绘图参数,比如pchcol,该向量的值对应于所有单个数据点的某个方面。然而,当数据按系数绘制时,这种策略似乎不起作用,因为plot参数将通过将向量的第一个值指定给第一组,将第二个值指定给第二组依此类推,而不是将第一个值指定给第一个点,等等。

下面是我希望能够做到的一个例子。例如,假设我想制作花瓣长度的条形图,按虹膜种类分组,但也指定具有特定花瓣长度的样本应该具有不同的绘图符号。

代码语言:javascript
复制
data("iris")

pch <- rep(16, length(iris$Petal.Length))
pch[which(iris$Petal.Length < 0.4 )] <- 17

stripchart(Petal.Length ~ Species, data = iris, 
       vertical = TRUE, method = "jitter", 
       pch = pch)
EN

回答 2

Stack Overflow用户

发布于 2018-08-12 09:36:52

简短的回答:

这不能用stripchart来实现。

为了按照您想要的方式使用pch,您需要“手工”绘制绘图。

更长的答案:

stripchart的源代码包含以下内容(其中...意味着我遗漏了一些代码):

代码语言:javascript
复制
n <- length(groups)
...
for (i in seq_len(n)) {
...
points(..., pch = pch[(i - 1L)%%length(pch) + 1L]

我们看到,根据ipch参数分配了一个标量值。因此,从本质上讲,它只允许pch用于按组指定绘图符号,而不能用于按您想要的方式逐点指定符号。

请注意,这是特定于stripchart的行为,并不是R中的所有绘图函数都必需的,因为在R中,绘图是按因子完成的。

顺便说一句:

在上面的代码中,您的条件永远不会为真:

代码语言:javascript
复制
which(iris$Petal.Length < 0.4)
integer(0)

因此,即使stripchart按您希望的方式允许pch,您的代码也不能很好地完成任务。您需要的是< 5或其他东西,而不是< 0.4

票数 1
EN

Stack Overflow用户

发布于 2018-08-12 12:56:50

您可以使用子集参数,正确的方法是

代码语言:javascript
复制
data("iris")
stripchart(Petal.Length ~ Species, data = iris, subset = Petal.Length > 1.4,
   vertical = TRUE, method = "jitter", ylim = c(1,7),
   pch = 16)
stripchart(Petal.Length ~ Species, data = iris, subset = Petal.Length < 1.4,
   vertical = TRUE, method = "jitter", add = TRUE,
   pch = 17)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51804892

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档