Я заметил неожиданное поведение ggplot2
в geom_text()
geom. Если атрибуты hjust
и vjust
указаны как строки, R возвращает ошибки приведения, хотя графики кажутся нормальными. Проблема возникла в разрабатываемом мной пакете на основе ggplot2. Для простоты я создал урезанные примеры, которые все еще вызывают ошибку.
Сначала попробовал с qplot()
##qplot version
library(ggplot2)
p <- qplot(cty, hwy,
label = drv,
hjust = "right",
geom = "text",
data = mpg
)
print(p)
И я получил такую ошибку:
Warning message:
In validDetails.text(x) : NAs introduced by coercion
Потом попробовал с ggplot()
:
##ggplot version
library(ggplot2)
p <- ggplot(
aes(x = cty,
y = hwy
), data = mpg
)
p <- p + geom_text(
aes(label = drv),
hjust = "right"
)
print(p)
и получил идентичный сюжет и идентичную ошибку:
Warning message:
In validDetails.text(x) : NAs introduced by coercion
Затем я попытался установить как hjust, так и vjust:
library(ggplot2)
p <- ggplot(
aes(x = cty,
y = hwy
), data = mpg
)
p <- p + geom_text(
aes(label = drv),
hjust = "right",
vjust = "top"
)
print(p)
Если оба параметра заданы с использованием строк, R возвращает две ошибки приведения:
Warning messages:
1: In validDetails.text(x) : NAs introduced by coercion
2: In validDetails.text(x) : NAs introduced by coercion
Но, когда параметры являются числами, R не возвращает ошибок приведения:
## Using numbers instead of strings
library(ggplot2)
p <- ggplot(
aes(x = cty,
y = hwy
), data = mpg
)
p <- p + geom_text(
aes(label = drv),
hjust = 0,
vjust = 0,
data = mpg
)
print(p)
Я не совсем уверен, почему это происходит и имеет ли это значение, но я этого не ожидал.
Документы ggplot2 не согласны
/ a> (стр. 196) говорит, что hjust
и vjust
могут принимать строковые аргументы:
Обоснование строки (или легенды) определяет положение внутри строки, которое помещается в данную позицию. Есть два значения для горизонтального и вертикального выравнивания. Значения могут быть:
- Строка: «слева», «справа», «по центру», «по центру», «снизу» и «сверху».
- Число от 0 до 1, указывающее позицию в строке (от нижнего левого угла).
Но файл man для geom_text()
в версии 0.8.9 говорит, что hjust и vjust являются числовыми, хотя не говорит, что они могут быть только числовыми:
Эстетика
Следующая эстетика может использоваться с geom_text. Эстетика сопоставляется с переменными в данных с помощью функции aes: geom_text (aes (x = var))
- x: x позиция (обязательно)
- y: y позиция (обязательно)
- label: текстовая метка (обязательно)
- цвет: цвет границы
- размер: размер
- угол: угол
- hjust: горизонтальное выравнивание, от 0 до 1
- vjust: выравнивание по вертикали, от 0 до 1
- альфа: прозрачность