4

我对使用以下数据创建点图有疑问:

    Patient ID Day Dosage of Drug (mg)
     1552        1     .3
     1552        7     .8
     1552       14    1.2
     1663        1     .2
     1663        7     .7
     1663       18    1.4

我可以创建点图,其中 x 轴为“天”,y 轴为每个患者,这样对于患者 ID 1552,在第 1、7 和 14 天有三个点。没有问题。但现在我想让点的大小与当天服用的剂量成正比,这样第 14 天的点就会大于同一患者 ID 行上的 7 和 1。有什么办法可以做到这一点吗?

我知道该dotchart()函数有一个可修改cex的元素,可以改变 y 轴字体/点的大小,但它是一致的。有没有办法分别绘制每个点并且每次根据剂量数据使点大小不同?

4

2 回答 2

1

我会使用 ggplot2 创建这样的图表:

ggplot(aes(x = day, y = patient, size = dosage), data = df) + 
      geom_point()

我假设带有数据的 data.frame 被称为df,并且它包含名为 day、patient 和 dose 的列。

于 2012-06-13T14:05:51.157 回答
1

如果你使用这个ggplot2包,你可以这样做:

dat <- read.table(textConnection("ID Day Dose
     1552        1     .3
     1552        7     .8
     1552       14    1.2
     1663        1     .2
     1663        7     .7
     1663       18    1.4"), header=TRUE)    

require(ggplot2)
p <- ggplot(dat, aes(factor(Day), factor(ID)))
p + geom_dotplot(binaxis = "y", stackdir = "center", binpositions="all") + 
 geom_point(aes(size=Dose))

在此处输入图像描述

于 2012-06-13T14:06:57.863 回答