R - Research / HW中的统一绘图点

时间:2013-10-18 18:45:16

标签: r plot

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

我正在互相绘制数据,这是一个标准的x,y类型的交易,我正在绘制预测线。我得到了我认为看起来最时髦的点/ boxplot看起来的东西,x轴是半填充的,我不明白为什么我不调用boxplot函数。当我调用绘图函数时,我的理解是只绘制点。

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

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

这是结果图 Goofy looking plot in R

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

这是一个示例数据的链接,有望帮助重现问题,正如@Dwin et all Some Sample Data

所指出的那样

谢谢,

1 个答案:

答案 0 :(得分:2)

由于您没有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)

这是情节:

enter image description here

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

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

enter image description here

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

将来(我的意思是这个礼貌),如果你能写出更明确指出的问题,并且包含一个可重复的例子,它将帮助你获得更多有用和更快的答案。


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

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

enter image description here

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

enter image description here

显然,您已将DAYS.TO.FAILURE转换为无意义的因素。据推测,这是通过上面的代码pch=unique(psymbol)psymbol <- unique(FAILURE + 1)参数中完成的。虽然我没有时间尝试这个,但我怀疑要删除那行代码并使用pch=(FAILURE + 1)来实现你的目标。