2013-05-31 9 views
5

jestem obeznanym z Matlab, ale stosunkowo nowy w r. Mam skrypt r, który generuje wiele różnych graficznych okien wykresów i zajmuje trochę czasu pomiędzy nimi. Podczas gdy to działa, staram się pracować nad innymi rzeczami. Problem pojawia się za każdym razem, gdy tworzone jest nowe okno graficzne, kradnie fokus, przekierowując wejście klawiatury z dala od tego, co robię. Czy istnieje sposób, aby zapobiec kradzieży ostrości podczas tworzenia wykresu?Blokada ostrości kradzież przy uruchamianiu nowego wykresu graficznego w R

Szukałem wszędzie, ale nie udało się znaleźć żadnego odniesienia do tego. Pracuję w Linuksie.

Każda pomoc bardzo ceniona.

Dzięki

+0

Jak się tworzenie każde okno wykresu? To samo okno jest domyślnie używane ponownie ... –

+1

Im więcej o tym myślę, dlaczego tego potrzebujesz? Czy zamierzasz stworzyć garść otwartych okien działek? A może chcesz tylko zapisać te wykresy używając czegoś w stylu 'pdf'? – Thomas

Odpowiedz

1

Jeśli wmctrl jest zainstalowany w systemie, można uniknąć utraty ostrości poprzez przedefiniowanie funkcji plot tak:

plot <- function(...) { 
    graphics::plot(...) 
    system("wmctrl -a :ACTIVE:") 
} 

Wydaje się całkiem dobrze, w menedżera okien Fluxbox przynajmniej. Próbowałem różnych scenariuszy, takich jak przełączanie do innego okna podczas długich obliczeń przed wywołaniem i wywoływanie wielu wykresów.

Umieścić go w swoim .Rprofile jeśli chcesz go utrzymywać.

+0

To wygląda obiecująco - nie mam wmctrl w moim systemie (opensuse z gnome), ale będzie to i próbę zainstalowania i zakładać z powrotem tutaj, czy to działa. Dzięki. – user1218475

3

tylko w systemie Windows: Spróbuj oddanie bringToTop(-1) w funkcji:

z <- function() { 
    plot(1:3) 
    bringToTop(-1) 
} 
z() 

będzie tymczasowo kradzieży ostrość ale potem zwrócić go.

Inną strategią w systemie Windows:

z <- function(){ 
    windows(restoreConsole=TRUE) 
    plot(1) 
} 
z() 

ja wciąż tu na myśli ...

+0

'bringToTop' jest funkcją specyficzną dla systemu Windows. Nie istnieje w instalacjach R na Linuksie. –

+1

'windows' to także (niespodzianka, niespodzianka) specyficzne dla systemu Windows. ;) –

2

Jeśli jesteś bardziej zainteresowany robi coś innego, podczas gdy działki są produkowane następnie Sugerowałbym otwierania urządzenie pdf, aby wszystkie działki trafiały do ​​pliku pdf w tle i nie zakłócały innych czynności. Następnie, gdy jesteś gotowy, aby przejrzeć działki, po prostu otwórz plik pdf i spójrz na działki (i możesz z łatwością wrócić do poprzednich działek w ten sposób).

+0

Dzięki - że to dobry pomysł, ale nie jest całkiem to, czego szukam jako działki są wysyłane również oddzielnie, po jednym w każdym e-mail. – user1218475

+0

@ user1218475, a następnie wyślij każdy dział do własnego pliku. Zobacz argument 'onefile' dla' pdf' lub innych urządzeń opartych na plikach lub użyj 'dev.off' po każdym wykresie i sam kontroluj nazwy plików. Jeśli głównym celem jest wysłanie e-maili do działek, wysłanie ich bezpośrednio do plików będzie bardziej efektywne niż pojawienie się wielu okien i konieczność pracy z każdym z nich. –

Powiązane problemy