当我在RI中运行以下代码时会得到一个奇怪的注释(它只在我第一次在会话中运行代码时出现):
> library(lubridate)
Attaching package: ‘lubridate’
The following object is masked from ‘package:base’:
date
Warning message:
package ‘lubridate’ was built under R version 3.3.2
> data.frame(i = interval(ymd(20140101), ymd(20160101)))$i %/% years(1)
Note: method with signature ‘Timespan#Timespan’ chosen for function ‘%/%’,
target signature ‘Interval#Period’.
"Interval#ANY", "ANY#Period" would also be valid
[1] 2
Run Code Online (Sandbox Code Playgroud)
我倍感困惑:
我希望实现以下结果:
我能做的最好的事情如下,但我需要一个更通用的解决方案,其中计算maxSize的值而不是硬编码.如果我在传统的R图中这样做,我会使用par("pin")来计算绘图区域的大小并向后工作,但我无法弄清楚如何使用ggplot2访问此信息.有什么建议?
library(ggplot2)
agData = data.frame(
class=rep(1:7,3),
drv = rep(1:3,rep(7,3)),
freq = as.numeric(xtabs(~class+drv,data = mpg))
)
agData = agData[agData$freq != 0,]
rng = range(agData$freq)
mn = rng[1]
mx = rng[2]
minimumArea = mx - mn
maxSize = 20
minSize = max(1,maxSize * sqrt(mn/mx))
qplot(class,drv,data = agData, size = freq) + theme_bw() +
scale_area(range = c(minSize,maxSize),
breaks = seq(mn,mx,minimumArea/4), limits = rng)
Run Code Online (Sandbox Code Playgroud)
这是迄今为止的样子:
