From 87dd8b0428ecf409f4955a981f26875f994d67ad Mon Sep 17 00:00:00 2001 From: "elisabetta.ronchiri@gmail.com" <elisabetta.ronchiri@gmail.com> Date: Thu, 23 Feb 2017 05:14:14 +0100 Subject: [PATCH] added materials --- parteII/Esercizio7.Rmd | 71 +++ parteII/Esercizio7.pdf | Bin 194333 -> 194333 bytes parteII/Parte.II.FG.pdf | Bin 597668 -> 597684 bytes parteII/Parte.II.FG.tex | 961 ++++++++++++++++++++++++++++++++++++++++ parteII/aapl_prezzi.R | 20 + parteII/aapl_prezzi.csv | 10 + 6 files changed, 1062 insertions(+) create mode 100644 parteII/Esercizio7.Rmd create mode 100644 parteII/Parte.II.FG.tex create mode 100644 parteII/aapl_prezzi.R create mode 100644 parteII/aapl_prezzi.csv diff --git a/parteII/Esercizio7.Rmd b/parteII/Esercizio7.Rmd new file mode 100644 index 0000000..2be059b --- /dev/null +++ b/parteII/Esercizio7.Rmd @@ -0,0 +1,71 @@ +--- +title: "Esercizio7" +author: "Elisabetta Ronchieri" +date: "28 November 2016" +output: + html_document: default + pdf_document: default + word_document: default +--- + +# Leggere il file csv avente ; come carattere separatore. + +```{r} +df<-read.csv("aapl_prezzi.csv",sep=";",as.is=T) +str(df) +df +``` + +# Convertire il componente **Date** del data frame **df** da carattere a Date. + +```{r} +df$Date<-as.Date(df$Date,"%b %d, %Y") +str(df) +df +``` +\newpage + +# Graficare i dati. + +Argomento _xaxt="n"_ rimuove l'asse x. + +```{r} +plot(Open~Date,data=df,xaxt="n",type='l',col='red',ylab="",xlab="") +``` + +\newpage +Argomento: + +* _srt=90_ ruota le etichette degli assi di 90 gradi; +* _xpd=TRUE_ specifica dove un oggetto puo' essere visualizzato; +* _cex=.7_ indica di quanto il testo deve essere scalato rispetto al valore di default. + +```{r} +plot(Open~Date,data=df,xaxt="n",type='l',col='red',ylab="",xlab="") +text(x=df$Date,par('usr')[3]-1.2,labels=paste(df$Date,' '),srt=90,pos=1,xpd=TRUE,cex=.7) +``` + +\newpage + +```{r} +plot(Open~Date,data=df,xaxt="n",type='l',col='red',ylab="",xlab="") +text(x=df$Date,par('usr')[3]-1.2,labels=paste(df$Date,' '),srt=90,pos=1,xpd=TRUE,cex=.7) +lines(Close~Date,data=df,type='l',col='blue') +lines(High~Date,data=df,type='l',col='green') +lines(Low~Date,data=df,type='l',col='black') +``` + +\newpage + +_bottomleft_ e' un termine chiave che permette di visualizzare la legenda in basso a sinistra. + +```{r} +plot(Open~Date,data=df,xaxt="n",type='l',col='red',ylab="",xlab="") +text(x=df$Date,par('usr')[3]-1.2,labels=paste(df$Date,' '),srt=90,pos=1,xpd=TRUE,cex=.7) +lines(Close~Date,data=df,type='l',col='blue') +lines(High~Date,data=df,type='l',col='green') +lines(Low~Date,data=df,type='l',col='black') +legend("bottomleft",c("Open","Close","High","Low"),col=c("red","blue","green","black"),lwd=1) +``` + +Modificare il grafico finale utilizzando gli altri [termini chiave](http://www.sthda.com/sthda/RDoc/figure/graphs/add-legend-to-plot-legend-positions.png) che indicano la posizione della legenda sul grafico. \ No newline at end of file diff --git a/parteII/Esercizio7.pdf b/parteII/Esercizio7.pdf index 2e19a00e18a5389e0d831ececafff0c572999e4d..85705cf6ac5152d7e59edae61c1ed31c1e22026c 100644 GIT binary patch delta 280 zcmbRHj(hGq?hSv16irPH49qpT^nLSFToOxC6*OF|j0_CT4UCM848d}f1*|<brwMNq zCQ@mGdOi_KHw##=6D7{XX7#{!^+3k$>VZtHb6A0HGBlXJ@hy`agt`67Tc(#B&Tei_ rF2<IY7M6yNPUdE=W(LMaZf=HV2Bszk7Dld)=5`7;gp^GC&Lj%}ScOTU delta 280 zcmbRHj(hGq?hSv16palnj7&7S^nLSFToOxC6*OF|j0_CT4UCM848d}f1*|<brwMNq z1}iniqtq0vv_U<e2&J0^tk;PWXJWH@V7q!C<978xrq(&EAU9b|-}shE4#M1i<t@`o w4re1vXEzro6Ekx&3r9mIM^`r|BU4vLV@C^1Q#VU9GZ#Ar8$wE^eP@yd0C@jOPXGV_ diff --git a/parteII/Parte.II.FG.pdf b/parteII/Parte.II.FG.pdf index 53bb57032e6b8fc24e506989716834a43d206421..8ab36f270151308035e19b825dfcfb258855b938 100644 GIT binary patch delta 35221 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 ShU_`~(4nxRqVY--;r{`?XbuJd delta 35147 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 diff --git a/parteII/Parte.II.FG.tex b/parteII/Parte.II.FG.tex new file mode 100644 index 0000000..082b3a0 --- /dev/null +++ b/parteII/Parte.II.FG.tex @@ -0,0 +1,961 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Beamer Presentation +% LaTeX Template +% Version 1.0 (10/11/12) +% +% This template has been downloaded from: +% http://www.LaTeXTemplates.com +% +% License: +% CC BY-NC-SA 3.0 (http://creativecommons.org/licenses/by-nc-sa/3.0/) +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%---------------------------------------------------------------------------------------- +% PACKAGES AND THEMES +%---------------------------------------------------------------------------------------- + +\documentclass{beamer} + +\mode<presentation> { + +% The Beamer class comes with a number of default slide themes +% which change the colors and layouts of slides. Below this is a list +% of all the themes, uncomment each in turn to see what they look like. + +%\usetheme{default} +%\usetheme{AnnArbor} +%\usetheme{Antibes} +%\usetheme{Bergen} +%\usetheme{Berkeley} +%\usetheme{Berlin} +%\usetheme{Boadilla} +%\usetheme{CambridgeUS} +%\usetheme{Copenhagen} +%\usetheme{Darmstadt} +%\usetheme{Dresden} +%\usetheme{Frankfurt} +%\usetheme{Goettingen} +%\usetheme{Hannover} +%\usetheme{Ilmenau} +%\usetheme{JuanLesPins} +%\usetheme{Luebeck} +\usetheme{Madrid} +%\usetheme{Malmoe} +%\usetheme{Marburg} +%\usetheme{Montpellier} +%\usetheme{PaloAlto} +%\usetheme{Pittsburgh} +%\usetheme{Rochester} +%\usetheme{Singapore} +%\usetheme{Szeged} +%\usetheme{Warsaw} + +% As well as themes, the Beamer class has a number of color themes +% for any slide theme. Uncomment each of these in turn to see how it +% changes the colors of your current slide theme. + +%\usecolortheme{albatross} +%\usecolortheme{beaver} +%\usecolortheme{beetle} +%\usecolortheme{crane} +%\usecolortheme{dolphin} +%\usecolortheme{dove} +%\usecolortheme{fly} +%\usecolortheme{lily} +%\usecolortheme{orchid} +%\usecolortheme{rose} +%\usecolortheme{seagull} +%\usecolortheme{seahorse} +%\usecolortheme{whale} +%\usecolortheme{wolverine} + +%\setbeamertemplate{footline} % To remove the footer line in all slides uncomment this line +%\setbeamertemplate{footline}[page number] % To replace the footer line in all slides with a simple slide count uncomment this line + +%\setbeamertemplate{navigation symbols}{} % To remove the navigation symbols from the bottom of all slides uncomment this line +} + + +\usepackage{graphicx} % Allows including images +\usepackage{booktabs} % Allows the use of \toprule, \midrule and \bottomrule in tables +\usepackage{listings} +\usepackage{amsmath} + +%---------------------------------------------------------------------------------------- +% TITLE PAGE +%---------------------------------------------------------------------------------------- + +\title[Parte II]{Parte II - Rappresentazione grafica} % The short title appears at the bottom of every slide, the full title is only on the title page + +\author{Elisabetta Ronchieri} % Your name +\institute[] % Your institution as it will appear on the bottom of every slide, may be shorthand to save space +{ +INFN CNAF \\ +\medskip +e-mail: \textit{elisabetta.ronchieri@cnaf.infn.it} % Your email address +} +\date{22 Febbraio 2017} % Date, can be changed to a custom date + + + +\begin{document} + +\begin{frame} +\titlepage % Print the title page as the first slide +\end{frame} + +\begin{frame} +\frametitle{Contenuti} % Table of contents slide, comment this block out to remove it +\tableofcontents % Throughout your presentation, if you choose to use \section{} and \subsection{} commands, these will automatically be printed on this slide as an overview of your presentation +\end{frame} + +%---------------------------------------------------------------------------------------- +% PRESENTATION SLIDES +%---------------------------------------------------------------------------------------- + +%------------------------------------------------ +\section{Introduzione} % Sections can be created in order to organize your presentation into discrete blocks, all sections and subsections are automatically printed in the table of contents as an overview of the talk +%------------------------------------------------ + +%Finestra grafica +% Funzioni di alto livello per variabili qualitative, quali barplot, pie, plot +% Funzioni di alto livello per variabili quantitative, quali hist, boxplot, qqplot, qqnorm +%- Funzioni di basso livello, quali abline, axis, legend, colors + +%\begin{frame} +%\frametitle{Rappresentazione grafica} +%La rappresentazione grafica permette di visualizzare l'andamento di un fenomeno e la struttura di un insieme di dati tramite, ad esempio, figure, linee o segmenti, superfici o aree, solidi e simboli convenzionali.\\~\\ +% +%Mette in risalto i casi anomali, come picchi, imputabili ad errori nei dati o a casi particolari che vanno ulteriormente approfonditi.\\~\\ +% +%Permette di individuare andamenti interpolabili con funzioni matematiche, come la retta. \\~\\ +% +%Risulta sia utile che efficace se racchiude tutte le informazioni necessarie alla comprensione dei dati in essa contenuti. +%\end{frame} + +\begin{frame} +\frametitle{Componenti di un grafico} +I \textbf{dati} sono rappresentati in barre, linee, aree o punti.\\~\\ +Le \textbf{componenti di supporto} sono, ad esempio, il titolo del grafico, il titolo degli assi, le etichette degli assi, la unit\`a di misura dei dati, la griglia, la legenda, le etichette dei dati, la fonte dei dati. +\end{frame} + +\begin{frame} +\frametitle{Componenti di supporto} +Il \textbf{titolo del grafico} deve essere breve e coinciso, e pu\`o essere: +\begin{enumerate} +\item \textbf{informativo} contenente informazioni necessarie per comprendere i dati, in grado di rispondere alle domande \textbf{cosa}, \textbf{dove} e \textbf{quando} (per esempio, FTSE MIB Index da YAHOO - 19/11/2016). +\item \textbf{descrittivo} in grado di sintetizzare il messaggio rappresentato nel grafico dall'insieme dei dati (per esempio, Aumento di FTSE MIB Index da YAHOO in data 19/11/2016).\\~\\ +\end{enumerate} + +I \textbf{titoli degli assi} identificano le variabili rappresentate dagli assi.\\~\\ + +Le \textbf{etichette degli assi} identificano i valori rappresentati nel grafico.\\~\\ + +Vedere definizione di FTSE MIB: {\color{red}\url{http://www.financepractitioner.com/dictionary/ftse-mib}} +\end{frame} + + +\begin{frame} +\frametitle{Componenti di supporto} +La \textbf{unit\`a di misura} deve essere sempre specificata.\\~\\ +La \textbf{griglia} permette di agevolare la lettura e confronto dei dati (da aggiungere se necessario).\\~\\ +La \textbf{legenda} identifica simboli, tratteggi o colori usati per rappresentare i dati.\\~\\ + +Le \textbf{etichette dei dati} sono visualizzate sopra o vicino alle barre, aree o linee facilitando la lettura del grafico.\\~\\ + +La \textbf{fonte} fornisce la provenienza dei dati. +\end{frame} + + +\begin{frame} +\frametitle{Componenti di supporto} +Devono essere presenti solo se necessario, in particolare i titoli degli assi, le legende e le etichette.\\~\\ +Non devono prevalere sui dati: \`e preferibile usare linee pi\`u leggere per gli assi e griglia e linee pi\`u marcate per i dati.\\~\\ +La parte decorativa non deve allontanare l'attenzione del lettore dai dati. +\end{frame} + + + +\begin{frame}[fragile] +\frametitle{Insieme di dati} +Su Internet \`e possibile trovare svariati insiemi di dati, osservazioni di una o pi\`u variabili, ed usarli liberamente a fini scolastici e di ricerca.\\~\\ +%che identificano un certo fenomeno +Il pacchetto {\color{blue}datasets} di R ne mette a disposizione circa 90.\\~\\ +%Molti di questi possono essere usati nelle funzioni di R.\\~\\ +\begin{columns}[c] +\column{.4\textwidth} % Left column and width +Per vedere l'insieme dei dati basta digitare: +\begin{lstlisting}[language=R, showstringspaces=false, basicstyle=\footnotesize] +> library(help="datasets") +\end{lstlisting} +oppure la funzione {\color{blue}data()}. \\~\\ +Questa ultima permette anche di caricare uno specifico insieme di dati una volta passatole come argomento. \\~\ + +\column{.6\textwidth} % Right column and width +\begin{figure} +\centering +\includegraphics[width=6cm]{images/2/datasets} +\end{figure} +\end{columns} + + +\end{frame} + + +\section{Ambiente grafico} +\begin{frame} +\frametitle{Ambiente grafico} +R \`e dotato di un \textbf{ambiente grafico} per la creazione e visualizzazione di grafici in grado di \textbf{aiutare} l'utente nella fase di interpretazione dei dati e dei risultati di una qualche elaborazione statistica.\\~\\ + +I grafici sono di vario tipo ottenibili tramite la esecuzione di funzioni R modificabili dall'utilizzatore.\\~\\ + +L'ambiente grafico viene attivato automaticamente: +\begin{itemize} +\item ogni volta che si richiede l'esecuzione di una funzione grafica; +\item o in risposta ad una funzione ben precisa, come {\color{blue}windows()} per ambiente Windows, {\color{blue}X11()} per ambiente Linux e {\color{blue}quartz()} per ambiente Mac OS X (gi\`a eseguite dalle funzioni grafiche).\\~\\ +\end{itemize} + +Tuttavia i grafici possono essere dirottati direttamente su file nella directory di lavoro dell'utente tramite l'uso di opportune funzioni, quali {\color{blue}pdf()}, {\color{blue}jpeg()}, {\color{blue}postscript()}, {\color{blue}png()} e {\color{blue}bmp()}. +\end{frame} + +\begin{frame} +\frametitle{Esempi di grafici} +La funzione {\color{blue}demo()} riassume le potenzialit\`a offerte da questo ambiente.\\~\\ +\begin{figure} +\centering +\includegraphics[width=10cm]{images/2/demo} +\end{figure} +\end{frame} + +\begin{frame} +\frametitle{Esempi di grafici} +La funzione {\color{blue}demo()} con argomento {\color{blue}graphics} riassume le funzioni grafiche offerte dal pacchetto {\color{blue}graphics}.\\~\\ +\begin{figure} +\centering +\includegraphics[width=10cm]{images/2/demographics} +\end{figure} +Facendo precedere la funzione {\color{blue}demo()} da {\color{blue}par(ask=T)} \`e possibile visionare singolarmente le immagini presentate dalla dimostrazione digitando Invio per passare alla immagine successiva; altrimenti \`e necessario cliccare con il mouse sulla finestra grafica. +\end{frame} + + +\begin{frame} +\frametitle{Gruppi delle funzioni grafiche} +\begin{block}{Funzioni di alto livello} +creano un nuovo grafico sulla finestra grafica.\\~\\ +\end{block} +\begin{block}{Funzioni di basso livello} +aggiungono altre parti ad un grafico gi\`a esistente, come nuove linee, punti o oggetti grafici.\\~\\ +\end{block} +\begin{block}{Funzioni interattive} +consentono di aggiungere +interattivamente informazioni, o di estrarne, da un +grafico esistente. +\end{block} +\end{frame} + +\section{Funzioni di alto livello} + +\begin{frame} +\frametitle{Funzioni di alto livello} +Di seguito sono riportate alcune funzioni di alto livello. +\begin{table} +\begin{tabular}{l p{9.5cm} } +\toprule +\textbf{Funzione} & \textbf{Descrizione}\\ +\midrule +{\color{blue}barplot()} & Crea un grafico a colonne o a barre.\\ +{\color{blue}boxplot()} & Crea un grafico a scatola con baffi (o Box-and-whisker).\\ +{\color{blue}hist()} & Crea un istogramma. \\ +{\color{blue}dotchart()} & Crea un grafico di tipo Cleveland.\\ +{\color{blue}pie()} & Crea un grafico a torta.\\%: ad ogni variabile in esame si attribuisce una porzione di un settore circolare di un cerchio la cui ampiezza \`e proporzionale alla frequenza.\\ +{\color{blue}plot()} & Crea grafici di tipo diverso.\\ +{\color{blue}qqplot(x,y)} & Crea un grafico per confrontare due diverse distribuzioni.\\ +\bottomrule +\end{tabular} +%\caption{Funzioni di alto livello} +\end{table} +\end{frame} + + + + +\begin{frame} +\frametitle{Funzioni per la grafica 3D} +Di seguito sono riportate alcune funzioni di alto livello. +\begin{table} +\begin{tabular}{l p{9.5cm} } +\toprule +\textbf{Funzione} & \textbf{Descrizione}\\ +\midrule +{\color{blue}image()} & Visualizza grafici 3D usando diversi toni di colore per le altezze.\\ +{\color{blue}persp()} & Visualizza superfici a faccette piene.\\ +{\color{blue}contour()} & Rappresenta una superficie 3D tramite curve di livello. \\ +\bottomrule +\end{tabular} +%\caption{Funzioni per la grafica 3D} +\end{table} +\end{frame} + + +\begin{frame} +\frametitle{Funzione plot()} +\`E una funzione generica e produce grafici diversi in base al tipo di argomento a cui \`e riferita.\\~\\ + +\begin{table} +\tiny +\begin{tabular}{l l p{6cm} } +\toprule +\textbf{Funzione} & Oggetto &\textbf{Descrizione}\\ +\midrule +{\color{blue}plot(x,y)} & {\color{blue}x} e {\color{blue}y} vettori & Produce un grafico per punti o scatterplot di {\color{blue}x} verso {\color{blue}y} con {\color{blue}x} e {\color{blue}y} della stessa lunghezza.\\ +{\color{blue}plot(L)} & {\color{blue}L$\leftarrow$list(x,y)} lista & Produce un grafico per punti o scatterplot.\\ +{\color{blue}plot(M)} & {\color{blue}M$\leftarrow$cbind(x,y)} matrice & Produce un grafico per punti o scatterplot.\\ +&&\\ +\hline +&&\\ +{\color{blue}plot(v)} & {\color{blue}v} vettore & Produce un grafico dei valori del vettore nell'ordine degli elementi stessi. \\ +{\color{blue}plot(f)} & {\color{blue}f} fattore & Produce un barplot delle frequenze relative ai livelli di {\color{blue}f}.\\ +{\color{blue}plot(f,y)} & {\color{blue}f} fattore e {\color{blue}y} vettore& Produce un boxplot di {\color{blue}y} per ogni livello di {\color{blue}f} con {\color{blue}f} e {\color{blue}y} della stessa lunghezza.\\ +&&\\ +\hline +&&\\ +{\color{blue}plot(df)} & {\color{blue}df} data frame & Produce la matrice degli scatterplot di tutti i possibili accoppiamenti tra le variabili del dataframe.\\ +{\color{blue}plot($\sim$(x,y,z), data=df)}& {\color{blue}x}, {\color{blue}y} e {\color{blue}z} colonne di {\color{blue}df} & Produce la matrice degli scatterplot di tutti i possibili accoppiamenti tra le variabili {\color{blue}x}, {\color{blue}y} e {\color{blue}z}. Il simbolo $\sim$ si ottiene digitando Alt 126 sul tastierino numerico. +\\ + + +\bottomrule +\end{tabular} +%\caption{Esempi di funzione {\color{blue}plot()}} +\end{table} +\end{frame} + +\begin{frame}[fragile] +\frametitle{Funzione plot()} +A partire dall'insieme dei dati di nome {\color{blue}euro} fare il plot del vettore {\color{blue}euro} numerico. +\begin{lstlisting}[language=R, showstringspaces=false, keepspaces=true, basicstyle=\scriptsize] +> data(euro) +> str(euro) + Named num [1:11] 13.76 40.34 1.96 166.39 5.95 ... + - attr(*, "names")= chr [1:11] "ATS" "BEF" "DEM" "ESP" ... +> plot(euro) +\end{lstlisting} +\begin{columns}[c] +\column{.5\textwidth} % Left column and width +L'insieme dei dati {\color{blue}euro} contiene il valore di 1 Euro in tutte le monete dei paesi partecipanti alla unione monetaria Europea.\\~\\ +Vedere {\color{blue}\url{https://stat.ethz.ch/R-manual/R-devel/library/datasets/html/euro.html}} +\column{.5\textwidth} % Right column and width +\begin{figure} +\centering +\includegraphics[width=4cm]{images/2/europlot} +\end{figure} +\end{columns} + +\end{frame} + + + +\begin{frame}[fragile] +\frametitle{Funzione plot()} +A partire dall'insieme dei dati di nome {\color{blue}airquality} fare il plot di un vettore rispetto ad un altro. +\begin{lstlisting}[language=R, showstringspaces=false, keepspaces=true, basicstyle=\scriptsize] +> data(airquality) +> str(airquality) +'data.frame': 153 obs. of 6 variables: + ... + $ Temp : int 67 72 74 62 56 66 65 59 61 69 ... + $ Month : int 5 5 5 5 5 5 5 5 5 5 ... + ... +> plot(airquality$Month, airquality$Temp) +\end{lstlisting} +\begin{columns}[c] +\column{.6\textwidth} % Left column and width +L'insieme dei dati {\color{blue}airquality} contiene la misura della qualit\`a dell'aria giornaliera a New York, da Maggio a Settempre 1973. +Vedere {\color{blue}\url{https://stat.ethz.ch/R-manual/R-devel/library/datasets/html/airquality.html}} +\column{.4\textwidth} % Right column and width +\begin{figure} +\centering +\includegraphics[width=3.5cm]{images/2/airqualityplot} +\end{figure} +\end{columns} + +\end{frame} + + +\begin{frame}[fragile] +\frametitle{Funzione plot()} +Le seguenti istruzioni sono equivalenti. +\begin{lstlisting}[language=R, showstringspaces=false, keepspaces=true, basicstyle=\footnotesize] +> plot(airquality$Month, airquality$Temp) +> plot(Temp~Month, data=airquality) +\end{lstlisting} +\begin{columns}[c] +\column{.5\textwidth} % Left column and width +\begin{figure} +\centering +\includegraphics[width=5cm]{images/2/airqualityplot2} +\end{figure} +\column{.5\textwidth} % Right column and width +\begin{figure} +\centering +\includegraphics[width=5cm]{images/2/airqualityplot} +\end{figure} +\end{columns} +Cambiano i titoli degli assi. +\end{frame} + + +\begin{frame}[fragile] +\frametitle{Funzione plot()} +Considerando sempre l'insieme dei dati di nome {\color{blue}airquality} fare il plot del data frame. +\begin{lstlisting}[language=R, showstringspaces=false, keepspaces=true, basicstyle=\tiny] +> data(airquality) +> str(airquality) +'data.frame': 153 obs. of 6 variables: + ... +> plot(airquality) +\end{lstlisting} +\begin{figure} +\centering +\includegraphics[width=5cm]{images/2/dataframeplot} +\end{figure} + +\end{frame} + + + +\begin{frame}[fragile] +\frametitle{Argomenti opzionali di funzioni grafiche} +Di seguito sono riportati gli argomenti pi\`u comuni. + +\begin{table} +\scriptsize +\begin{tabular}{l p{9cm} } +\toprule +\textbf{Argomento} &\textbf{Descrizione}\\ +\midrule +{\color{blue}type} & Specifica il tipo di grafico, che di default \`e a punti ({\color{blue}type="p"}). Per avere line connesse si scrive {\color{blue}type="l"}; per entrambe {\color{blue}type="b"}; per grafico vuoto {\color{blue}type="n"}.\\ +{\color{blue}main} & Inserisce il titolo del grafico.\\ +{\color{blue}xlab} & Inserisce le intestazioni dell'asse delle ascisse.\\ +{\color{blue}ylab} & Inserisce le intestazioni dell'asse delle ordinate.\\ + +{\color{blue}xlim} & Inserisce limiti inferiore e superiore delle x indicate tramite vettore.\\ +{\color{blue}ylim} & Inserisce limiti inferiore e superiore delle y indicate tramite vettore.\\ +{\color{blue}col} & Specifica il colore usato per evidenziare le linee e i punti.\\ +{\color{blue}lty} & Specifica il tipo di linea disegnata con dei numeri che vanno dallo 0 al 6.\\ +{\color{blue}ltw} & Specifica la larghezza delle linee.\\ +\bottomrule +\end{tabular} +%\caption{Esempi di argomenti grafici opzionali} +\end{table} +\end{frame} + + +\begin{frame}[fragile] +\frametitle{Funzione plot()} +\begin{lstlisting}[language=R, showstringspaces=false, keepspaces=true, basicstyle=\footnotesize] +> plot(Temp~Month, data=airquality, ++ main="Andamento della temperatura a New York ++ da Maggio a Settempre 1973", ++ xlab="Mese") +\end{lstlisting} +\begin{figure} +\centering +\includegraphics[width=12cm]{images/2/airqualityplot3} +\end{figure} +\end{frame} + + +\begin{frame} +\frametitle{Funzione hist()} +\`E una funzione che genera istogrammi utilizzando un vettore numerico.\\~\\ + +\begin{table} +\footnotesize +\begin{tabular}{l p{8cm} } +\toprule +\textbf{Funzione} & \textbf{Descrizione}\\ +\midrule +{\color{blue}hist(x)} & Produce un istogramma utilizzando il vettore numerico {\color{blue}x}.\\ +{\color{blue}hist(x, nclass=n)} & Genera un istogramma con un numero {\color{blue}n} di classi.\\ +{\color{blue}hist(x, breaks=b)} & Genera un istogramma con classi di ampiezza diversa in base al valore {\color{blue}b}.\\ +{\color{blue}hist(x, probability=T)} & Genera un istogramma stimando le densit\`a sulle colonne.\\ +\bottomrule +\end{tabular} +%\caption{Esempi di funzione {\color{blue}hist()}} +\end{table} +\end{frame} + +\begin{frame}[fragile] +\frametitle{Funzione hist()} +A partire dall'insieme dei dati di nome {\color{blue}rivers} fare l'istogramma del vettore {\color{blue}rivers} numerico. +\begin{lstlisting}[language=R, showstringspaces=false, keepspaces=true, basicstyle=\tiny] +> data(rivers) +> str(rivers) + num [1:141] 735 320 325 392 524 ... +> lim<-c(seq(100,1000,by=100), ++ 1200, 1500, 3000, 4000) +> hist(rivers,breaks=lim, ++ xlab="Lun. fiumi Americani",ylab="Freq. relative", ++ main="Istogramma dei fiumi") +\end{lstlisting} +\begin{columns}[c] +\column{.5\textwidth} % Left column and width +L'insieme dei dati {\color{blue}rivers} contiene la lunghezza in miglia dei principali fiumi del Nord America.\\~\\ +Vedere {\color{blue}\url{https://stat.ethz.ch/R-manual/R-devel/library/datasets/html/rivers.html}} +\column{.5\textwidth} % Right column and width +\begin{figure} +\centering +\includegraphics[width=4cm]{images/2/rivershist} +\end{figure} +\end{columns} + +\end{frame} + + +% +% +% +%\begin{frame}[fragile] +%\frametitle{Funzione hist()} +%\begin{lstlisting}[language=R, showstringspaces=false, keepspaces=true, basicstyle=\tiny] +%> data(rivers) +%> str(rivers) +% num [1:141] 735 320 325 392 524 ... +%> lim<-c(seq(100,1000,by=100), +%+ 1200, 1500, 3000, 4000) +%> hist(rivers,breaks=lim, +%+ xlab="Lun. fiumi Americani",ylab="Freq. relative", +%+ main="Istogramma dei fiumi") +%\end{lstlisting} +%\begin{columns}[c] +%\column{.5\textwidth} % Left column and width +%L'insieme dei dati {\color{blue}rivers} contiene la lunghezza in miglia dei principali fiumi del Nord America.\\~\\ +%Vedere {\color{blue}\url{https://stat.ethz.ch/R-manual/R-devel/library/datasets/html/rivers.html}} +%\column{.5\textwidth} % Right column and width +%\begin{figure} +%\centering +%\includegraphics[width=4cm]{images/2/rivershist} +%\end{figure} +%\end{columns} +% +%\end{frame} + + +\begin{frame}[fragile] +\frametitle{Funzione hist()} +La funzione {\color{blue}density} permette di calcolare la stima della densit\`a. + +\begin{lstlisting}[language=R, showstringspaces=false, keepspaces=true, basicstyle=\tiny] +> hist(rivers,breaks=lim, ++ xlab="Lun. fiumi Americani",ylab="Freq. relative", ++ main="Istogramma dei fiumi") +> lines(density(rivers), col="red") +\end{lstlisting} +\begin{figure} +\centering +\includegraphics[width=6cm]{images/2/rivershist2} +\end{figure} +\end{frame} + + +\begin{frame}[fragile] +\frametitle{Funzione dotchart()} +\begin{lstlisting}[language=R, showstringspaces=false, keepspaces=true, basicstyle=\tiny] +> data(mtcars) +> str(mtcars) +'data.frame': 32 obs. of 11 variables: + $ mpg : num 21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ... + $ cyl : num 6 6 4 6 8 6 8 4 4 6 ... + ... + $ gear: num 4 4 4 3 3 3 3 4 4 4 ... + $ carb: num 4 4 1 1 2 1 4 2 2 4 ... +> x<-mtcars[order(mtcars$mpg),] +> x$cyl<-factor(x$cyl) +> str(x) +'data.frame': 32 obs. of 11 variables: + $ mpg : num 10.4 10.4 13.3 14.3 14.7 15 15.2 15.2 15.5 15.8 ... + $ cyl : Factor w/ 3 levels "4","6","8": 3 3 3 3 3 3 3 3 3 3 ... + ... + $ gear: num 3 3 3 3 3 5 3 3 3 5 ... + $ carb: num 4 4 4 4 4 8 3 2 2 4 ... +> x$color[x$carb==4]<-'red' +> x$color[x$carb==6]<-'blue' +> x$color[x$carb==8]<-'green' +> x$color[x$carb==2]<-'black' +> x$color[x$carb==1]<-'gray' +> dotchart(x$mpg,labels=row.names(x),cex=0.7,groups=x$cyl, ++ main="Consumo di gas per modelli di macchina\n ++ raggruppati per cilindarata", ++ xlab="miglia per galloni", ++ gcolor='black',color=x$color) +\end{lstlisting} +\end{frame} + +\begin{frame}[fragile] +\frametitle{Funzione dotchart()} +{\tiny{Il grafico mostra i valori delle variabili di interesse (livelli delle variabili qualitative) come punti.}} +\begin{figure} +\centering +\includegraphics[width=7.5cm]{images/2/dotchart} +\end{figure} +\end{frame} + +\begin{frame}[fragile] +\frametitle{Funzione barplot()} +\begin{lstlisting}[language=R, showstringspaces=false, keepspaces=true, basicstyle=\tiny] +> elementi<-table(mtcars$gear) +> elementi + + 3 4 5 +15 12 5 +> str(elementi) + 'table' int [1:3(1d)] 15 12 5 + - attr(*, "dimnames")=List of 1 + ..$ : chr [1:3] "3" "4" "5" +> barplot(elementi,main="Distribuzione delle macchine", ++ names.arg=c("3gears","4gears","5gears"), ++ xlab="numero di gears") +\end{lstlisting} +\begin{figure} +\centering +\includegraphics[width=5cm]{images/2/mtcarsbarplot} +\end{figure} +\end{frame} + +\begin{frame}[fragile] +\frametitle{Funzione persp()} +\begin{lstlisting}[language=R, showstringspaces=false, keepspaces=true, basicstyle=\tiny] +> x<-y<-seq(0,2*pi,by=0.1) +> z<-outer(sin(3*x),cos(3*y),"+") +> persp(x,y,z,phi=60,theta=45,d=10,col="pink",ticktype="detailed") +\end{lstlisting} +\begin{figure} +\centering +\includegraphics[width=5cm]{images/2/persp} +\end{figure} +\end{frame} + +% +%\begin{frame} +%\frametitle{Funzione pairs()} +%\begin{table} +%\tiny +%\begin{tabular}{l l l p{5cm} } +%\toprule +%\textbf{Funzione} & Oggetto & Dimensione &\textbf{Descrizione}\\ +%\midrule +%{\color{blue}pairs(df)} & {\color{blue}df} data frame & & Produce un grafico per punti o scatterplot di {\color{blue}x} verso {\color{blue}y}.\\ +%{\color{blue}plot(L)} & {\color{blue}L$<-$list(x,y)} lista & &\\ +%{\color{blue}plot(M)} & {\color{blue}M$<-$cbind(x,y)} matrice & &\\ +%\hline +%{\color{blue}plot(v)} & {\color{blue}v] vettore & &Produce un grafico dei valori del vettore nell'ordine degli elementi stessi. \\ +%\hline +%{\color{blue}plot(f)} & {\color{blue}f} fattore & & Produce un barplot delle frequenze relative ai livelli di {\color{blue}f}.\\ +%{\color{blue}plot(f,y)} & {\color{blue}f} fattore e {\color{blue}y} vettore& & Stessa lunghezza & Produce un boxplot di {\color{blue}y} per ogni livello di {\color{blue}f].\\ +%\hline +%{\color{blue}plot(df)} & {\color{blue}df} data frame & & Produce la matrice degli scatterplot di tutti i possibili accoppiamenti tra le variabili del dataframe.\\ +%{\color{blue}plot(~(x,y,z)}& {\color{blue}x}, {\color{blue}y} e {\color{blue}z} colonne di {\color{blue}df} & &Produce la matrice degli scatterplot di tutti i possibili accoppiamenti tra le variabili {\color{blue}x}, {\color{blue}y} e {\color{blue}z}.\\ +%\bottomrule +%\end{tabular} +%\caption{Esempi di funzione {\color{blue}plot()}} +%\end{table} +% +%Il simbolo $~$ si ottiene digitando Alt 126 sul tastierino numerico. +%\end{frame} + + +\section{Funzioni di basso livello} + + +\begin{frame} +\frametitle{Funzioni di basso livello} +Di seguito sono riportate alcune funzioni di basso livello. +\begin{table} +\footnotesize +\begin{tabular}{l p{8cm} } +\toprule +\textbf{Funzione} & \textbf{Descrizione}\\ +\midrule +{\color{blue}abline(x,y)} & Aggiunge una linea avente {\color{blue}y} come inclinazione e {\color{blue}x} come intercetta.\\ +{\color{blue}abline(v=x,h=y)} & Aggiunge una linea orizzontale che passa per l'ordinata {\color{blue}y}, e una linea verticale che passa per l'ascissa {\color{blue}x}.\\ +\hline +{\color{blue}axis(side)} & Aggiunge un asse nel lato indicato dal parametro {\color{blue}side}. \\ +{\color{blue}legend(x,y,legend=)} & Aggiunge una legenda al disegno nel punto ({\color{blue}x},{\color{blue}y)}).\\ +\hline +{\color{blue}lines(x,y)} & Aggiunge linee a un grafico esistente.\\ +{\color{blue}points(x,y)} & Aggiunge punti in un grafico esistente.\\ +{\color{blue}segments(x,y)} & Aggiunge segmenti in un grafico esistente.\\ +\hline +{\color{blue}mtext(testo, side=)} & Aggiunge il {\color{blue}testo} indicato sul margine scelto con il parametro {\color{blue}side}.\\ +{\color{blue}text(x0,y0,x1,y1,labels=)} & Aggiunge nel punto ({\color{blue}x},{\color{blue}y}) il testo indicato nel parametro {\color{blue}labels}.\\ +{\color{blue}title(titolo, sub=)} & Aggiunge il {\color{blue}titolo} e se si desidera un sottotitolo con {\color{blue}sub}.\\ +\bottomrule +\end{tabular} +%\caption{Funzioni di basso livello} +\end{table} +\end{frame} + +\begin{frame}[fragile] +\frametitle{Funzione segments()} +Aggiungere segmenti che connettono i punti di coordinate (xo,y0) con quelli di coordinate (x1,y1). +\begin{lstlisting}[language=R, showstringspaces=false, keepspaces=true, basicstyle=\tiny] +> altezza<-c(180,170,165,170,173,175,190,195,185,180,178,179,169,180) +> peso<-c(50,60,200,100,80,70,60,84,90,70,60,50,60,50) +> plot(peso,altezza) +> # segmento orizzontale con cordinata sull'asse delle ascisse +> # < e > del peso minimo e massimo +> segments(30,mean(altezza),220,mean(altezza),lty="dashed") +> # segmento verticale con cordinata sull'asse delle ordinate +> # < e > dell'altezza minima e massima +> segments(mean(peso),160,mean(peso),200,lty="dashed") +\end{lstlisting} +\begin{figure} +\centering +\includegraphics[width=4.5cm]{images/2/segments} +\end{figure} +\end{frame} + +\begin{frame}[fragile] +\frametitle{Funzione lines()} +Aggiungere linee. +\begin{lstlisting}[language=R, showstringspaces=false, keepspaces=true, basicstyle=\footnotesize] +> peso<-c(50,60,200,100,80,70,60,84,90,70,60,50,60,50) +> plot(peso,altezza) +> abline(v=mean(peso),h=mean(altezza), lty="dashed") +\end{lstlisting} +\begin{figure} +\centering +\includegraphics[width=6cm]{images/2/lines} +\end{figure} +Il risultato \`e equivalente a quanto fatto con la funzione {\color{blue}segments()}. +\end{frame} + + +\begin{frame}[fragile] +\frametitle{Funzione legend()} +Aggiungere la legenda. +\begin{lstlisting}[language=R, showstringspaces=false, keepspaces=true, basicstyle=\tiny] +> plot(x,sin(x),type="b",col=2,pch="*",ylab="f(x)",xlab="tempo",ylim=c(-1,1)) +> lines(x,cos(x),type="b",col=4,pch="o",ylab="f(x)",xlab="tempo",ylim=c(-1,1)) +> legend(0.5,-0.7,"sin",col=2,lty=1,pch="*",bty='n') +> legend(0.5,-0.5,"cos",col=4,lty=1,pch="o",bty='n') +\end{lstlisting} +\begin{figure} +\centering +\includegraphics[width=6cm]{images/2/legend} +\end{figure} +Il risultato \`e equivalente a quanto fatto con la funzione {\color{blue}segments()}. +\end{frame} + + +\begin{frame}[fragile] +\frametitle{Funzione legend()} +Esaminiamo alcuni argomenti. +\begin{lstlisting}[language=R, showstringspaces=false, keepspaces=true, basicstyle=\footnotesize] +> legend(0.5,-0.5,"cos",col=4,lty=1,pch="o",bty='n') +\end{lstlisting} +I primi due argomenti specificano le coordinate della legenda sugli assi delle ascisse e ordinate.\\~\\ +Il terzo argomento indica la etichetta.\\~\\ +L'argomento {\color{blue}col} specifica il colore.\\ +L'argomento {\color{blue}lty} specifica il tipo di punto.\\ +L'argomento {\color{blue}bty} specifica una scatola attorno alla legenda: {\color{blue}n} indica nessuna scatola di contorno. +\end{frame} + + +\begin{frame}[fragile] +\frametitle{Altre funzioni di basso livello} +\begin{lstlisting}[language=R, showstringspaces=false, keepspaces=true, basicstyle=\footnotesize] +> plot(1,1,xlim=c(1,7.5),ylim=c(0,5),type="n") +> points(1:7,rep(4.5,7),cex=1:7,col=1:7,pch=0.6) +> text(1:7,rep(3.5,7),labels=paste(0:6),cex=1:7, ++ col=1:7) +> points(1:7,rep(2,7),pch=(0:6)+7) +> text((1:7)+0.25,rep(2,7),paste((0:6)+7)) +> points(1:7,rep(1,7),pch=(0:6)+14) +> text((1:7)+0.25,rep(1,7),paste((0:6)+14)) +\end{lstlisting} + +\end{frame} + +\begin{frame}[fragile] +\frametitle{Altre funzioni di basso livello} +\begin{figure} +\centering +\includegraphics[width=6cm]{images/2/bassolivello} +\end{figure} +\end{frame} + + +\begin{frame}[fragile] +\frametitle{Esempi di ambienti grafici} +Creazione di un file grafico postscript. +\begin{lstlisting}[language=R, showstringspaces=false, keepspaces=true, basicstyle=\footnotesize] +> # aprire ambiente postscript +> postscript("grafico.ps") +> # ridirezionare grafico su file ps +> plot(y) +> # chiude ambiente postscript +> dev.off() +\end{lstlisting} +\end{frame} + + +\begin{frame}[fragile] +\frametitle{Esempi di ambienti grafici} +Creazione di un file grafico png. +\begin{lstlisting}[language=R, showstringspaces=false, keepspaces=true, basicstyle=\footnotesize] +> # aprire ambiente png +> png("grafico.png") +> # ridirezionare grafico su file png +> plot(y) +> # chiude ambiente png +> dev.off() +\end{lstlisting} +\end{frame} + +\begin{frame}[fragile] +\frametitle{Apportare modifiche ai grafici} +\`E possibile modificare il comportamento delle funzioni grafiche.\\~\\ +In R esistono due modalit\`a:\\~\\ +\begin{enumerate} +\item tramite il passaggio esplicito di argomenti alle funzioni grafiche producendo \textbf{cambiamenti temporanei}; +\item tramite la funzione {\color{blue}par()} che permette di accedere e modificare \textbf{permanentemente} i parametri della finestra grafica corrente, fino a che non viene chiamata nuovamente la funzione {\color{blue}par()} o la finestra viene chiusa. +\end{enumerate} +\end{frame} + + +\begin{frame}[fragile] +\frametitle{Divisione della finestra grafica} +R permette di suddividere la finestra grafica in pi\`u zone secondo uno schema che si riconduce a una forma a matrice pi\`u o meno regolare.\\~\\ + +In questo modo \`e possibile presentare pi\`u fenomeni nella stessa finestra.\\~\\ + +La funzione {\color{blue}par()} permette di specificare diversi parametri che modificano l'aspetto generare dei grafici in modo permanente.\\~\\ + +Gli argomenti che usa sono comuni alle funzione grafiche, ma se usate direttamente da queste funzioni il cambiamento apportato \`e temporaneo. + +\end{frame} + + + +\begin{frame}[fragile] +\frametitle{Divisione della finestra grafica} +Argomenti maggiormente usati dalla funzione {\color{blue}par()}:\\~\\ +\begin{table} +\footnotesize +\begin{tabular}{p{2.3cm} p{9cm} } +\toprule +\textbf{Argomento} & \textbf{Descrizione}\\ +\midrule +{\color{blue}col=} & Specifica il colore\\ +{\color{blue}lty=}, {\color{blue}ltw=}& Specificano il tipo di linea e lo spessore della linea rispettivamente.\\ +{\color{blue}mfrow=c(nr,nc)}, {\color{blue}mfcol=c(nr,nc)}& Divide la finestra grafica in spazi regolari per riga e per colonna rispettivamente: {\color{blue}nr} individua il numero di righe, {\color{blue}nc} il numero di colonne.\\ +{\color{blue}pch=s}& Controlla il tipo di simbolo o di carattere (es. diamante) che deve essere generato: {\color{blue}s} valore numerico che va da 0 a 20.\\ +{\color{blue}fig=c(a,b,c,d)}&Individua la frazione di finestra in cui \`e riprodotto il disegno: {\color{blue}a}, {\color{blue}b}, {\color{blue}c} e {\color{blue}d} assumono valori tra 0 e 1 e identificano le coordinate di xmin, xmax, ymin e ymax.\\ +{\color{blue}new=T/F} & Se pari a T il grafico successivo viene sovrapposto al precedente.\\ +\bottomrule +\end{tabular} +%\caption{Esempi di funzione {\color{blue}hist()}} +\end{table} +\end{frame} + + +\begin{frame}[fragile] +\frametitle{Divisione della finestra grafica} +\begin{columns}[c] +\column{.5\textwidth} % Left column and width +\begin{lstlisting}[language=R, showstringspaces=false, keepspaces=true, basicstyle=\tiny] +> par(mfrow=c(2,1)) +> pie(table(stato.civile)) +> barplot(sort(table(stato.civile))) +\end{lstlisting} +\column{.5\textwidth} % Left column and width + +\begin{figure} +\centering +\includegraphics[width=5cm]{images/2/par21} +\end{figure} + +\end{columns} +\end{frame} + + +\section{Funzioni interattive} + + +\begin{frame}[fragile] +\frametitle{Identificare unit\`a nel grafico} +La funzione {\color{blue}identify()} permette di individuare interattivamente gli stati corrispondenti ai punti, cliccandoci con il puntatore del mouse ed interrompendo l'individuazione dei punti con il tasto destro del mouse. + +\begin{lstlisting}[language=R, showstringspaces=false, keepspaces=true, basicstyle=\tiny] +> v1 <- 1:10 +> v2 <- x^2 +> name <- letters[1:10] +> plot(v1, v2) +> identify(x=v1, y=v2, # coordinate dei punti ++ labels = name, # etichette ++ plot=TRUE) +\end{lstlisting} + +\begin{figure} +\centering +\includegraphics[width=6cm]{images/2/identify} +\end{figure} + +\end{frame} + + +\begin{frame}[fragile] +\frametitle{Esercizi} +\begin{enumerate} +\item[1] Quali valori deve assumere l'argomento {\color{blue}mfrow} della funzione {\color{blue}par()} per avere 4 grafici disposti su due colonne? +\item[2] Cosa permette di specificare l'argomento {\color{blue}breaks} della funzione {\color{blue}hist()}? +\item[3] Come si chiude una finestra grafica? +\item[4] In cosa si differenziano le funzioni di alto livello da quelle di basso livello? +\item[5] Nella funzione {\color{blue}legend()} cosa viene visualizzato sul grafico se si assegna il valore {\color{blue}n} all'argomento {\color{blue}bty}? +\item[6] Indicare le differenze tra {\color{blue}barplot()} e {\color{blue}hist()}? +\end{enumerate} +\end{frame} + +\begin{frame}[fragile] +\frametitle{Esercizi} +\begin{enumerate} +\item[7] Costruire un data frame con i seguenti valori, in modo tale che il componente Date risulti di tipo {\color{blue}factor}.\\ +\begin{lstlisting}[language=R, showstringspaces=false, keepspaces=true, basicstyle=\tiny] + Date Open High Low Close Volume +Apr 10, 2014 530.68 532.24 523.17 523.48 8530600 +Apr 9, 2014 522.64 530.49 522.02 530.32 7337800 +Apr 8, 2014 525.19 526.12 518.7 523.44 10309400 +Apr 7, 2014 528.02 530.9 521.89 523.47 9830400 +Apr 4, 2014 539.81 540 530.58 531.83 5798000 +Apr 3, 2014 541.39 542.5 537.64 538.79 6443600 +Apr 2, 2014 542.38 543.48 540.26 542.55 7170000 +Apr 1, 2014 537.76 541.87 536.77 541.65 6023000 +Mar 31, 2014 539.23 540.81 535.93 536.74 8697000 +\end{lstlisting} +\begin{enumerate} +\item[7.1] Costruire il grafico tra Date e Open. +\item[7.2] Aggiungere la relazione tra Date e Close, Date e High, e Date e Low usando le funzioni lines, points, segments rispettivamente con colori differenti. +\item[7.3] Posizionare le etichette delle date in modo perpendicolare all'asse delle ascisse. +\item[7.4] Posizionare le etichette delle date con una inclinazione di +/-45 gradi rispetto all'asse delle ascisse. +\end{enumerate} +\end{enumerate} + +\end{frame} + + +\begin{frame} +\frametitle{Documentazione e bibliografia su R} +Per ciascuna funzione visionare l'help online di R.\\~\\ + +W.N. Venables, D. M. Smith and the R Development Core Team, An introduction to R, 2016, Cap. 12, \url{https://cran.r-project.org/doc/manuals/R-intro.pdf}\\~\\ + +Link a Tutorial e training on-line. +\end{frame} + + + + +\end{document} \ No newline at end of file diff --git a/parteII/aapl_prezzi.R b/parteII/aapl_prezzi.R new file mode 100644 index 0000000..0745ea3 --- /dev/null +++ b/parteII/aapl_prezzi.R @@ -0,0 +1,20 @@ +# determinare l'errore + +caricare il file +aapl <- read.csv(file='aapl_prezzi.csv', header=TRUE, stringsAsFactor=FALSE) + +invertire i dati sulle righe +aapl <- aapl[rev(rownames(aapl)),] + +estrarre il prezzo di chiusura +aapl_close <- aapl[, 'Close'] + +determinare informazioni statistiche in formato tabellare +summary(aapl_close) + +scrivere il file modificato +write(aapl, file='aapl_prezzi_riordinato.csv') + +# riaprire il file +# modificare i dati nella colonna Open di un valore pari a 100 x Numero di riga +# effettuarne il plot riportando sull'asse dell'ascissa il campo date \ No newline at end of file diff --git a/parteII/aapl_prezzi.csv b/parteII/aapl_prezzi.csv new file mode 100644 index 0000000..c2199ae --- /dev/null +++ b/parteII/aapl_prezzi.csv @@ -0,0 +1,10 @@ +Date;Open;High;Low;Close;Volume +"Apr 10, 2014";530.68;532.24;523.17;523.48;8530600 +"Apr 9, 2014";522.64;530.49;522.02;530.32;7337800 +"Apr 8, 2014";525.19;526.12;518.7;523.44;10309400 +"Apr 7, 2014";528.02;530.9;521.89;523.47;9830400 +"Apr 4, 2014";539.81;540;530.58;531.83;5798000 +"Apr 3, 2014";541.39;542.5;537.64;538.79;6443600 +"Apr 2, 2014";542.38;543.48;540.26;542.55;7170000 +"Apr 1, 2014";537.76;541.87;536.77;541.65;6023000 +"Mar 31, 2014";539.23;540.81;535.93;536.74;8697000 -- GitLab