0

我有一个小的本地数据集(5 个观察值),有两种类型:a 和 b。每个观察都有一个日期字段 (p.start)、一个比率和一个持续时间。

local

  principal    p.start duration allocated.days    ratio
1         P 2015-03-18        1       162.0000 162.0000
2         V 2015-08-28        4        24.0000   6.0000
3         V 2015-09-03        1        89.0000  89.0000
4         V 2015-03-30        1        32.0000  32.0000
5         P 2015-01-29        1       150.1667 150.1667

str(local)

'data.frame':   5 obs. of  5 variables:
 $ principal     : chr  "P" "V" "V" "V" ...
 $ p.start       : Date, format: "2015-03-18" "2015-08-28" "2015-09-03" "2015-03-30" ...
 $ duration      : Factor w/ 10 levels "1","2","3","4",..: 1 4 1 1 1
 $ allocated.days: num  162 24 89 32 150
 $ ratio         : num  162 6 89 32 150

我有另一个数据框 stats,其中包含要添加到多面图中的文本。

stats

  principal         xx    yy            zz
1         P 2015-02-28 145.8 Average = 156
2         V 2015-02-28 145.8  Average = 24

str(stats)

'data.frame':   2 obs. of  4 variables:
 $ principal: chr  "P" "V"
 $ xx       : Date, format: "2015-02-28" "2015-02-28"
 $ yy       : num  146 146
 $ zz       : chr  "Average = 156" "Average = 24"

以下代码失败:

p     = ggplot (local, aes (x = p.start, y = ratio, size = duration))
p     = p + geom_point (colour = "blue"); p
p     = p + facet_wrap (~ principal, nrow = 2); p
p     = p + geom_text(aes(x=xx, y=yy, label=zz), data= stats)
p
Error: Continuous value supplied to discrete scale

有任何想法吗?我错过了一些明显的东西。

4

2 回答 2

1

只需从中删除size = duration并将ggplot (local, aes (x = p.start, y = ratio, size = duration))其添加到geom_point (colour = "blue"). 然后,它应该工作。

ggplot(local, aes(x=p.start, y=ratio))+
geom_point(colour="blue", aes(size=duration))+
facet_wrap(~principal, nrow=2)+
geom_text(aes(x=xx, y=yy, label=zz), data=stats)

在此处输入图像描述

于 2016-05-04T20:23:52.230 回答
1

问题是您从 2 个 data.frames 进行绘图,但您的初始ggplot调用包含aes仅引用localdata.frame 的参数。

因此,尽管您geom_text指定data=stats了,但它仍在寻找size=duration

以下行对我有用:

ggplot(local) +
  geom_point(aes(x=p.start, y=ratio, size=duration), colour="blue") +
  facet_wrap(~ principal, nrow=2) +
  geom_text(data=stats, aes(x=xx, y=yy, label=zz))
于 2016-05-04T20:03:11.263 回答