Один из способов сделать это - не использовать систему графического изображения непосредственно, а использовать интерфейс lattice
. Насколько мне известно, пакет lattice
поставляется с R и образует очень гибкий интерфейс с базовыми графами Trellis
, которые являются графами на основе сетки. Lattice
также позволяет вам напрямую управлять сеткой, так что на самом деле для самых сложных графиков это все, что вам нужно.
Если вы действительно собираетесь работать с самой системой построения графиков, вы должны использовать правильную систему координат, чтобы она была масштабируемой. Либо "native", "npc" (нормализованные родительские координаты) или "snpc" (квадратные нормализованные родительские координаты) позволяют изменять масштаб фигуры, поскольку они дают координаты относительно размера (или одного его аспекта) текущего видового экрана. .
Чтобы в полной мере использовать их, убедитесь, что вы очень хорошо понимаете концепцию видовых экранов. Я должен признать, что мне еще многое предстоит узнать об этом. Если вы действительно хотите покончить с этим, я могу предложить книгу R Graphics от Пола Муррелла
Присмотритесь к главе 5 этой книги. Вы также можете многое узнать из кода примеров R, который также можно найти на этой странице
Чтобы дать вам один:
grid.circle(x=seq(0.1, 0.9, length=100),
y=0.5 + 0.4*sin(seq(0, 2*pi, length=100)),
r=abs(0.1*cos(seq(0, 2*pi, length=100))))
Прекрасно масштабируется. Если вы посмотрите на страницы справки grid.circle
, вы найдете опцию default.units="npc"
. Вот где в этом случае установлена правильная система координат. Сравните с
grid.circle(x=seq(0.1, 0.9, length=100),
y=0.5 + 0.4*sin(seq(0, 2*pi, length=100)),
r=abs(0.1*cos(seq(0, 2*pi, length=100))),
default.units="inch")
, который не масштабируется.