-
Notifications
You must be signed in to change notification settings - Fork 20
Open
Description
Consider the following example:
library(tinyplot)
data("airquality")
airquality$Year <- 1973
airquality$DateChr <- paste0(airquality$Year, "-", airquality$Month)
airquality$Date <- as.Date(paste0(airquality$DateChr, "-01"), format = "%Y-%m-%d")Doing
plt(Temp ~ DateChr, data = airquality, type = "jitter")plt(Temp ~ Date, data = airquality, type = "jitter")does not work and gives Error in jitter(x, factor = factor, amount = amount) : 'x' must be numeric.
Maybe something like this could work:
data_jitter = function(factor, amount) {
fun = function(datapoints, ...) {
x = datapoints$x
y = datapoints$y
if (is.factor(x)) {
xlvls = levels(x)
xlabs = seq_along(xlvls)
names(xlabs) = xlvls
x = as.integer(x)
} else if (inherits(x, c("Date", "POSIXt"))) {
xfactor = factor(x, unique(x))
xlvls = levels(xfactor)
xlabs = seq_along(xlvls)
names(xlabs) = xlvls
x = as.integer(xfactor)
} else {
xlabs = NULL
}
if (is.factor(y)) {
ylvls = levels(y)
ylabs = seq_along(ylvls)
names(ylabs) = ylvls
y = as.integer(y)
} else {
ylabs = NULL
}
x = jitter(x, factor = factor, amount = amount)
y = jitter(y, factor = factor, amount = amount)
datapoints$x = x
datapoints$y = y
out = list(
datapoints = datapoints,
x = x,
y = y,
xlabs = xlabs,
ylabs = ylabs
)
return(out)
}
}plt(Temp ~ Date, data = airquality, type = type_jitter())zeileis
Metadata
Metadata
Assignees
Labels
No labels

