Создавайте изменяемые размеры графиков, используя систему построения графиков в R - PullRequest
2 голосов
/ 11 февраля 2011

Недавно я читал о системе построения графиков в R. Она очень гибкая, и с ее мастерством можно создавать очень сложные графики.Однако я не нашел ни одного хорошего места, которое позволило бы мне построить график, который также можно изменять.Вопрос заключается в следующем: как вы используете grid графическую систему в R, чтобы конечный результат был фактически изменяемого размера?

1 Ответ

4 голосов
/ 11 февраля 2011

Один из способов сделать это - не использовать систему графического изображения непосредственно, а использовать интерфейс 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")

, который не масштабируется.

...