Извините за диск по комментарию RTFM. Вот еще некоторые подробности.
Используя базовую графику, я бы выполнил то, что вы делаете, примерно так:
plot(c(sw_sd,aa_sd),c(sw_r,aa_r), pch = 22,
col = rep(c('forestgreen','blue'),each = 2),main="Capital Allocation Lines",
xlab="Standard Deviation", ylab="Expected Return")
abline(lm(sw_r~sw_sd),col = 'forestgreen',lwd = 3)
abline(lm(aa_r~aa_sd),col = 'blue',lwd = 3)
Причина, по которой я упомянул points
и lines
, заключалась в том, что вы спрашивали, как построить несколько наборов точек на одном графике. Общая стратегия с базовой графикой в R состоит в том, что вы инициализируете сюжет одним вызовом plot
, а затем добавляете к нему, используя такие вещи, как points
, lines
, abline
и т. Д.
Ваши звонки на номера plot.new
и plot.window
на самом деле не нужны; если вы только начинаете с R, вам, скорее всего, не понадобится какое-то время их использовать.
Как правило, каждый раз, когда вы звоните plot
, R запускает новое графическое устройство. Так что ваши повторные звонки на plot
просто возвращаются и начинаются снова. Вы заметите, что полученный график не имеет пределов оси y от 0 до 12. Это потому, что каждый раз, когда вы снова вызываете plot
, вы начинаете все заново, как будто предыдущие команды никогда не выполнялись. Именно поэтому другой набор точек не появился.
Наконец, рекомендация читать ?plot
немного вводит в заблуждение, поскольку на самом деле ?plot.default
немного более информативна для начинающих. У него есть небольшие самородки, такие как возможность прямого прохода по осям x и y, пропуск type = "n"
для создания пустого графика с правильными размерами, которые вы затем можете добавить, и т. Д.