【问题标题】:Uniform plot points in R -- Research / HWR中的统一绘图点——研究/硬件
【发布时间】:2013-10-27 17:25:25
【问题描述】:

这是我正在为我的公共卫生硕士课程所做的研究

我正在绘制数据,一个标准的 x,y 类型的交易,除此之外,我正在绘制一条预测线。我得到了我认为最时髦的点/箱线图,x 轴是半填充的,我不明白为什么,因为我不调用箱线图函数。当我调用绘图函数时,我的理解是只有点会绘图。

我正在绘制的数据看起来像这样

TOTAL.LACE | DAYS.TO.FAILURE
9          | 15
16         | 7
...        | ...

TOTAL.LACE 的范围是 0 到 19,DAYS.TO.FAILURE 是 0 - 30

我的代码如下,可能是剧情之前的东西,但我不认为是:

# To control the type of symbol we use we will use psymbol, it takes
# value 1 and 2
psymbol <- unique(FAILURE + 1)

# Build a test frame that will predict values of the lace score due to
# a patient being in a state of failure
test <- survreg(Surv(time = DAYS.TO.FAILURE, event = FAILURE) ~ TOTAL.LACE,
                dist = "logistic")

pred <- predict(test, type="response") <-- produces numbers from about 14 to 23
summary(pred) 

ord <- order(TOTAL.LACE)
tl_ord <- TOTAL.LACE[ord]
pred_ord <- pred[ord]
plot(TOTAL.LACE, DAYS.TO.FAILURE, pch=unique(psymbol)) <-- Produces goofy graph
lines(tl_ord, pred_ord) <-- this produces the line not boxplots

这是生成的图片

不确定如何从这里开始,这是我在使用相同数据集at this link here 时遇到的另一个问题的一个分支,我不明白为什么要绘制箱线图,原因是我没有专门调用boxplot() 命令,所以我不知道为什么它们会与点图一起出现。当我发出以下命令时:plot(DAYS.TO.FAILURE, TOTAL.LACE) 我只能像我预期的那样在结果图上得到点,但是当我改变在xy 上绘制的顺序时,箱线图就会出现,这对我来说是出乎意料的.

这是一个示例数据的链接,希望能帮助重现@Dwin et all Some Sample Data所指出的问题

谢谢,

【问题讨论】:

  • " ...学校驱动器上的数据"?如果这是家庭作业,你应该坦率地说。
  • 是的,好与坏,我将更改标题和问题以反映
  • “时髦”,“x 轴看起来不正确”。您对轴和预测的期望究竟是什么?输入str(lace)。不要使用attach
  • 我现在看到您之前在之前的问题中使用过这个数据集。你应该链接到那个。
  • 你的代码太多了。多个绘图命令,没有数据。你如何期待答案?简化代码并提供一种方法来创建运行它所需的数据。

标签: r plot


【解决方案1】:

由于您没有reproducible example,因此很难提供适合您情况的答案。这里我生成了一些看起来有点相似的数据:

set.seed(4)
TOTAL.LACE      <- rep(1:19, each=1000)
zero.prob       <- rbinom(19000, size=1, prob=.01)
DAYS.TO.FAILURE <- rpois(19000, lambda=15)
DAYS.TO.FAILURE <- ifelse(zero.prob==1, DAYS.TO.FAILURE, 0)

这是情节:

首先,某些类别没有打印在 x 轴上的问题是因为它们不适合。当您有这么多类别时,要使它们都适合,您必须以较小的字体显示它们。执行此操作的代码是使用 cex.axis 并将值设置为 here 的更多信息):

boxplot(DAYS.TO.FAILURE~TOTAL.LACE, cex.axis=.8)

至于为什么你的情节是“愚蠢”或“时髦”的问题,这有点难以说清楚,因为这些术语相当模糊。我的猜测是,您需要更清楚地了解箱线图的工作原理,然后了解这些图告诉您有关数据分布的信息。在boxplot 中,框的中线是数据的第 50 个百分位,而框的底部和顶部是第 25 个和第 75 个百分位。通常,“晶须”将延伸到最远的数据点,即 最多 1.5 倍的四分位间距超出框的末端。在您的情况下,对于前 9 个TOTAL.LACEs,超过 75% 的数据是 0,因此没有盒子,因此不可能有胡须。超出晶须限制的所有内容都被绘制为一个单独的点。我不认为你的情节是“时髦的”(虽然我承认我不知道你的意思),我认为你的数据可能是“时髦的”,你的箱线图准确地代表了你的数据的分布根据构造箱线图的规则。

在未来(我的意思是礼貌地),如果您可以编写更明确指定的问题并包含可重复的示例,它将帮助您获得更有用和更快的答案。


更新:感谢您提供更多信息。我通过“时髦”收集您的意思是它是一个 boxplot,而不是典型的 scatterplot。要意识到plot() 是一个通用函数,它将根据你传递给它的内容调用不同的方法。如果你传递简单的连续数据,它会产生一个散点图,但是如果你传递连续数据和一个因子,那么它会产生一个箱线图,即使你没有明确地调用boxplot。考虑:

plot(TOTAL.LACE, DAYS.TO.FAILURE)

plot(as.factor(TOTAL.LACE), DAYS.TO.FAILURE)

显然,您已将DAYS.TO.FAILURE 转换为一个无意义的因子。大概这是通过上面的代码psymbol &lt;- unique(FAILURE + 1)pch=unique(psymbol) 参数中完成的。虽然我没有时间尝试这个,但我怀疑消除那行代码并使用pch=(FAILURE + 1) 将实现您的目标。

【讨论】:

  • 我将附上确切的信息,我是从我的 excel 文件中获取它们并将两列放在另一个文件中,我将添加到我的问题中,这样确切的信息就在那里,希望是问题所在将是可重现的
  • 我通过使用您的示例发现我的 TOTAL.LACE 实际上是因素,所以我使用了 plot(as.numeric(TOTAL.LACE), DAYS.TO.FAILURE)我认为它会的方式。再次感谢。
  • 很高兴为您提供帮助,@MCP_infiltrator。祝你的项目好运。
猜你喜欢
  • 1970-01-01
  • 2015-06-09
  • 1970-01-01
  • 1970-01-01
  • 2022-12-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多