Вот еще одно решение, основанное на panel.superpose
, на которое вы ссылаетесь в своем вопросе:
library(lattice)
xyplot(Sepal.Length ~ Petal.Length, groups = Species, data = iris,
panel = function(x,y,...){
panel.superpose(x,y,..., pch=list("A","O","X"))
})
дает следующий вывод: ![panel_superpose_example](https://i.stack.imgur.com/V86VN.png)
lattice
использует первичные переменные (определяют основной дисплей), условные переменные (определяют подгруппы, расположенные рядом на разных панелях) и группирующие переменные (определяют наложенные подгруппывнутри панелей).
Формула Sepal.Length ~ Petal.Length и оператор группировки groups = Species указывают данные, которые должны быть нанесены на график, и передают их panel
который контролирует черчение.Если groups! = NULL panel.superpose
, то i-й элемент списка, присвоенный pch
, переходит на i-й уровень groups
.
Используя ...
для panel
и panel.superpose
, можно избежать определения всех аргументов функции и указать только те из них, которые необходимо настроить.
pars.settings
присоединяет пользовательские настройки к определеннымобъект, в отличие от lattice.options
, который влияет на настройки глобально.