Kontrolowanie kleszczy osi i linii osi oddzielnie na siatce R xyplot

Jak mogę usunąć skrzynkę wokółxyplot, zachowując znaki podziałki skali osi? W duchu minimalistycznej estetyki grafiki Edwarda Tufte, te linie osi są „atramentem bez danych” i mogą (powinny?) Być „wymazane”.

library(lattice)
my.df <- data.frame(x=-10:10)
my.df$y <- my.df$x^2
xyplot(y~x,data=my.df)

Wydaje się, że krata wyświetla parametry (np.axis.line$col) steruj razem liniami osi i zaznaczeniami osi:

xyplot(y~x,data=my.df,
       par.settings=list(axis.line=list(col="transparent")))

... co nie jest pożądanym rezultatem, więc nie wygląda na to, że istnieje prosty sposób na wyłączenie linii podczas opuszczania pudełka.

Najlepszą rzeczą, jaką udało mi się wymyślić, jest włamanie siłowe, w którym ręcznie robię znacznikipanel.segments:

at.x=pretty(c(-10,10))
at.y=pretty(c(0,100))
xyplot(y~x,data=my.df,
       par.settings=list(axis.line=list(col="transparent")),
       scales=list(x=list(at=at.x,labels=at.x),
       y=list(at=at.y,labels=at.y)),
       panel=function(...){
           panel.xyplot(...)
           panel.segments(x0=at.x,x1=at.x,y0=-4,y1=-2)
           panel.segments(x0=-11.5,x1=-11,y0=at.y,y1=at.y)
       }
       )

Jest to bliskie pożądanemu wynikowi, ale jest sporo manipulacji, aby znaki zaznaczenia były rozsądną długością i przesunąć „ładną” odległość od punktów danych. Te wartości nie przekładają się z jednej grafiki na następną. Ponadto należy pamiętać, że etykiety osi są teraz zbyt daleko od znaczników. Jestem pewien, że istnieje sposób na zmniejszenie tego dopełnienia, ale to tylko uczyniłoby kod jeszcze brzydszym i mniej przenośnym.

Jak więc można wyeliminować tylko linie tworzące „pole” wokół obszaru wydruku, pozostawiając nienaruszone znaczniki i etykiety osi? Dodatkowe punkty, jeśli to podejście może być również użyte do tłumienia niektórych, ale nie wszystkich linii (np. Pozostawienie lewej i dolnej linii, ale pomijanie górnej i prawej linii).

questionAnswers(2)

yourAnswerToTheQuestion