Это на самом деле не проблема обрезки, а проблема масштабирования.Область, изображенная на обоих графиках, составляет (0,200) х (0,200).Однако в обоих случаях так много общего, что определенные круги, которые вы можете видеть, являются просто последними, которые наносятся на график.Очевидно, что концентрические синие и зеленые круги вокруг (190, 60) - это самая простая общая черта, которую можно определить на двух графиках.Но давайте рассмотрим еще немного:
- Темно-зеленый кружок в (70, 180)
- Светло-зеленый кружок в (47, 2)
- Голубой кружок в (110, 140)
- Синий круг в (190, 160)
Похоже, что здесь происходит то, что вы взяли заговор и заставили его попасть в область менее 1/ 9 размер исходной области, но вы не изменили фактические элементы графика по-другому.Вам нужно либо увеличить размер PDF-файла, либо уменьшить размер кружков, чтобы сделать его читаемым.Вот короткий воспроизводимый пример.В будущем (особенно если вопрос достаточно важен для щедрости), приведение воспроизводимого примера (например, использование dput
, как прокомментировал Parfait) помогает в тонне.
dat <- data.frame(x = runif(9*100)*200,
y = runif(9*100)*200,
size = rpois(9*100, 5)+1,
col = rbinom(9*100, 1, .1),
group = rep(1:9, 100))
set.seed(1011)
make_plot <- function(d, t, adjust = 1) {
plot(NA, xlim=c(0,200),ylim=c(0,200), xlab = NA, ylab = NA, main = paste("Time",t))
sub_d <- dat[dat$group == t,]
points(x = sub_d$x[sub_d$col == 0], y = sub_d$y[sub_d$col == 0],
cex = sub_d$size[sub_d$col == 0]/adjust, pch = 16, col = rgb(0,1,0,.25))
points(x = sub_d$x[sub_d$col == 0], y = sub_d$y[sub_d$col == 0],
cex = sub_d$size[sub_d$col == 0]/adjust, pch = 21, col = rgb(0,1,0,.5), lwd = 2)
points(x = sub_d$x[sub_d$col == 1], y = sub_d$y[sub_d$col == 1],
cex = sub_d$size[sub_d$col == 1]/adjust, pch = 16, col = rgb(0,0,1,.25))
points(x = sub_d$x[sub_d$col == 1], y = sub_d$y[sub_d$col == 1],
cex = sub_d$size[sub_d$col == 1]/adjust, pch = 21, col = rgb(0,0,1,.5), lwd = 2)
}
## Big plot
t = 1
plot(-50, -50, xlim=c(0,200),ylim=c(0,200), xlab = NA, ylab = NA, main = paste("Time",t))
sub_d <- dat[dat$group == t,]
points(x = sub_d$x[sub_d$col == 0], y = sub_d$y[sub_d$col == 0],
cex = sub_d$size[sub_d$col == 0], pch = 16, col = rgb(0,1,0,.25))
points(x = sub_d$x[sub_d$col == 0], y = sub_d$y[sub_d$col == 0],
cex = sub_d$size[sub_d$col == 0], pch = 21, col = rgb(0,1,0,.5), lwd = 2)
points(x = sub_d$x[sub_d$col == 1], y = sub_d$y[sub_d$col == 1],
cex = sub_d$size[sub_d$col == 1], pch = 16, col = rgb(0,0,1,.25))
points(x = sub_d$x[sub_d$col == 1], y = sub_d$y[sub_d$col == 1],
cex = sub_d$size[sub_d$col == 1], pch = 21, col = rgb(0,0,1,.5), lwd = 2)
## Wrong for scale
par(mfrow=c(3,3))
for(t in 1:9) {
make_plot(dat, t)
}
## Slightly better scale
par(mfrow=c(3,3))
for(t in 1:9) {
make_plot(dat, t, adjust = 3)
}
Создано в 2019-09-23 пакетом Представить (v0.3.0)