Wprowadzenie do Sweave

Transkrypt

Wprowadzenie do Sweave
Wprowadzenie do Sweave
mgr inż. Piotr Kowalski
16 maja 2012
1
Streszczenie
Krótkie wprowadzenie do używania Sweave, pakietu umożliwiajacego
,
polaczenie
platformy obliczeń statycznych R-cran oraz dokumentów Latex
,
1
Lista wersji
Wersja 0.1 - 8.04.2012 - Kowalski Piotr - pierwsza wersja dokumentu, wymagajaca
dalszych uzupelnień oraz testów na Windows
,
Wersja 0.2 - 13.04.2012 - Kowalski Piotr - druga wersja z uzupelniona, instalacja, dla systemów Windows
Wersja 0.3 - 20.04.2012 - Kowalski Piotr - trzecia wersja z dorzuconymi zrzutami ekranu z instalacji w Windows7.
Wersja 1.0 - 16.05.2012 - Kowalski Piotr - czwarta wersja, zamykajaca
pierw,
sze prace nad dokumentem. Uzupelniono tworzenie grafiki w Sweave oraz
importowanie jej do Latexa. Dolaczono
również kod prezentacji Sweave
,
2
Spis treści
1 Czym jest Sweave
4
2 Instalacja Sweave
2.1 Automatyzacja kompilacji Sweave . . . . . . . . . .
2.1.1 Automatyzacja kompilacji dla TEXMaker . .
2.1.2 Automatyzja kompilacji dla Miktex 2.9, LEd
mie Windows . . . . . . . . . . . . . . . . . .
2.2 Zasada dzialania Sweave . . . . . . . . . . . . . . . .
. . . . . . .
. . . . . . .
na platfor. . . . . . .
. . . . . . .
3 Programowanie w Sweave
3.1 Podstawowy blok Sweave . . . .
3.1.1 Parametry bloku . . . . .
3.2 Blok linijkowy Sweave . . . . . .
3.3 Powtarzanie bloków . . . . . . .
3.4 Ukrywanie fragmentu kodu przed
3.5 Grafika w Sweave . . . . . . . . .
3.5.1 Etykietowanie + grafika .
3.5.2 Opcje eksportu grafiki . .
. . . . .
. . . . .
. . . . .
. . . . .
Sweave
. . . . .
. . . . .
. . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
9
9
10
11
11
12
12
13
13
4 Przyklady
4.1 Przykladowy plik rnw . . .
4.1.1 Plik bibliografia.bib
4.2 Przykladowy plik tex . . . .
4.3 Prezentacja Sweave . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
17
17
23
23
30
.
.
.
.
.
.
.
.
3
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
4
4
4
5
9
1
Czym jest Sweave
Sweave jest narzedziem
do generowania plików tex zawierajacych
obliczenia,
,
,
grafiki i wiele innych obiektów wytworzonych przez przez pakiet R. Umożliwia dynamiczne tworzenie raportów i jest przykladem tzw. ” programowania
1
objaśniajacego”
. Dla nas jest to jednak sposób na stworzenie inteligentnego
,
dokumentu, który potrafi generować losowości i liczyć dla nas wyniki. Jest to
również narzedzie
pozwalajace
,
, na proste wstrzykiwanie skomplikowanych grafik
i wykresów do fachowo zlożonych dokumentów LATEX.
W poniższym instruktażu zakladam milczaco,
że użytkownik posiada pod,
stawowa, znajomość zarówno pakietu R jak i jezyka
LATEX. Podobnie zalożone
,
jest posiadanie zainstalowanej lokalnie instancji pakietu R oraz posiadanie środowiska i edytora do pisania dokumentów TEX.
2
Instalacja Sweave
W stan obecny pakiet Sweave stanowi wbudowana, cześć
pakietu R-cran i jest
,
domyślnie z nim instalowany. W przypadku systemów unixowych po instalacji
utworzony powinien zostać skrypt w /usr/bin/R co czyni go ogólnodostepnym
,
dla innych programów w systemie. W przypadku systemów z rodziny Windows,
podobne powinno zostać zrealizowane poprzez dolaczenie
folderu bin z pakietu
,
R to zmiennej globalnej PATH. W przypadku, gdy takie dopisanie nie zostalo
zrealizowane, zaleca sie, przeprowadzenie tego recznie.
,
W przypadku instalacji na Windows należy jeszcze dolaczyć
pakiet stylu do
,
źródel kompilacyjnych Latexa.
2.1
Automatyzacja kompilacji Sweave
W zależności od, stosowanego przez użytkownika, edytora LATEXróżnie przebiega
proces uruchomienia automatycznego generowanie plików pdf w sposób automatyczny. W skrócie sprowadza sie, to zdefiniowania wlasnej komendy kompilacji,
która powinna wygladać
mniej wiecej
w sposób nastepuj
acy:
,
,
,
,
R CMD Sweave %.rnw
Zaprezentowana powyżej komenda powinna dzialać w wiekszości
systemów uni,
xowych i w dowolnym z edytorów. Sprawdzenia użyto z wykorzystaniem edytora
TEXMaker 3.0.2 oraz:
$ tex --version
TeX 3.1415926 (TeX Live 2009/Debian)
2.1.1
Automatyzacja kompilacji dla TEXMaker
Miejscem przeznaczonym do umieszczenia komendy jest panel komend użytkownika znajdujacy
sie, w menu User->User commands -> Edit user commands.
,
Zgodnie z możliwościami programu komenda to może zostać rozwinieta
tak, aby
,
obslużyć calość procesu tworzenia dokumentu co można obserwować poniżej.2
1 ang.
literate programming
jest lekka, przegladark
a, plików pdf
,
2 evince
4
R CMD Sweave %.rnw |
pdflatex -synctex=1 -interaction=nonstopmode %.tex |
evince %.pdf
Rysunek 1: Konfiguracja Sweave dla texmaker
2.1.2
Automatyzja kompilacji dla Miktex 2.9, LEd na platformie
Windows
Proces ustanowienia automatyzacji jest bardziej skomplikowany na systemach
Windows. Prezentowane jest tutaj rozwiazanie
dla popularnego duetu Latexo,
wego czyli Miktex+LEd. Proces tej automatyzacji jest trzy krokowy i powinien
wygladać
podobnie dla innych środowisk kompilacji LATEX.
,
Udostepnie
pakietu R w linii komend
,
Aby proces kompilacji mógl wykorzystać R, aplikacja ta musi być dobrze rozpoznawana w calym systemie operacyjnym. Aby sprawdzić czy tak faktycznie jest
wystarczy uruchomić program linii komend i wpisać w nim R + enter. Jeśli program jest dobrze znany, to powinien sie, uruchomić i w linii komend powinna być
możliwość wykonywana poleceń jego jezyka.
Jeśli natomiast pojawi sie, komuni,
kat, że ta nazwa/program nie jest znany, to opisuje tutaj sposób naprawienia
tego faktu.
Najpierw należy odszukać ścieżke, do podkatalogu bin znajdujacego
sie, w
,
katalogu z instalacja, R. Domyślnie ma ona postać ”C:\\Program Files\R\RX.XX.X\bin”. Trzeba nakazać programom zapoznać sie, z programami tam znajdujacymi
sie.
,
, W systemach Windows istnieje specjalny zestaw zmiennych, które
sa, dostepne
do odczytu wszystkim programom w systemie operacyjnym. Sa, to
,
tzw. zmienne środowiskowe. Wśród tych zmiennych jest jedna z nich nazywana
PATH, i zawiera ona wszystkie katalogi w których znajduja, sie, programy, które
maja, być dostepne
dla wszystkich innych programów.
,
Aby otrzymać dostep
, do zmiennych środowiskowych należy kliknać
, PPM na
ikone, Mój komputer i przejść do wlaściwości. Wyświetli sie, okno 2. W zaawansowanych ustawieniach systemu odszukać przycisk zmiennych środowiskowych
(ang. enviromental variables) jak na obrazie 3 . W nastepnej
kolejności nale,
ży odszukać zmienna, PATH i kliknać
jej
edycj
e.
UWAGA.
Nie
należy niczego
,
,
kasować z tej zmiennej. Usuniecie
jej
zawartości
może
spowodować
uszkodze,
nie systemu operacyjnego. Należy na końcu wartości tej zmiennej (obrazek 4)
5
Rysunek 2: Zaawansowane ustawienia systemu w Win7
postawić znak ’;’ oraz wkleić ścieżke, do katalogu bin. Oznacza to, że na koniec
zmiennej PATH powinien zostać doklejony frgament o postaci np. ;C:\\Program
Files\R\R-X.XX.X\bin . Po zakończeniu edycji należy zapisać wartość zmiennej
i dokonać sprawdzenia w nowo otwartym oknie linii komend sprawdzajac,
,
tak jak na poczatku,
czy program R stal sie, widoczny w systemie.
,
Import skladni Sweave
W procesie kompilacji pliku tex, kompilator Latexa wymagać Cie, bedzie
infor,
macji o skladni zwiazanej
z
pakietem
Sweave.
W
naszym
wypadku
tym
kompila,
torem jest platforma Miktex. Musimy zatem poinformować platforme, gdzie może
odszukać ona plik Sweave.sty. Zwyczajowo ścieżka ta ma postać ” C:\\Program
Files\R\R-2.15.0\share\texmf ”. Należy uruchomić Miktex(Admin) -> Settings
i w drugiej zakladce zawierajacej
”katalogi zarzadzane
przez Miktex” dodać no,
,
wy o ścieżce podobnej do powyższej (patrz rysunek 5). Po zapisaniu ustawień
styl Sweave.sty powinien być dostepny
w procesie kompilacji latex.
,
Automatyczny skrypt kompilacji
Podobnie jak TEXMaker również i LEd udostepnia
wlasne skrypty kompilacyjne.
,
Po lewo na pasku znajduje sie, 5 kolejnych przycisków o nazwie U. Po najechaniu na nie pojawia sie, informacja, że wciśniecie przycisku powoduje wykonanie
pliku userX.bat , gdzie pod X jest liczba od 1 do 5. To wlaśnie jeden z tych
skryptów powinien zostać użyty do wykonywania naszego procesu kompilacji.
Poniżej podaje postać tego skryptu
cd %1
6
Rysunek 3: Zmienne środowiskowe systemu w Win7
Rysunek 4: Zmienne środowiskowe systemu w Win7
7
Rysunek 5: Zmienne środowiskowe systemu w Win7
8
Sweave %.rnw
%.rnw
pdflatex %.tex
- %.tex
- %.pdf
Rysunek 6: Proces kompilacji Sweave
R CMD Sweave %2.rnw
pdflatex.exe %2.tex
Pod %1 ukrywa sie, katalog w którym znajduje sie, plik źródlowy, pod %2 natomiast jego nazwa bez rozszerzenia. Aby zautomatyzować proces kompilacji
w LEd należy powyższa, treść umieścić w pliku np. user1.bat, który znajduje sie, domyślnie w katalogu: ”C:\\Program Files\LEd\Batches. Po wykonaniu
tego pod odpowiednim przyciskiem U odbywać sie, bedzie
proces kompilacji
,
Sweave+pdflatex.
UWAGA. W systemach Windows Vista oraz późniejszych nie można bezpośrednio edytować, a dokladniej zapisywać, do plików systemowych. W takim
wypadku należy plik userX.bat przenieść np. na swój pulpit, edytować a dopiero
nastepnie
przenieść go z powrotem do katalogu Batches.
,
2.2
Zasada dzialania Sweave
Poniższy diagram prezentuje zasade, dzialania procesu kompilacji dokumentu
Rnw zawierajacego
kod dla pakietu Sweave. W pierwszej cześci
procesu plik
,
,
rnw. tlumaczony jest na plik TEXowski oraz eksportowane sa, wszystkie wykresy.
W dalszej cześci
nastepuje
kompilacja programu pdflatex. Calość prezentuje
,
,
diagram 6
3
Programowanie w Sweave
W tej cześci
skupimy sie, na umówieniu bloków Sweave. Wszystko co nie jest
,
blokiem Sweave jest przez pierwszy proces kompilacji zwyczajnie kopiowane do
pliku .tex. Plik .rnw po prawdzie nie różni sie, niczym od zwyczajnego dokumentu
LATEXgdyby nie dolaczone
wstawki. Proces tworzenia takiego dokumentu należy
,
zaczać
podobnie
jak
w
przypadku
pisania zwyczajnego pliku latexowego.
,
3.1
Podstawowy blok Sweave
W Sweave do tworzenia bloków używa sie, specjalnego rodzaju bloku wyglada,
jacego
nastepuj
aco
,
,
,
<<name>>
R-code
@
W miejscu name umieścić można zarówno nazwe, wlasna, dla bloku jak i szereg
parametrów
Na przyklad:
9
echo
fig
eval
results
engine
split
label
TRUE-pokazuje komende, wykonania, FALSE - ukrywaja,
TRUE-przekazuje wykres do umieszczenia - FALSE - ukrywa wykresy
ustala czy wyniki sa, obliczane
opcje: verbatim,tex,hide - to różne tryby wyświetlania
ustala narzedzie
do przetwarzania w Sweave: S, R, S3 or S4
,
ustala podzial pliku wynikowego, wartość TRUE oznacza istnienie podzialu
podaje nazwe, pliku wynikowego, jest również etykieta, dla bloku
Tabela 1: Podsumowanie parametrów bloku
<<>>=
x=c(1,2,3)
x^2
@
Wyprodukuje
> x=c(1,2,3)
> x^2
[1] 1 4 9
W bloku można wykonywać dowolne komendy jezyka
R. W miare, rozwo,
ju tego dokumentu obserwować bedziemy,
że
użycie
niektórych
wyników jest
,
trudniejsze niż reszty.
3.1.1
Parametry bloku
Blok może posiadać wiele różnych parametrów, zebranych w tabeli 1.
Pokażemy to na przykladzie poniższego kodu:
<<param=value>>=
x=c(1,2,3)
x
@
Przy wlaczonym
echo:
,
> x=c(1,2,3)
> x
[1] 1 2 3
i wylaczonym:
,
[1] 1 2 3
Przy wlaczonym
eval:
,
> x=c(1,2,3)
> x
[1] 1 2 3
10
i wylaczonym:
,
> x=c(1,2,3)
> x
Przy results verbatim:
> x=c(1,2,3)
> x
[1] 1 2 3
results tex:
> x=c(1,2,3)
> x
[1] 1 2 3
results hide:
> x=c(1,2,3)
> x
[1] 1 2 3
3.2
Blok linijkowy Sweave
Możliwe jest również
używanie R do wypelniania tekstów linijkowych. Np. Pier√
wiastek z 2: 2 = 1.4142135623731. do wykonania tego potrzebny jest blok
\Sexpr{·}. Blok ten wyświetla zawsze pojedynczy element, pierwszy w wektorze odpowiedzi. Dla sygnalu \Sexpr{c(1, 2, 3)} otrzymujemy bowien 1
3.3
Powtarzanie bloków
Użycie konstrukcji
<<>>=
Jest niczym innym jak przypisaniem. Standardowy blok jest anonimowy. Można
jednak nadać im nazwy.
<<A>>=
x=c(1,2,3)
@
> x=c(1,2,3)
Najważniejsza, zaleta, tego rozwiazania
jest możliwość wielokrotnego użycia tych
,
samych bloków
<<>>=
<<A>>
<<A>>
@
> x=c(1,2,3)
> x=c(1,2,3)
11
3.4
Ukrywanie fragmentu kodu przed Sweave
Skomplikowanym procesem jest ukrywanie kawalków pliku przed byciem przeprocesowanym przez Sweave. Okazuje sie, jednak, że jest prosty sposób na ukrycie
fragmentów kodu przed byciem przegladanym
przez Sweave. Wystarczy ukryć
,
je w innym pliku. Sweave procesuje jedynie pojedynczy plik, wiec
, jeśli niechcemy aby jakiś fragment naszego nie bral w nim udzialu wystarczy umieścić go w
osobnym pliku i kazać latexowi użyć go w nastepnym
etapie
,
\input{ukryte1}
gdzie plik ukryte1.tex zawiera rzeczy nie procesowane przez Sweave.
Kiedy należaloby zadbać o nie procesowanie takiego fragmentu? Np. gdy
móglby zawierać bloki Sweave, które nie powinny być interpretowane. Sweave
ponadto czesto
nadmiernie miesza w kodzie usuwajac
,
, komentarze, zlamania linii itp. Również zwyczajny znak @ stojacy
samotnie
jest z reguly przez Sweave
,
usuwany jako znak komentarza w plikach .rnw. Generalna, zasada, jest aby duże
fragmenty nie wymagajace procesowania w Sweave nie poddawać temu procesowi. W przypadkach bardziej skomplikowanych dokumentów o wieloplikowej
architekturze, może to nawet oznaczać konieczność napisanie odpowiednika pliku makefile dla procesu kompilacji.
Innym potencjalnym sposobem3 jest przekazanie do parametrów Sweavea by
ten dolaczy
l kod przekazany do parsera, co osiaga
sie, komenda,
,
,
\SweaveOpts{keep.source=TRUE}
Jeszcze innym sposobem jest oszukanie Sweave, aby ten sam wytworzyl to
co powinien zastać LATEX:
<<results=tex,echo=FALSE>>=
cat('<<>>=\ngetwd()\n@\n')
@
Co daje poniższy wynik:
<<>>=
getwd()
@
3.5
Grafika w Sweave
Pojedynczy blok potrafi zwrócić pojedynczy wykres, do czego wystarczy uruchomienia parametru fig w bloku Sweave
> x=seq(0,10,by=0.01)
> plot(x,sin(x),'l')
3 Nie
byl sprawdzany przeze mnie
12
1.0
0.5
0.0
−1.0
−0.5
sin(x)
0
2
4
6
8
10
x
Najważniejsza, rzecza, przy wykorzystaniu Sweave do tworzenia grafik jest,
to aby pamietać
by pojedynczy blok posiadal nie mniej nie wiecej
a dokladnie
,
,
jeden wykres. Do wykresów można przekazywać dowolne parametry obslugiwane
przez R.
Można użyć dodatkowych parametrów. Takim parametrem jest np. Gin odpowiadajacy
skalowaniu wykresów
,
\setkeys{Gin}{width=0.7\textwidth}
3.5.1
Etykietowanie + grafika
Niestety niewiele można zrobić z grafika,, dopóki nie bedzie
można jej skalować i
,
specjalnie umieszczać w dokumencie. Twórcy sweave przyszli jednak z pomocna,
dlonia, dla osób, które nie lubia, zostawiać wszystkiego dla Sweave. Jeśli blok
sweave posiada etykiete, z nazwa,, to ta nazwa użyta zostanie do utworzenia
pliku z grafika, tego bloku. Lacz
, ac
, to z opcja,
\SweaveOpts{include=FALSE}
pozwala to użytkownikowi tworzyć i dowolnie dolaczać
wykresy do dokumentu.
,
Przykladowo, jeśli blok poniższy blok posiada etykiete, test
to plik 4 wygladać
bedzie
nastepuj
aco:
”genplots/plot-test.pdf”.
,
,
,
,
3.5.2
Opcje eksportu grafiki
Na R można wymusić aby grafiki byly eksportowane do podfolderu zamiast w
glównym drzewie. Uzyskuje sie, to opcja:,
4 Po
uwzglednieniu
prefiksu
,
13
0.0
−0.5
−1.0
sin(x)
0.5
1.0
> x=seq(0,10,by=0.01)
> plot(x,sin(x),'l')
0
2
4
6
x
14
Rysunek 7: Wykres przy Gin = 1.7
8
0.0
−1.0
−0.5
sin(x)
0.5
1.0
> x=seq(0,10,by=0.01)
> plot(x,sin(x),'l')
0
2
4
6
8
x
Rysunek 8: Wykres przy Gin = 0.7
0.0
−1.0
−0.5
sin(x)
0.5
1.0
> x=seq(0,10,by=0.01)
> plot(x,sin(x),'l')
0
2
4
6
8
10
x
Rysunek 9: Wykres przy Gin = 0.2
15
10
1.0
0.5
cos(x)
0.0
−0.5
−1.0
0
2
4
6
x
Rysunek 10: Wykres z etykieta,
16
8
10
\SweaveOpts{prefix.string=podkatalog/prefix}
Co spowoduje eksport wykresów do ’podkatalogu’ i rozpoczecie
nazwy każdego
,
pliku z użyciem ’prefix’
4
Przyklady
4.1
Przykladowy plik rnw
\documentclass[10pt,a4paper,oneside]{article}
\usepackage[utf8]{inputenc}
\usepackage[OT4]{polski} % polish language support
\usepackage{makeidx} %for index preparation
\usepackage{natbib} %bibtex package
\usepackage{spverbatim} %for line breaking verbatim
%\usepackage{ucs}
\author{mgr inz. Piotr Kowalski}
\title{Wprowadzenie do Sweave}
\makeindex
\begin{document}
\SweaveOpts{prefix.string=../genplots/plot}
\begin{titlepage}
\maketitle
\end{titlepage}
\begin{abstract}
Krótkie wprowadzenie do uzywania Sweave, pakietu umozliwiajacego
po laczenie
platformy obliczeń statycznych R-cran
,
,
oraz dokumentów Latex
\end{abstract}
\newpage
\subsection*{Lista wersji}
\begin{description}
\item[Wersja 0.1] - 8.04.2012 - Kowalski Piotr - pierwsza wersja dokumentu, wymagajaca
dalszych uzupe lnień oraz
,
testów na Windows
\item[Wersja 0.2] - 13.04.2012 - Kowalski Piotr - druga wersja z uzupe lniona, instalacja, dla systemów Windows
\item[Wersja 0.3] - 20.04.2012 - Kowalski Piotr - trzecia wersja z dorzuconymi zrzutami ekranu z instalacji w
Windows7.
\item[Wersja 1.0] - 16.05.2012 - Kowalski Piotr - czwarta wersja, zamykajaca
pierwsze prace nad dokumentem. Uzupe lniono
,
tworzenie grafiki w Sweave oraz importowanie jej do Latexa. Do laczono
równiez kod prezentacji Sweave
,
\end{description}
\newpage
\tableofcontents
\newpage
\section{Czym jest Sweave}
Sweave\index{Sweave} jest narzedziem
do generowania plików tex zawierajacych
obliczenia, grafiki i wiele innych
,
,
obiektów wytworzonych przez przez pakiet R. Umozliwia dynamiczne tworzenie raportów i jest przyk ladem tzw. ''
programowania objaśniajacego
''\index{Programowanie objaśniajace}\footnote{ang.
literate programming}. Dla nas
,
,
jest to jednak sposób na stworzenie inteligentnego dokumentu, który potrafi generować losowości i liczyć dla nas
wyniki. Jest to równiez narzedzie
pozwalajace
na proste wstrzykiwanie skomplikowanych grafik i wykresów do fachowo
,
,
z lozonych dokumentów \LaTeX.
W ponizszym instruktazu zak ladam milczaco,
ze uzytkownik posiada podstawowa, znajomość zarówno pakietu R jak i
,
jezyka
\LaTeX. Podobnie za lozone jest posiadanie zainstalowanej lokalnie instancji pakietu R oraz posiadanie
,
środowiska
i edytora do pisania dokumentów \TeX.
\section{Instalacja Sweave}
17
pakietu R-cran i jest domyślnie z nim instalowany. W przypadku
W stan obecny pakiet Sweave stanowi wbudowana, cześć
,
systemów unixowych po instalacji utworzony powinien zostać skrypt
w \slash usr\slash bin\slash R co czyni go ogólnodostepnym
dla innych programów w systemie. W przypadku systemów
,
z rodziny Windows, podobne powinno zostać zrealizowane poprzez do laczenie
folderu bin z pakietu R to zmiennej
,
globalnej PATH. W przypadku, gdy takie dopisanie nie zosta lo zrealizowane, zaleca sie, przeprowadzenie tego recznie.
,
W przypadku instalacji na Windows nalezy jeszcze do laczyć
pakiet stylu do źróde l kompilacyjnych Latexa.
,
\subsection{Automatyzacja kompilacji Sweave}
W zalezności od, stosowanego przez uzytkownika, edytora \LaTeX róznie przebiega proces uruchomienia automatycznego
generowanie plików pdf w sposób automatyczny. W skrócie sprowadza sie, to zdefiniowania w lasnej komendy kompilacji,
która powinna wygladać
mniej wiecej
w sposób nastepuj
acy:
,
,
,
,
\begin{verbatim}
R CMD Sweave %.rnw
\end{verbatim}
Zaprezentowana powyzej komenda powinna dzia lać w wiekszości
systemów unixowych i w dowolnym z edytorów. Sprawdzenia
,
uzyto z wykorzystaniem edytora \TeX Maker\index{\TeX Maker} 3.0.2 oraz:
\begin{verbatim}
$ tex --version
TeX 3.1415926 (TeX Live 2009/Debian)
\end{verbatim}
\subsubsection{Automatyzacja kompilacji dla \TeX Maker}
Miejscem przeznaczonym do umieszczenia komendy jest panel komend uzytkownika znajdujacy
sie, w menu User->User
,
commands -> Edit user commands. Zgodnie z mozliwościami programu komenda to moze zostać rozwinieta
tak, aby obs luzyć
,
ca lość procesu tworzenia dokumentu co mozna obserwować ponizej.\footnote{evince jest lekka, przegladark
a, plików
,
pdf}
\begin{verbatim}
R CMD Sweave %.rnw |
pdflatex -synctex=1 -interaction=nonstopmode %.tex |
evince %.pdf
\end{verbatim}
\begin{figure}[hb]\centering\includegraphics[scale=0.5]{../images/texmaker_Sweave.png}\caption{Konfiguracja Sweave
dla texmaker}\label{install.texmaker}
\end{figure}
\subsubsection{Automatyzja kompilacji dla Miktex 2.9, LEd na platformie Windows}
Proces ustanowienia automatyzacji jest bardziej skomplikowany na systemach Windows. Prezentowane jest tutaj rozwiazanie
,
dla popularnego duetu Latexowego czyli Miktex+LEd\index{Miktex}\index{LEd}. Proces tej automatyzacji jest trzy
krokowy i powinien wygladać
podobnie dla innych środowisk kompilacji \LaTeX.
,
\subsubsection*{Udostepnie
pakietu R w linii komend}
,
Aby proces kompilacji móg l wykorzystać R, aplikacja ta musi być dobrze rozpoznawana w ca lym systemie operacyjnym.
Aby sprawdzić czy tak faktycznie jest wystarczy uruchomić program linii komend i wpisać w nim R + enter. Jeśli
program jest dobrze znany, to powinien sie, uruchomić i w linii komend powinna być mozliwość wykonywana poleceń
jego jezyka.
Jeśli natomiast pojawi sie, komunikat, ze ta nazwa/program nie jest znany, to opisuje tutaj sposób
,
naprawienia tego faktu.
Najpierw nalezy odszukać ściezke, do podkatalogu bin znajdujacego
sie, w katalogu z instalacja, R. Domyślnie ma ona
,
postać
''C:\textbackslash\textbackslash Program Files\textbackslash R\textbackslash R-X.XX.X\textbackslash bin''. Trzeba
nakazać programom zapoznać sie, z programami tam znajdujacymi
sie.
W systemach Windows istnieje specjalny zestaw
,
,
zmiennych, które sa, dostepne
do odczytu wszystkim programom w systemie operacyjnym. Sa, to tzw. zmienne środowiskowe.
,
Wśród tych zmiennych jest jedna z nich nazywana PATH, i zawiera ona wszystkie katalogi w których znajduja, sie,
programy, które maja, być dostepne
dla wszystkich innych programów.
,
Aby otrzymać dostep
do zmiennych środowiskowych nalezy kliknać
PPM na ikone, Mój komputer i przejść do w laściwości.
,
,
Wyświetli sie, okno \ref{screen.win7.ustawienia}. W zaawansowanych ustawieniach systemu odszukać przycisk zmiennych
środowiskowych\index{Zmienne środowiskowe} (ang. enviromental variables) jak na obrazie \ref{screen.win7.zmienne}
jej edycje.
UWAGA. Nie nalezy niczego kasować
. W nastepnej
kolejności nalezy odszukać zmienna, PATH i kliknać
,
,
,
z tej zmiennej. Usuniecie
jej zawartości moze spowodować uszkodzenie systemu operacyjnego. Nalezy na końcu wartości
,
18
tej zmiennej (obrazek \ref{screen.win7.path}) postawić znak ';' oraz wkleić ściezke, do katalogu bin. Oznacza to,
ze na koniec zmiennej PATH powinien zostać doklejony frgament o postaci np. ;C:\textbackslash\textbackslash Program
Files\textbackslash R\textbackslash R-X.XX.X\textbackslash bin .
Po zakończeniu edycji nalezy zapisać wartość zmiennej i dokonać sprawdzenia w \textbf{nowo otwartym oknie linii
komend} sprawdzajac,
tak jak na poczatku,
czy program R sta l sie, widoczny w systemie.
,
,
\begin{figure}\centering\includegraphics[scale=0.45]{../images/ustawienia.jpeg}\caption{Zaawansowane ustawienia
systemu w Win7}\label{screen.win7.ustawienia}
\end{figure}
\begin{figure}\centering\includegraphics[scale=0.45]{../images/okno_zmienne.jpeg}\caption{Zmienne środowiskowe
systemu w Win7}\label{screen.win7.zmienne}
\end{figure}
\begin{figure}\centering\includegraphics[scale=0.45]{../images/okno_edycja.jpeg}\caption{Zmienne środowiskowe
systemu w Win7}\label{screen.win7.path}
\end{figure}
\subsubsection*{Import sk ladni Sweave}
W procesie kompilacji pliku tex, kompilator Latexa wymagać Cie, bedzie
informacji o sk ladni zwiazanej
z pakietem
,
,
Sweave. W naszym wypadku tym kompilatorem jest platforma Miktex. Musimy zatem poinformować platforme, gdzie moze
odszukać ona plik Sweave.sty. Zwyczajowo ściezka ta ma postać '' C:\textbackslash\textbackslash Program Files\textbackslash
R\textbackslash R-2.15.0\textbackslash share\textbackslash texmf ''. Nalezy uruchomić Miktex(Admin) -> Settings
i w drugiej zak ladce zawierajacej
''katalogi zarzadzane
przez Miktex'' dodać nowy o ściezce podobnej do powyzszej
,
,
(patrz rysunek \ref{screen.win7.miktex}). Po zapisaniu ustawień styl Sweave.sty powinien być dostepny
w procesie
,
kompilacji latex.
\begin{figure}\centering\includegraphics[scale=0.25]{../images/miktex.jpeg}\caption{Zmienne środowiskowe systemu
w Win7}\label{screen.win7.miktex}
\end{figure}
\subsubsection*{Automatyczny skrypt kompilacji}
w lasne skrypty kompilacyjne. Po lewo na pasku znajduje sie, 5
Podobnie jak \TeX Maker równiez i LEd udostepnia
,
kolejnych przycisków o nazwie U. Po najechaniu na nie pojawia sie, informacja, ze wciśniecie przycisku powoduje
wykonanie pliku userX.bat , gdzie pod X jest liczba od 1 do 5. To w laśnie jeden z tych skryptów powinien zostać
uzyty do wykonywania naszego procesu kompilacji. Ponizej podaje postać tego skryptu
\begin{verbatim}
cd %1
R CMD Sweave %2.rnw
pdflatex.exe %2.tex
\end{verbatim}
Pod $\%1$ ukrywa sie, katalog w którym znajduje sie, plik źród lowy, pod $\%2$ natomiast jego nazwa bez rozszerzenia.
Aby zautomatyzować proces kompilacji w LEd nalezy powyzsza, treść umieścić w pliku np. user1.bat, który znajduje
sie, domyślnie w katalogu: ''C:\textbackslash\textbackslash Program Files\textbackslash LEd\textbackslash Batches.
Po wykonaniu tego pod odpowiednim przyciskiem U odbywać sie, bedzie
proces kompilacji Sweave$+$pdflatex.
,
UWAGA. W systemach Windows Vista oraz późniejszych nie mozna bezpośrednio edytować, a dok ladniej zapisywać, do
plików systemowych. W takim wypadku nalezy plik userX.bat przenieść np. na swój pulpit, edytować a dopiero nastepnie
,
przenieść go z~powrotem do katalogu Batches.
\subsection{Zasada dzia lania Sweave}
Ponizszy diagram prezentuje zasade, dzia lania procesu kompilacji dokumentu Rnw\index{Plik rnw} zawierajacego
kod
,
dla pakietu Sweave. W pierwszej cześci
procesu plik rnw. t lumaczony jest na plik \TeX owski oraz eksportowane
,
sa, wszystkie wykresy. W dalszej cześci
nastepuje
kompilacja programu pdflatex. Ca lość prezentuje diagram \ref{diag.sweave.compile}
,
,
%% programowanie obrazkow w LaTeXu
\begin{figure}
\centering
\begin{picture}(240,50)(10,-20)
\put(0,0){\framebox(40,20){$\%$.rnw}}
\put(40,10){\vector(1,0){80}}
\put(45,20){Sweave $\%$.rnw}
\put(120,0){\framebox(40,20){$\%$.tex}}
\put(160,10){\vector(1,0){80}}
\put(165,20){pdflatex $\%$.tex}
\put(240,0){\framebox(40,20){$\%$.pdf}}
\end{picture}
19
\caption{Proces kompilacji Sweave}
\label{diag.sweave.compile}
\end{figure}
\section{Programowanie w Sweave}
W tej cześci
skupimy sie, na umówieniu bloków Sweave. Wszystko co nie jest blokiem Sweave jest przez pierwszy proces
,
kompilacji zwyczajnie kopiowane do pliku .tex. Plik .rnw po prawdzie nie rózni sie, niczym od zwyczajnego dokumentu
wstawki. Proces tworzenia takiego dokumentu nalezy zaczać
podobnie jak w przypadku
\LaTeX gdyby nie do laczone
,
,
pisania zwyczajnego pliku latexowego.
\subsection{Podstawowy blok Sweave}
W Sweave do tworzenia bloków uzywa sie, specjalnego rodzaju bloku wygladaj
acego
nastepuj
aco\index{Blok
Sweave}
,
,
,
,
\input{verbatim1} %% jedyny sposób by ukryć kawa lek tekstu przed Sweave tak aby ten w nim nie d luba l
W miejscu name umieścić mozna zarówno nazwe, w lasna, dla bloku jak i szereg parametrów
Na przyk lad:
<<echo=false>>=
cat('<<>>=\nx=c(1,2,3)\nx^2\n@\n')
@
Wyprodukuje
<<>>=
x=c(1,2,3)
x^2
@
W bloku mozna wykonywać dowolne komendy jezyka
R. W miare, rozwoju tego dokumentu obserwować bedziemy,
ze uzycie
,
,
niektórych wyników jest trudniejsze niz reszty.
\subsubsection{Parametry bloku}
Blok moze posiadać wiele róznych parametrów, zebranych w tabeli \ref{table.block.paramas}\index{Blok Sweave!parametry}.
\begin{table}
\centering
\begin{tabular}{| c | p{12cm} |}\hline
echo\index{Blok Sweave!echo} & TRUE-pokazuje komende, wykonania, FALSE - ukrywaja\\\hline
,
fig\index{Blok Sweave!fig} & TRUE-przekazuje wykres do umieszczenia - FALSE - ukrywa wykresy\\\hline
eval\index{Blok Sweave!eval} & ustala czy wyniki sa, obliczane \\\hline
results\index{Blok Sweave!results} & opcje: verbatim,tex,hide - to rózne tryby wyświetlania \\\hline
engine\index{Blok Sweave!engine} & ustala narzedzie
do przetwarzania w Sweave: S, R, S3 or S4 \\\hline
,
split\index{Blok Sweave!split} & ustala podzia l pliku wynikowego, wartość TRUE oznacza istnienie podzia lu\\\hline
label\index{Blok Sweave!label} & podaje nazwe, pliku wynikowego, jest równiez etykieta, dla bloku\\\hline
\end{tabular}
\caption{Podsumowanie parametrów bloku}
\label{table.block.paramas}
\end{table}
Pokazemy to na przyk ladzie ponizszego kodu:
<<echo=FALSE>>=
cat('<<param=value>>=\nx=c(1,2,3)\nx\n@')
@
Przy w laczonym
echo:
,
<<echo=TRUE>>=
x=c(1,2,3)
x
@
i wy laczonym:
,
<<echo=FALSE>>=
x=c(1,2,3)
x
@
Przy w laczonym
eval:
,
20
<<echo=TRUE,eval=TRUE>>=
x=c(1,2,3)
x
@
i wy laczonym:
,
<<echo=TRUE,eval=FALSE>>=
x=c(1,2,3)
x
@
Przy results verbatim:
<<echo=TRUE,eval=TRUE,results=verbatim>>=
x=c(1,2,3)
x
@
results tex:
<<echo=TRUE,eval=TRUE,results=verbatim>>=
x=c(1,2,3)
x
@
results hide:
<<echo=TRUE,eval=TRUE,results=verbatim>>=
x=c(1,2,3)
x
@
\subsection{Blok linijkowy Sweave}
Mozliwe jest równiez uzywanie R do wype lniania tekstów linijkowych\index{Blok Sweave!linijkowy}. Np. Pierwiastek
z 2: $\sqrt{2} = \Sexpr{sqrt(2)}$.
do wykonania tego potrzebny jest blok $\backslash Sexpr\{\cdot\}$. Blok ten wyświetla zawsze pojedynczy element,
pierwszy w wektorze odpowiedzi. Dla sygna lu $\backslash Sexpr\{c(1,2,3)\}$ otrzymujemy bowien $\Sexpr{c(1,2,3)}$
\subsection{Powtarzanie bloków}
Uzycie konstrukcji
<<echo=false>>=
cat('<<>>=')
@
Jest niczym innym jak przypisaniem. Standardowy blok jest anonimowy. Mozna jednak nadać im nazwy.
<<echo=false>>=
cat('<<A>>=\nx=c(1,2,3)\n@')
@
<<A>>=
x=c(1,2,3)
@
Najwazniejsza, zaleta, tego rozwiazania
jest mozliwość wielokrotnego uzycia tych samych bloków
,
<<echo=false>>=
cat('<<>>=\n<<A>>\n<<A>>\n@')
@
<<echo>>=
<<A>>
<<A>>
@
\subsection{Ukrywanie fragmentu kodu przed Sweave}
Skomplikowanym procesem jest ukrywanie kawa lków pliku przed byciem przeprocesowanym przez Sweave. Okazuje sie,
jednak, ze jest prosty sposób na ukrycie fragmentów kodu przed byciem przegladanym
przez Sweave. Wystarczy ukryć
,
je w innym pliku. Sweave procesuje jedynie pojedynczy plik, wiec
jeśli niechcemy aby jakiś fragment naszego nie
,
bra l w nim udzia lu wystarczy umieścić go w osobnym pliku i kazać latexowi uzyć go w nastepnym
etapie
,
\begin{verbatim}
\input{ukryte1}
\end{verbatim}
gdzie plik ukryte1.tex zawiera rzeczy nie procesowane przez Sweave.
21
Kiedy naleza loby zadbać o nie procesowanie takiego fragmentu? Np. gdy móg lby zawierać bloki Sweave, które nie
powinny być interpretowane. Sweave ponadto czesto
nadmiernie miesza w kodzie usuwajac
komentarze, z lamania linii
,
,
itp. Równiez zwyczajny znak $@$ stojacy
samotnie jest z regu ly przez Sweave usuwany jako znak komentarza w plikach
,
.rnw. Generalna, zasada, jest aby duze fragmenty nie wymagajace procesowania w Sweave nie poddawać temu procesowi.
W przypadkach bardziej skomplikowanych dokumentów o wieloplikowej architekturze, moze to nawet oznaczać konieczność
napisanie odpowiednika pliku makefile dla procesu kompilacji.
Innym potencjalnym sposobem\footnote{Nie by l sprawdzany przeze mnie} jest przekazanie do parametrów Sweavea by
ten do laczy
sie, komenda,
l kod przekazany do parsera, co osiaga
,
,
\begin{verbatim}
<<results=tex,echo=FALSE>>=
cat('\\SweaveOpts{keep.source=TRUE}\n')
@
\end{verbatim}
Jeszcze innym sposobem jest oszukanie Sweave, aby ten sam wytworzy l to co powinien zastać \LaTeX :
\input{verbatim2}
Co daje ponizszy wynik:
\begin{verbatim}
<<results=tex,echo=FALSE>>=
cat('<<>>=\ngetwd()\n@\n')
@
\end{verbatim}
\subsection{Grafika w Sweave}
Pojedynczy blok potrafi zwrócić pojedynczy wykres, do czego wystarczy uruchomienia parametru fig w bloku Sweave
\index{Grafika}\index{Grafika!plot}
<<echo=TRUE,fig=TRUE,eval=TRUE>>=
x=seq(0,10,by=0.01)
plot(x,sin(x),'l')
@
Najwazniejsza, rzecza, przy wykorzystaniu Sweave do tworzenia grafik jest, to aby pamietać
by pojedynczy blok posiada l
,
nie mniej nie wiecej
a dok ladnie jeden wykres. Do wykresów mozna przekazywać dowolne parametry obs lugiwane przez
,
R.
Mozna uzyć dodatkowych parametrów. Takim parametrem jest np. Gin odpowiadajacy
skalowaniu wykresów
,
<<echo=FALSE>>=
cat('\\setkeys{Gin}{width=0.7\\textwidth}')
@
\begin{figure}
\centering
\setkeys{Gin}{width=1.7\textwidth}
<<jeden,echo=TRUE,fig=TRUE,eval=TRUE>>=
x=seq(0,10,by=0.01)
plot(x,sin(x),'l')
@
\caption{Wykres przy Gin = 1.7}
\label{plot.gin.1.7}
\end{figure}
\begin{figure}
\centering
\setkeys{Gin}{width=0.7\textwidth}
<<dwa,echo=TRUE,fig=TRUE,eval=TRUE>>=
x=seq(0,10,by=0.01)
plot(x,sin(x),'l')
@
\caption{Wykres przy Gin = 0.7}
\label{plot.gin.0.7}
\end{figure}
\setkeys{Gin}{width=0.2\textwidth}
\begin{figure}
22
\centering
<<trzy,echo=TRUE,fig=TRUE,eval=TRUE>>=
x=seq(0,10,by=0.01)
plot(x,sin(x),'l')
@
\caption{Wykres przy Gin = 0.2}
\label{plot.gin.0.2}
\end{figure}
\setkeys{Gin}{width=2.4\textwidth}
\subsubsection{Etykietowanie + grafika}
Niestety niewiele mozna zrobić z grafika,
dopóki nie bedzie
mozna jej skalować i specjalnie umieszczać w dokumencie.
,
,
Twórcy sweave przyszli jednak z pomocna, d lonia, dla osób, które nie lubia, zostawiać wszystkiego dla Sweave. Jeśli
blok sweave posiada etykiete, z nazwa,
to ta nazwa uzyta zostanie do utworzenia pliku z grafika, tego bloku. Lacz
ac
,
,
,
to z opcja,
\begin{verbatim}
<<results=tex,echo=FALSE>>=
cat('\\SweaveOpts{include=FALSE}\n')
@
\end{verbatim}
pozwala to uzytkownikowi tworzyć i dowolnie do laczać
wykresy do dokumentu. Przyk ladowo, jeśli blok ponizszy
,
blok posiada etykiete, test
\setkeys{Gin}{width=1\textwidth}
\begin{figure}
\centering
<<test,echo=false,fig=TRUE>>=
x=seq(0,10,by=0.01)
plot(x,cos(x),'l')
@
\caption{Wykres z etykieta}
,
\label{plot.labeled}
\end{figure}
to plik \footnote{Po uwzglednieniu
prefiksu} wygladać
bedzie
nastepuj
aco:
"genplots/plot-test.pdf".
,
,
,
,
,
\subsubsection{Opcje eksportu grafiki}
Na R mozna wymusić aby grafiki by ly eksportowane do podfolderu zamiast w g lównym drzewie. Uzyskuje sie, to opcja:\index{Kompilacja
,
parametry!parametry}\index{Kompilacja parametry!eksport wykresów}
\begin{verbatim}
<<results=tex,echo=FALSE>>=
cat('\\SweaveOpts{prefix.string=podkatalog/prefix}\n')
@
\end{verbatim}
Co spowoduje eksport wykresów do 'podkatalogu' i rozpoczecie
nazwy kazdego pliku z uzyciem 'prefix'
,
\section{Przyk lady}
\subsection{Przyk ladowy plik rnw}
\begingroup
\fontsize{6pt}{9pt}\selectfont
\input{rnw_version}
\endgroup
\subsubsection{Plik bibliografia.bib}
\begingroup
\fontsize{6pt}{9pt}\selectfont
\input{bib_version}
\endgroup
\subsection{Przyk ladowy plik tex}
\begingroup
\fontsize{6pt}{9pt}\selectfont
\input{tex_version}
\endgroup
\subsection{Prezentacja Sweave}
23
\newpage
\listoffigures
\listoftables
\printindex
\nocite{*}
\bibliographystyle{plain}
\bibliography{bibliografia}
\end{document}
4.1.1
Plik bibliografia.bib
@Book{biecek,
author = {Przemys law Biecek},
ALTeditor = {ˆ},
title = {Przewodnik po pakiecie R},
publisher = {Oficyna wydawnicza GIS},
year = {2011},
address = {Wroc law}
}
@Unpublished{jakowski,
author = {Sebastian Jakowski},
title = {Sweave i jego zastosowanie},
note = {Projekt w ramach przedmiotu MPIS},
OPTkey = {ˆ},
OPTmonth = {ˆ},
year = {2011},
OPTannote = {ˆ}
}
@Unpublished{ryszewski,
author = {Daniel Ryszewski},
title = {Sweave i jego zastosowania - uzupe lnienie pracy {Sebastiana} {Jakowskiego}},
note = {Projekt w ramach przedmiotu MPIS},
OPTkey = {ˆ},
OPTmonth = {ˆ},
year = {2011},
OPTannote = {ˆ}
}
@Manual{Leisch,
title = {Sweave User Manual},
OPTkey = {ˆ},
author = {Friedrich Leisch},
OPTorganization = {ˆ},
OPTaddress = {ˆ},
OPTedition = {ˆ},
OPTmonth = {ˆ},
OPTyear = {ˆ},
OPTnote = {ˆ},
annote = {R Version 2.7.1}
}
4.2
Przykladowy plik tex
\documentclass[10pt,a4paper,oneside]{article}
\usepackage[utf8]{inputenc}
\usepackage[OT4]{polski} % polish language support
\usepackage{makeidx} %for index preparation
\usepackage{natbib} %bibtex package
\usepackage{spverbatim} %for line breaking verbatim
%\usepackage{ucs}
24
\author{mgr inz. Piotr Kowalski}
\title{Wprowadzenie do Sweave}
\makeindex
\usepackage{Sweave}
\begin{document}
\begin{titlepage}
\maketitle
\end{titlepage}
\begin{abstract}
Krótkie wprowadzenie do uzywania Sweave, pakietu umozliwiajacego
po laczenie
platformy obliczeń statycznych R-cran
,
,
oraz dokumentów Latex
\end{abstract}
\newpage
\subsection*{Lista wersji}
\begin{description}
\item[Wersja 0.1] - 8.04.2012 - Kowalski Piotr - pierwsza wersja dokumentu, wymagajaca
dalszych uzupe lnień oraz
,
testów na Windows
\item[Wersja 0.2] - 13.04.2012 - Kowalski Piotr - druga wersja z uzupe lniona, instalacja, dla systemów Windows
\item[Wersja 0.3] - 20.04.2012 - Kowalski Piotr - trzecia wersja z dorzuconymi zrzutami ekranu z instalacji w
Windows7.
\end{description}
\newpage
\tableofcontents
\newpage
\section{Czym jest Sweave}
Sweave\index{Sweave} jest narzedziem
do generowania plików tex zawierajacych
obliczenia, grafiki i wiele innych
,
,
obiektów wytworzonych przez przez pakiet R. Umozliwia dynamiczne tworzenie raportów i jest przyk ladem tzw. ''
programowania objaśniajacego
''\index{Programowanie objaśniajace}\footnote{ang.
literate programming}. Dla nas
,
,
jest to jednak sposób na stworzenie inteligentnego dokumentu, który potrafi generować losowości i liczyć dla nas
wyniki. Jest to równiez narzedzie
pozwalajace
na proste wstrzykiwanie skomplikowanych grafik i wykresów do fachowo
,
,
z lozonych dokumentów \LaTeX.
W ponizszym instruktazu zak ladam milczaco,
ze uzytkownik posiada podstawowa, znajomość zarówno pakietu R jak i
,
jezyka
\LaTeX. Podobnie za lozone jest posiadanie zainstalowanej lokalnie instancji pakietu R oraz posiadanie
,
środowiska i edytora do pisania dokumentów \TeX.
\section{Instalacja Sweave}
W stan obecny pakiet Sweave stanowi wbudowana, cześć
pakietu R-cran i jest domyślnie z nim instalowany. W przypadku
,
systemów unixowych po instalacji utworzony powinien zostać skrypt
w \slash usr\slash bin\slash R co czyni go ogólnodostepnym
dla innych programów w systemie. W przypadku systemów
,
z rodziny Windows, podobne powinno zostać zrealizowane poprzez do laczenie
folderu bin z pakietu R to zmiennej
,
globalnej PATH. W przypadku, gdy takie dopisanie nie zosta lo zrealizowane, zaleca sie, przeprowadzenie tego recznie.
,
W przypadku instalacji na Windows nalezy jeszcze do laczyć
pakiet stylu do źróde l kompilacyjnych Latexa.
,
\subsection{Automatyzacja kompilacji Sweave}
W zalezności od, stosowanego przez uzytkownika, edytora \LaTeX róznie przebiega proces uruchomienia automatycznego
generowanie plików pdf w sposób automatyczny. W skrócie sprowadza sie, to zdefiniowania w lasnej komendy kompilacji,
która powinna wygladać
mniej wiecej
w sposób nastepuj
acy:
,
,
,
,
\begin{verbatim}
R CMD Sweave %.rnw
\end{verbatim}
Zaprezentowana powyzej komenda powinna dzia lać w wiekszości
systemów unixowych i w dowolnym z edytorów. Sprawdzenia
,
uzyto z wykorzystaniem edytora \TeX Maker\index{\TeX Maker} 3.0.2 oraz:
\begin{verbatim}
25
$ tex --version
TeX 3.1415926 (TeX Live 2009/Debian)
\end{verbatim}
\subsubsection{Automatyzacja kompilacji dla \TeX Maker}
Miejscem przeznaczonym do umieszczenia komendy jest panel komend uzytkownika znajdujacy
sie, w menu User->User
,
commands -> Edit user commands. Zgodnie z mozliwościami programu komenda to moze zostać rozwinieta
tak, aby obs luzyć
,
a, plików
ca lość procesu tworzenia dokumentu co mozna obserwować ponizej.\footnote{evince jest lekka, przegladark
,
pdf}
\begin{verbatim}
R CMD Sweave %.rnw |
pdflatex -synctex=1 -interaction=nonstopmode %.tex |
evince %.pdf
\end{verbatim}
\begin{figure}[hb]\centering\includegraphics[scale=0.5]{../images/texmaker_Sweave.png}\caption{Konfiguracja Sweave
dla texmaker}\label{install.texmaker}
\end{figure}
\subsubsection{Automatyzja kompilacji dla Miktex 2.9, LEd na platformie Windows}
Proces ustanowienia automatyzacji jest bardziej skomplikowany na systemach Windows. Prezentowane jest tutaj rozwiazanie
,
dla popularnego duetu Latexowego czyli Miktex+LEd\index{Miktex}\index{LEd}. Proces tej automatyzacji jest trzy
krokowy i powinien wygladać
podobnie dla innych środowisk kompilacji \LaTeX.
,
\subsubsection*{Udostepnie
pakietu R w linii komend}
,
Aby proces kompilacji móg l wykorzystać R, aplikacja ta musi być dobrze rozpoznawana w ca lym systemie operacyjnym.
Aby sprawdzić czy tak faktycznie jest wystarczy uruchomić program linii komend i wpisać w nim R + enter. Jeśli
program jest dobrze znany, to powinien sie, uruchomić i w linii komend powinna być mozliwość wykonywana poleceń
jego jezyka.
Jeśli natomiast pojawi sie, komunikat, ze ta nazwa/program nie jest znany, to opisuje tutaj sposób
,
naprawienia tego faktu.
Najpierw nalezy odszukać ściezke, do podkatalogu bin znajdujacego
sie, w katalogu z instalacja, R. Domyślnie ma ona
,
postać
''C:\textbackslash\textbackslash Program Files\textbackslash R\textbackslash R-X.XX.X\textbackslash bin''. Trzeba
nakazać programom zapoznać sie, z programami tam znajdujacymi
sie.
W systemach Windows istnieje specjalny zestaw
,
,
zmiennych, które sa, dostepne
do odczytu wszystkim programom w systemie operacyjnym. Sa, to tzw. zmienne środowiskowe.
,
Wśród tych zmiennych jest jedna z nich nazywana PATH, i zawiera ona wszystkie katalogi w których znajduja, sie,
programy, które maja, być dostepne
dla wszystkich innych programów.
,
PPM na ikone, Mój komputer i przejść do w laściwości.
Aby otrzymać dostep
do zmiennych środowiskowych nalezy kliknać
,
,
Wyświetli sie, okno \ref{screen.win7.ustawienia}. W zaawansowanych ustawieniach systemu odszukać przycisk zmiennych
środowiskowych\index{Zmienne środowiskowe} (ang. enviromental variables) jak na obrazie \ref{screen.win7.zmienne}
. W nastepnej
kolejności nalezy odszukać zmienna, PATH i kliknać
jej edycje.
UWAGA. Nie nalezy niczego kasować
,
,
,
z tej zmiennej. Usuniecie
jej zawartości moze spowodować uszkodzenie systemu operacyjnego. Nalezy na końcu wartości
,
tej zmiennej (obrazek \ref{screen.win7.path}) postawić znak ';' oraz wkleić ściezke, do katalogu bin. Oznacza to,
ze na koniec zmiennej PATH powinien zostać doklejony frgament o postaci np. ;C:\textbackslash\textbackslash Program
Files\textbackslash R\textbackslash R-X.XX.X\textbackslash bin .
Po zakończeniu edycji nalezy zapisać wartość zmiennej i dokonać sprawdzenia w \textbf{nowo otwartym oknie linii
komend} sprawdzajac,
tak jak na poczatku,
czy program R sta l sie, widoczny w systemie.
,
,
\begin{figure}\centering\includegraphics[scale=0.45]{../images/ustawienia.jpeg}\caption{Zaawansowane ustawienia
systemu w Win7}\label{screen.win7.ustawienia}
\end{figure}
\begin{figure}\centering\includegraphics[scale=0.45]{../images/okno_zmienne.jpeg}\caption{Zmienne środowiskowe
systemu w Win7}\label{screen.win7.zmienne}
\end{figure}
\begin{figure}\centering\includegraphics[scale=0.45]{../images/okno_edycja.jpeg}\caption{Zmienne środowiskowe
systemu w Win7}\label{screen.win7.path}
\end{figure}
\subsubsection*{Import sk ladni Sweave}
W procesie kompilacji pliku tex, kompilator Latexa wymagać Cie, bedzie
informacji o sk ladni zwiazanej
z pakietem
,
,
Sweave. W naszym wypadku tym kompilatorem jest platforma Miktex. Musimy zatem poinformować platforme, gdzie moze
odszukać ona plik Sweave.sty. Zwyczajowo ściezka ta ma postać '' C:\textbackslash\textbackslash Program Files\textbackslash
R\textbackslash R-2.15.0\textbackslash share\textbackslash texmf ''. Nalezy uruchomić Miktex(Admin) -> Settings
26
i w drugiej zak ladce zawierajacej
''katalogi zarzadzane
przez Miktex'' dodać nowy o ściezce podobnej do powyzszej
,
,
(patrz rysunek \ref{screen.win7.miktex}). Po zapisaniu ustawień styl Sweave.sty powinien być dostepny
w procesie
,
kompilacji latex.
\begin{figure}\centering\includegraphics[scale=0.25]{../images/miktex.jpeg}\caption{Zmienne środowiskowe systemu
w Win7}\label{screen.win7.miktex}
\end{figure}
\subsubsection*{Automatyczny skrypt kompilacji}
Podobnie jak \TeX Maker równiez i LEd udostepnia
w lasne skrypty kompilacyjne. Po lewo na pasku znajduje sie, 5
,
kolejnych przycisków o nazwie U. Po najechaniu na nie pojawia sie, informacja, ze wciśniecie przycisku powoduje
wykonanie pliku userX.bat , gdzie pod X jest liczba od 1 do 5. To w laśnie jeden z tych skryptów powinien zostać
uzyty do wykonywania naszego procesu kompilacji. Ponizej podaje postać tego skryptu
\begin{verbatim}
cd %1
R CMD Sweave %2.rnw
pdflatex.exe %2.tex
\end{verbatim}
Pod $\%1$ ukrywa sie, katalog w którym znajduje sie, plik źród lowy, pod $\%2$ natomiast jego nazwa bez rozszerzenia.
Aby zautomatyzować proces kompilacji w LEd nalezy powyzsza, treść umieścić w pliku np. user1.bat, który znajduje
sie, domyślnie w katalogu: ''C:\textbackslash\textbackslash Program Files\textbackslash LEd\textbackslash Batches.
Po wykonaniu tego pod odpowiednim przyciskiem U odbywać sie, bedzie
proces kompilacji Sweave$+$pdflatex.
,
UWAGA. W systemach Windows Vista oraz późniejszych nie mozna bezpośrednio edytować, a dok ladniej zapisywać, do
plików systemowych. W takim wypadku nalezy plik userX.bat przenieść np. na swój pulpit, edytować a dopiero nastepnie
,
przenieść go z~powrotem do katalogu Batches.
\subsection{Zasada dzia lania Sweave}
kod
Ponizszy diagram prezentuje zasade, dzia lania procesu kompilacji dokumentu Rnw\index{Plik rnw} zawierajacego
,
dla pakietu Sweave. W pierwszej cześci
procesu plik rnw. t lumaczony jest na plik \TeX owski oraz eksportowane
,
sa, wszystkie wykresy. W dalszej cześci
nastepuje
kompilacja programu pdflatex. Ca lość prezentuje diagram \ref{diag.sweave.compile}
,
,
%% programowanie obrazkow w LaTeXu
\begin{figure}
\centering
\begin{picture}(240,50)(10,-20)
\put(0,0){\framebox(40,20){$\%$.rnw}}
\put(40,10){\vector(1,0){80}}
\put(45,20){Sweave $\%$.rnw}
\put(120,0){\framebox(40,20){$\%$.tex}}
\put(160,10){\vector(1,0){80}}
\put(165,20){pdflatex $\%$.tex}
\put(240,0){\framebox(40,20){$\%$.pdf}}
\end{picture}
\caption{Proces kompilacji Sweave}
\label{diag.sweave.compile}
\end{figure}
\section{Programowanie w Sweave}
W tej cześci
skupimy sie, na umówieniu bloków Sweave. Wszystko co nie jest blokiem Sweave jest przez pierwszy proces
,
kompilacji zwyczajnie kopiowane do pliku .tex. Plik .rnw po prawdzie nie rózni sie, niczym od zwyczajnego dokumentu
\LaTeX gdyby nie do laczone
wstawki. Proces tworzenia takiego dokumentu nalezy zaczać
podobnie jak w przypadku
,
,
pisania zwyczajnego pliku latexowego.
\subsection{Podstawowy blok Sweave}
W Sweave do tworzenia bloków uzywa sie, specjalnego rodzaju bloku wygladaj
acego
nastepuj
aco\index{Blok
Sweave}
,
,
,
,
\input{verbatim1} %% jedyny sposób by ukryć kawa lek tekstu przed Sweave tak aby ten w nim nie d luba l
W miejscu name umieścić mozna zarówno nazwe, w lasna, dla bloku jak i szereg parametrów
Na przyk lad:
\begin{Schunk}
27
\begin{Soutput}
<<>>=
x=c(1,2,3)
x^2
@
\end{Soutput}
\end{Schunk}
Wyprodukuje
\begin{Schunk}
\begin{Sinput}
> x=c(1,2,3)
> x^2
\end{Sinput}
\begin{Soutput}
[1] 1 4 9
\end{Soutput}
\end{Schunk}
W bloku mozna wykonywać dowolne komendy jezyka
R. W miare, rozwoju tego dokumentu obserwować bedziemy,
ze uzycie
,
,
niektórych wyników jest trudniejsze niz reszty.
\subsubsection{Parametry bloku}
Blok moze posiadać wiele róznych parametrów, zebranych w tabeli \ref{table.block.paramas}\index{Blok Sweave!parametry}.
\begin{table}
\centering
\begin{tabular}{| c | p{12cm} |}\hline
echo\index{Blok Sweave!echo} & TRUE-pokazuje komende, wykonania, FALSE - ukrywaja\\\hline
,
fig\index{Blok Sweave!fig} & TRUE-przekazuje wykres do umieszczenia - FALSE - ukrywa wykresy\\\hline
eval\index{Blok Sweave!eval} & ustala czy wyniki sa, obliczane \\\hline
results\index{Blok Sweave!results} & opcje: verbatim,tex,hide - to rózne tryby wyświetlania \\\hline
engine\index{Blok Sweave!engine} & ustala narzedzie
do przetwarzania w Sweave: S, R, S3 or S4 \\\hline
,
split\index{Blok Sweave!split} & ustala podzia l pliku wynikowego, wartość TRUE oznacza istnienie podzia lu\\\hline
label\index{Blok Sweave!label} & podaje nazwe, pliku wynikowego, jest równiez etykieta, dla bloku\\\hline
\end{tabular}
\caption{Podsumowanie parametrów bloku}
\label{table.block.paramas}
\end{table}
Pokazemy to na przyk ladzie ponizszego kodu:
\begin{Schunk}
\begin{Soutput}
<<param=value>>=
x=c(1,2,3)
x
@
\end{Soutput}
\end{Schunk}
Przy w laczonym
echo:
,
\begin{Schunk}
\begin{Sinput}
> x=c(1,2,3)
> x
\end{Sinput}
\begin{Soutput}
[1] 1 2 3
\end{Soutput}
\end{Schunk}
i wy laczonym:
,
\begin{Schunk}
\begin{Soutput}
[1] 1 2 3
\end{Soutput}
\end{Schunk}
28
Przy w laczonym
eval:
,
\begin{Schunk}
\begin{Sinput}
> x=c(1,2,3)
> x
\end{Sinput}
\begin{Soutput}
[1] 1 2 3
\end{Soutput}
\end{Schunk}
i wy laczonym:
,
\begin{Schunk}
\begin{Sinput}
> x=c(1,2,3)
> x
\end{Sinput}
\end{Schunk}
Przy results verbatim:
\begin{Schunk}
\begin{Sinput}
> x=c(1,2,3)
> x
\end{Sinput}
\begin{Soutput}
[1] 1 2 3
\end{Soutput}
\end{Schunk}
results tex:
\begin{Schunk}
\begin{Sinput}
> x=c(1,2,3)
> x
\end{Sinput}
\begin{Soutput}
[1] 1 2 3
\end{Soutput}
\end{Schunk}
results hide:
\begin{Schunk}
\begin{Sinput}
> x=c(1,2,3)
> x
\end{Sinput}
\begin{Soutput}
[1] 1 2 3
\end{Soutput}
\end{Schunk}
\subsection{Blok linijkowy Sweave}
Mozliwe jest równiez uzywanie R do wype lniania tekstów linijkowych\index{Blok Sweave!linijkowy}. Np. Pierwiastek
z 2: $\sqrt{2} = 1.4142135623731$.
do wykonania tego potrzebny jest blok $\backslash Sexpr\{\cdot\}$. Blok ten wyświetla zawsze pojedynczy element,
pierwszy w wektorze odpowiedzi. Dla sygna lu $\backslash Sexpr\{c(1,2,3)\}$ otrzymujemy bowien $1$
\subsection{Powtarzanie bloków}
Uzycie konstrukcji
\begin{Schunk}
\begin{Soutput}
<<>>=
\end{Soutput}
\end{Schunk}
Jest niczym innym jak przypisaniem. Standardowy blok jest anonimowy. Mozna jednak nadać im nazwy.
\begin{Schunk}
29
\begin{Soutput}
<<A>>=
x=c(1,2,3)
@
\end{Soutput}
\end{Schunk}
\begin{Schunk}
\begin{Sinput}
> x=c(1,2,3)
\end{Sinput}
\end{Schunk}
Najwazniejsza, zaleta, tego rozwiazania
jest mozliwość wielokrotnego uzycia tych samych bloków
,
\begin{Schunk}
\begin{Soutput}
<<>>=
<<A>>
<<A>>
@
\end{Soutput}
\end{Schunk}
\begin{Schunk}
\begin{Sinput}
> x=c(1,2,3)
> x=c(1,2,3)
\end{Sinput}
\end{Schunk}
\subsection{Ukrywanie fragmentu kodu przed Sweave}
Skomplikowanym procesem jest ukrywanie kawa lków pliku przed byciem przeprocesowanym przez Sweave. Okazuje sie,
jednak, ze jest prosty sposób na ukrycie fragmentów kodu przed byciem przegladanym
przez Sweave. Wystarczy ukryć
,
je w innym pliku. Sweave procesuje jedynie pojedynczy plik, wiec
jeśli niechcemy aby jakiś fragment naszego nie
,
bra l w nim udzia lu wystarczy umieścić go w osobnym pliku i kazać latexowi uzyć go w nastepnym
etapie
,
\begin{verbatim}
\input{ukryte1}
\end{verbatim}
gdzie plik ukryte1.tex zawiera rzeczy nie procesowane przez Sweave.
Kiedy naleza loby zadbać o nie procesowanie takiego fragmentu? Np. gdy móg lby zawierać bloki Sweave, które nie
powinny być interpretowane. Sweave ponadto czesto
nadmiernie miesza w kodzie usuwajac
komentarze, z lamania linii
,
,
itp. Równiez zwyczajny znak $@$ stojacy
samotnie jest z regu ly przez Sweave usuwany jako znak komentarza w plikach
,
.rnw. Generalna, zasada, jest aby duze fragmenty nie wymagajace procesowania w Sweave nie poddawać temu procesowi.
W przypadkach bardziej skomplikowanych dokumentów o wieloplikowej architekturze, moze to nawet oznaczać konieczność
napisanie odpowiednika pliku makefile dla procesu kompilacji.
Innym potencjalnym sposobem\footnote{Nie by l sprawdzany przeze mnie} jest przekazanie do parametrów Sweavea by
ten do laczy
l kod przekazany do parsera, co osiaga
sie, komenda,
,
,
\begin{verbatim}
\SweaveOpts{keep.source=TRUE}\end{verbatim}
Jeszcze innym sposobem jest oszukanie Sweave, aby ten sam wytworzy l to co powinien zastać \LaTeX :
\input{verbatim2}
Co daje ponizszy wynik:
\begin{verbatim}
<<>>=
getwd()
@
\end{verbatim}
\subsection{Grafika w Sweave}
Pojedynczy blok potrafi zwrócić pojedynczy wykres, do czego wystarczy uruchomienia parametru fig w bloku Sweave
\index{Grafika}\index{Grafika!plot}
\begin{Schunk}
\begin{Sinput}
30
> x=seq(0,10,by=0.01)
> plot(x,sin(x),'l')
\end{Sinput}
\end{Schunk}
\includegraphics{../genplots/plot-018}
Najwazniejsza, rzecza, przy wykorzystaniu Sweave do tworzenia grafik jest, to aby pamietać
by pojedynczy blok posiada l
,
nie mniej nie wiecej
a dok ladnie jeden wykres. Do wykresów mozna przekazywać dowolne parametry obs lugiwane przez
,
R.
Mozna uzyć dodatkowych parametrów. Takim parametrem jest np. Gin odpowiadajacy
skalowaniu wykresów
,
\begin{Schunk}
\begin{Soutput}
\setkeys{Gin}{width=0.7\textwidth}
\end{Soutput}
\end{Schunk}
Gin = 1.7
\setkeys{Gin}{width=1.7\textwidth}
\begin{Schunk}
\begin{Sinput}
> x=seq(0,10,by=0.01)
> plot(x,sin(x),'l')
\end{Sinput}
\end{Schunk}
\includegraphics{../genplots/plot-jeden}
Gin = 0.7
\setkeys{Gin}{width=0.7\textwidth}
\begin{Schunk}
\begin{Sinput}
> x=seq(0,10,by=0.01)
> plot(x,sin(x),'l')
\end{Sinput}
\end{Schunk}
\includegraphics{../genplots/plot-dwa}
Gin = 0.2
\setkeys{Gin}{width=0.2\textwidth}
\begin{Schunk}
\begin{Sinput}
> x=seq(0,10,by=0.01)
> plot(x,sin(x),'l')
\end{Sinput}
\end{Schunk}
\includegraphics{../genplots/plot-trzy}
\setkeys{Gin}{width=2.4\textwidth}
\subsubsection{Etykietowanie + grafika}
Niestety niewiele mozna zrobić z grafika,
dopóki nie bedzie
mozna jej skalować i specjalnie umieszczać w dokumencie.
,
,
Twórcy sweave przyszli jednak z pomocna, d lonia, dla osób, które nie lubia, zostawiać wszystkiego dla Sweave. Jeśli
to ta nazwa uzyta zostanie do utworzenia pliku z grafika, tego bloku. Lacz
blok sweave posiada etykiete, z nazwa,
ac
,
,
,
to z opcja,
\SweaveOpts{include=FALSE}pozwala to uzytkownikowi tworzyć i dowolnie do laczać
wykresy do dokumentu. Przyk ladowo,
,
jeśli blok ponizszy blok posiada etykiete, test
\setkeys{Gin}{width=2.4\textwidth}
\includegraphics{../genplots/plot-test}
to plik \footnote{Po uwzglednieniu
prefiksu} wygladać
bedzie
nastepuj
aco:
"genplots/plot-test.pdf".
,
,
,
,
,
\subsubsection{Opcje eksportu grafiki}
Na R mozna wymusić aby grafiki by ly eksportowane do podfolderu zamiast w g lównym drzewie. Uzyskuje sie, to opcja:\index{Kompilacja
,
parametry!parametry}\index{Kompilacja parametry!eksport wykresów}
\begin{verbatim}
\SweaveOpts{prefix.string=podkatalog/prefix}
\end{verbatim}
Co spowoduje eksport wykresów do 'podkatalogu' i rozpoczecie
nazwy kazdego pliku z uzyciem 'prefix'
,
31
\section{Przyk lady}
\subsection{Przyk ladowy plik rnw}
\begingroup
\fontsize{6pt}{9pt}\selectfont
\input{rnw_version}
\endgroup
\subsubsection{Plik bibliografia.bib}
\begingroup
\fontsize{6pt}{9pt}\selectfont
\input{bib_version}
\endgroup
\subsection{Przyk ladowy plik tex}
\begingroup
\fontsize{6pt}{9pt}\selectfont
\input{tex_version}
\endgroup
\subsection{Prezentacja Sweave}
\newpage
\listoffigures
\listoftables
\printindex
\nocite{*}
\bibliographystyle{plain}
\bibliography{bibliografia}
\end{document}
4.3
Prezentacja Sweave
\documentclass[hyperref={pdfpagemode=FullScreen}]{beamer}
\usepackage{amsmath}
\usepackage{amsthm}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{textcomp}
\usepackage[utf8]{inputenc}
\usepackage{color}
\usepackage{polski}
\usepackage{graphicx}
\usepackage{makeidx}
\usetheme{Berkeley}
\usepackage{hyperref}
\hypersetup{urlColor=blue,pdflatex}
%\usepackage{ucs}
\author{mgr inz. Piotr Kowalski}
\title{Wprowadzenie do Sweave}
\makeindex
\usepackage{Sweave}
\begin{document}
\begin{frame}
\maketitle
\end{frame}
\begin{frame}
\frametitle{Agenda}
\tableofcontents
\end{frame}
32
\section{Blok Sweave}
\begin{frame}[containsverbatim]{Blok Sweave}
<<echo=T,eval=TRUE>>=
x=2*3;x
@
\end{frame}
\section{Grafika w Sweave}
%\SweaveOpts{engine=R,eps=FALSE,pdf=TRUE,strip.white=all}
%\SweaveOpts{prefix=TRUE,prefix.string=fig-,include=TRUE}
\setkeys{Gin}{width=0.7\textwidth}
\begin{frame}{Grafika w Sweave}
\begin{figure}
<<echo=FALSE,fig=TRUE,eval=TRUE>>=
x=seq(0,10,by=0.01)
plot(x,sin(x),'l')
@
\end{figure}
\end{frame}
\end{document}
33
Spis rysunków
1
2
3
4
5
6
7
8
9
10
Konfiguracja Sweave dla texmaker . . . . .
Zaawansowane ustawienia systemu w Win7
Zmienne środowiskowe systemu w Win7 . .
Zmienne środowiskowe systemu w Win7 . .
Zmienne środowiskowe systemu w Win7 . .
Proces kompilacji Sweave . . . . . . . . . .
Wykres przy Gin = 1.7 . . . . . . . . . . .
Wykres przy Gin = 0.7 . . . . . . . . . . .
Wykres przy Gin = 0.2 . . . . . . . . . . .
Wykres z etykieta, . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
5
6
7
7
8
9
14
15
15
16
Podsumowanie parametrów bloku . . . . . . . . . . . . . . . . . .
10
Spis tabel
1
34