Определение меток оси X с помощью параметра labels
решает вашу проблему.
Вы можете использовать следующий код:
require(lattice)
lattice::dotplot(Patient ~ Value | Year,
data = data_conrad, xlab = "Time", ylab = "Patient" ,
scales= list(x = list(at = seq(from = 1, to = 12, by =1),
labels = c("Jan", "Feb", "Mar", "Apr", "May", "Jun",
"Jul", "Aug", "Sep", "Oct", "Nov", "Dec"))))
Получив следующий график:
Когда мы внимательно рассмотрим график, становится очевидным, что Декабрь отсутствует, и хотя этот месяц может отсутствовать в данных, вы все равно хотите, чтобы он появился на графике. Корень проблемы будет в данных, поэтому давайте посмотрим:
str(data_conrad)
List of 5
$ Patient: Factor w/ 10 levels " 1"," 2"," 3",..: 1 2 3 4 5 6 7 8 9 10 ...
$ Month : Factor w/ 11 levels "Apr","Aug","Dec",..: 5 4 6 8 1 3 2 2 4 10 ...
$ Year : Factor w/ 3 levels "2010","2011",..: 1 2 3 1 3 2 1 1 3 2 ...
$ Value : Factor w/ 11 levels " 1"," 2"," 3",..: 1 2 7 3 4 11 8 8 2 10 ...
Мы видим, что все переменные factors
, где Месяц и Год должны быть ordered factors
. Месяц должен включать все двенадцать месяцев. Значение должно быть integer
. Давайте исправим это:
data_conrad2 <- data_conrad
data_conrad2$Month <- factor(data_conrad$Month,
levels = c("Jan", "Feb", "Mar", "Apr", "May", "Jun",
"Jul", "Aug", "Sep", "Oct", "Nov", "Dec"),
ordered = TRUE)
data_conrad2$Month <- factor(data_conrad$Year,
levels = ("2010", "2011", "2012"),
ordered = TRUE)
data_conrad2$Value <- as.integer(as.character(data_conrad$Value))
Теперь мы снова выполняем код с новым фреймом данных data_conrad2 :
lattice::dotplot(Patient ~ Value | Year,
data = data_conrad2, xlab = "Time", ylab = "Patient" ,
scales = list(x = list(at = 1:12,
labels = c("Jan", "Feb", "Mar", "Apr", "May", "Jun",
"Jul", "Aug", "Sep", "Oct", "Nov", "Dec"))))
Добавление параметра вращения rot
может улучшить читаемость графика:
lattice::dotplot(Patient ~ Value | Year,
data = data_conrad2, xlab = "Time", ylab = "Patient" ,
scales= list(x = list(at = 1:12,
labels = c("Jan", "Feb", "Mar", "Apr", "May", "Jun",
"Jul", "Aug", "Sep", "Oct", "Nov", "Dec"),
rot = 45))
)
получая этот график:
Будьте осторожны, однако
аргументы и их положение в формуле для точечного графика определяют, что изображено на какой оси
с вашим вызовом в вышеприведенных примерах, пациент находится на оси у, а значение на оси х (годы в разных гранях). Независимо от того, как вы переименуете метки, и как бы ни были изобретательны вы называете галочки на оси x, это то, что вы получите.
Чтобы сделать это немного понятнее, следующий код:
dotplot(Patient ~ Value | Year,
data = data_conrad2, xlab = "Value", ylab = "Patient" ,
scales= list(x = list(at = 1:12))
)
дает этот участок
И, возможно, мы привыкли видеть значение на оси Y:
dotplot(Value ~ Patient | Year,
data = data_conrad2, xlab = "Patient", ylab = "Value" ,
scales= list(x = list(at = 1:12))
)
дает этот участок
Надеюсь, это немного прояснило для вас.