Несколько необъяснимо, параметр length
в arrows
указан в дюймах (от ?arrows
):
length
длина краев головки стрелки (в дюймах).
R-источник даже заходит так далеко, что явным образом отмечаю, что это измерение в дюймах в комментарии, подчеркивая, насколько свойственна эта конструкция.
Это означает, что относительный размер стрелок зависит от dev.size()
. Непонятно, как перевести дюймы в осевые единицы (которые в любом случае бесконечно более полезны). Вот упрощенная версия:
h = c(1, 2, 3)
xs = barplot(h, space = 0, ylim = c(0, 4))
arrows(xs, h - .5, xs, h + .5,
length = .5*mean(diff(xs)))
Как это отобразится, будет зависеть от устройства. Например. вот вывод на этом устройстве:
png('test.png', width = 5, height = 5)
И здесь он находится на другом:
png('test.png', width = 8, height = 8)
Это немного оптическая иллюзия, чтобы рассказать в поле зрения, но стрелки действительно имеют одинаковую ширину на двух графиках. Как я могу контролировать это так, чтобы обе графики (которые отображали одни и те же данные) отображались одинаково? Более конкретно, как я могу убедиться, что стрелки в точности равны .5 единицы измерения по ширине?