Контроль относительного размера точек на графиках ggplot2 - PullRequest
4 голосов
/ 06 октября 2010

Мне нужно нарисовать много разных плиточных графиков с квадратами и точками поверх плиток в соответствии с данные. К сожалению, я не могу включить иллюстрацию, но в основном сюжет состоит из плиток, на которых есть квадраты и точки или нет.

Каждая из этих фигур имеет разное количество плиток в направлении х и у. В результате я не могу использовать абсолютные единицы измерения (мм) для масштабирования размеров точек и размеров блоков. Есть ли способ указать размер точки в относительном выражении. Например, как geom_point(aes(x=x, y=y), size = 0.5 * tile_size()).

Следующий глючный фрагмент кода

df <- data.frame(x=factor(c(1:4), labels=c("a", "b", "c", "d")), y=factor(c(1:4), labels=c("f", "g", "h", "j")))
p <- ggplot(data = df) + geom_tile(aes(x=x, y=y), fill="green", color="black")
p <- p + opts(aspect.ratio=2)
p <- p + geom_point(aes(x=x, y=y), color="red", size = 4, shape=15, color="red")
p <- p + geom_point(aes(x=x, y=y), color="blue", size = 2)
p <- p + scale_x_discrete("Variables") + scale_y_discrete("Time")
show(p)

почти достигает желаемой функциональности, за исключением случаев, когда я изменяю размеры графического окна или размеров PDF, относительный размер точек и блоков по отношению к размерам плиток изменяется. В частности, точки и прямоугольники могут быть больше, чем плитка, на которой они нарисованы, что является абсолютным нет-нет.

Если относительное масштабирование размера точки невозможно, то я хотел бы знать, возможно ли указать размеры области графика (график без меток осей, отметок и т. Д.), Используя ggsave() или pdf(). Тогда я мог бы сделать относительное масштабирование самостоятельно.

1 Ответ

2 голосов
/ 06 октября 2010

Я думаю, вы хотите указать размеры в единицах данных, а не в физических единицах.Это немного сложно для кругов и квадратов, потому что они могут быть овалами и прямоугольниками в пространстве данных (если вы не используете coord_equal).Но если вы хотите сделать это, вы можете сами сгенерировать глифы и использовать geom_polygon для их рисования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...