Άννα Μοσχά Κέντρο Η/Υ, Ε.Μ.Π.
> plot(cars$speed, cars$dist)
> plot(cars$speed, cars$dist, xlab = "Speed (mph)", ylab = "Stopping distance (ft)", main="Cars data", sub="10/9/2015", col="red", pch=4, cex.axis=0.6)
> plot(cars$speed, cars$dist, xlab = "Speed (mph)", ylab = "Stopping distance (ft)", main="Cars data" , sub="10/9/2015", col="red", type='o')
> colours()
[1] "white" "aliceblue" "antiquewhite" "antiquewhite1"
[5] "antiquewhite2" "antiquewhite3" "antiquewhite4" "aquamarine"
[9] "aquamarine1" "aquamarine2" "aquamarine3" "aquamarine4"
[13] "azure" "azure1" "azure2" "azure3"
[17] "azure4" "beige" "bisque" "bisque1"
..........................................................................................
..........................................................................................
[653] "yellow1" "yellow2" "yellow3" "yellow4"
[657] "yellowgreen"
> plot(cars$speed, cars$dist, xlab = "Speed (mph)", ylab = "Stopping distance (ft)", main="Cars data" , col="red", type='o', pch=4, col.axis="green", col.main="red")
> plot(0:25, pch=0:25)
> plot(cars$speed, type="l", lty=2)
> plot(cars$speed, cars$dist, main="Cars data" , col="red", type='o', pch=4, col.axis="green", col.main="red", cex.axis=1.7)
> plot(cars$speed, cars$dist, main="Cars data" , col="red", type='o', pch=4, col.axis="green", col.main="red", xlim=c(0, 80))
> par()
$xlog
[1] FALSE
$ylog
[1] FALSE
..............................
$ylbias
[1] 0.2
> par()$col
[1] "black"
> old_par<-par()
> par(col="red")
> plot(cars$speed)
Έβαλα τις default τιμές των ορισμάτων στην μεταβλητή old_par. Άλλαξα στη συνέχεια το χρώμα σε κόκκινο και παρατηρώ ότι οτιδήποτε σχεδιάzω μετά έχει κόκκινο χρώμα
> par(old_par)
Warning messages:
1: In par(old_par) : graphical parameter "cin" cannot be set
.............................................................
6: In par(old_par) : graphical parameter "page" cannot be set
> par()$col
[1] "black"
> plot(cars$speed)
Εμφανίζει ένα Warning μήνυμα γιατί σε κάποια ορίσματα της par() δεν μπορείς να αλλάξεις τιμή.
> 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 ...
$ disp: num 160 160 108 258 360 ...
$ hp : num 110 110 93 110 175 105 245 62 95 123 ...
$ drat: num 3.9 3.9 3.85 3.08 3.15 2.76 3.21 3.69 3.92 3.92 ...
$ wt : num 2.62 2.88 2.32 3.21 3.44 ...
$ qsec: num 16.5 17 18.6 19.4 17 ...
$ vs : num 0 0 1 1 0 1 0 1 1 1 ...
$ am : num 1 1 1 0 0 0 0 0 0 0 ...
$ gear: num 4 4 4 3 3 3 3 4 4 4 ...
$ carb: num 4 4 1 1 2 1 4 2 2 4 ...
> ?mtcars
> par(mfrow=c(2,2))
Χωρίζει το layout σε ένα πλέγμα με 2 γραμμές και 2 στήλες και θα τυπώνει τα 4 διαγράμματα ανά γραμμή
> plot(mtcars$disp,mtcars$mpg)
Σχεδιάζει το διάγραμμα της κατανάλωσης καυσίμου (μίλια ανά γαλόνι) σε σχέση με τον κυβισμό στη αριστερή πάνω γωνία
> plot(mtcars$hp,mtcars$mpg)
Σχεδιάζει το διάγραμμα της κατανάλωσης καυσίμου (μίλια ανά γαλόνι) σε σχέση με τους ίππους στην δεξιά πάνω γωνία
> plot(mtcars$drat,mtcars$mpg)
Σχεδιάζει το διάγραμμα της κατανάλωσης καυσίμου (μίλια ανά γαλόνι) σε σχέση με την αναλογία του πίσω άξονα στην αριστερή κάτω γωνία
> plot(mtcars$wt,mtcars$mpg)
Σχεδιάζει το διάγραμμα της κατανάλωσης καυσίμου (μίλια ανά γαλόνι) σε σχέση με το βάρος του αυτοκινήτου στην δεξιά κάτω γωνία
> par(mfrow=c(1,1))
> plot(mtcars$wt,mtcars$mpg)
Δηλαδή το layout αποτελείται από μία γραμμή και μία στήλη.(Ή θα μπορούσα πιο σωστά να είχα αρχικά κρατήσει σε μια μεταβλητή όλες τις αρχικές παραμέτρους και μετά να τις επαναφέρω). Επομένως το νέο διάγραμμα καλύπτει όλο το layout.
> grid<-matrix(c(1,1,2,3), nrow=2, byrow=TRUE)
> grid
[,1] [,2]
[1,] 1 1
[2,] 2 3
> layout(grid)
Δημιουργούμε τον πίνακα grid που προσδιορίζει την θέση κάθε διαγράμματος. Xωρίζουμε το layout με βάση τον πίνακα grid.
> plot(mtcars$mpg~as.factor(mtcars$cyl))
Αφού έχει χωριστεί το layout κατάλληλα, σχεδιάζει το boxplot της κατανάλωσης καυσίμου (μίλια ανά γαλόνι) ανά αρθμό κυλίνδρων το οποίο εκτείνεται σε όλη την πρώτη γραμμή.
> plot(mtcars$wt,mtcars$mpg)
Στη συνέχεια, σχεδιάζει το διάγραμμα της κατανάλωσης καυσίμου (μίλια ανά γαλόνι) σε σχέση με το βάρος του αυτοκινήτου στην αριστερή κάτω γωνία.
> plot(mtcars$hp,mtcars$mpg)
Τέλος, σχεδιάζει το διάγραμμα της κατανάλωσης καυσίμου (μίλια ανά γαλόνι) σε σχέση με τους ίππους στην δεξιά κάτω γωνία.
> layout(1)
> plot(mtcars$wt,mtcars$mpg)
Ή θα μπορούσα πιο σωστά να είχα αρχικά κρατήσει σε μια μεταβλητή όλες τις αρχικές παραμέτρους και μετά να τις επαναφέρω. Το νέο διάγραμμα πλέον καλύπτει όλο το layout.
> pairs(mtcars)
Επειδή όλες οι μεταβλητές του data frame mtcars είναι αριθμητικές μας δίνει ένα πίνακα με όλα τα διαγράμματα διασποράς των μεταβλητών ανά δύο. Η pairs(mtcars) μας δίνει ακριβώς το ίδιο με το plot(mtcars)
> plot(mtcars$wt, mtcars$mpg, main="Weight versus Fuel Consumption", xlab="Weight", ylab="Fuel Consumption miles/gallon")
> abline(37, -5, col=2)
> abline(v=median(mtcars$wt), col=3)
> abline(h=median(mtcars$mpg), col=4)
*Παρατήρηση: Στην R από την στιγμή που έχει προστεθεί κάτι σε ένα γράφημα δεν μπορεί να διαγραφεί. Αν θέλουμε να διαγράψουμε κάτι θα πρέπει να ξαναρχίσουμε από την αρχή την σχεδίαση με την εντολή plot()
> h1<-hist(mtcars$mpg, breaks=20)
Σχεδιάζουμε το ιστόγραμμα της κατανάλωσης καυσίμου (μίλια ανά γαλόνι) και το αναθέτουμε στην μεταβλητή h1.
> h1<-hist(mtcars$mpg, breaks=20)
> mode(h1)
[1] "list"
> str(h1)
List of 6
$ breaks : num [1:25] 10 11 12 13 14 15 16 17 18 19 ...
$ counts : int [1:24] 2 0 0 1 3 4 1 2 2 3 ...
$ density : num [1:24] 0.0625 0 0 0.0312 0.0938 ...
$ mids : num [1:24] 10.5 11.5 12.5 13.5 14.5 15.5 16.5 17.5 18.5 19.5 ...
$ xname : chr "mtcars$mpg"
$ equidist: logi TRUE
- attr(*, "class")= chr "histogram"
Παρατηρήστε ότι η μεταβλητή h1 είναι λίστα που περιέχει 6 στοιχεία τα οποία περιγράφουν το ιστόγραμμα. Για να σχεδιάσουμε το πολύγωνο συχνοτήτων θα χρησιμοποίησουμε τα mids και counts που είναι τα κέντρα των κλάσεων της μεταβλητής mtcars$mpg και οι συχνότητες των αντίστοιχων κλάσεων αντίστοιχα.
> lines(h1$mids, h1$counts, col=2)
Η lines() παίρνει ως όρισμα συντεταγμένες σημείων και ενώνει τα σημεία που προκύπτουν με ευθύγραμμα τμήματα.
> hist(mtcars$mpg, breaks=20, prob=T)
> curve(dnorm(x, mean=mean(mtcars$mpg), sd=sd(mtcars$mpg)),from=10, to=40, add=TRUE)
Η curve() σχεδιάζει καμπύλη συνάρτησης, στην προκειμένη περίπτωση, την dnorm() που είναι η σ.π.π. της κανονικής κατανομής μεταξύ ενός διαστήματος που καθορίζεται από τα [from, to]. Πρέπει να δώσουμε add=TRUE για να προστεθεί στο γράφημα του ιστογράμματος.
> plot(z$Final, type="n")
> text(z$Final, label=z$Sex)
> plot(mtcars$mpg, type="n")
> text(mtcars$mpg, label=as.character(mtcars$cyl))
> plot(mtcars$hp, mtcars$mpg, col=mtcars$cyl)
> legend(250,30, pch=1, col=unique(mtcars$cyl), legend=unique(mtcars$cyl))
Εμφανίζει σε λεζάντα το χρώμα που αντιστοιχεί σε κάθε αριθμό κυλίνδρων (χρωματίζει το σύμβολο)
> plot(mtcars$hp, mtcars$mpg, col=mtcars$cyl)
> legend(250,30, text.col=unique(mtcars$cyl), legend=unique(mtcars$cyl))
Εμφανίζει σε λεζάντα το χρώμα που αντιστοιχεί σε κάθε αριθμό κυλίνδρων (χρωματίζει τον αριθμό)
> plot(mtcars$hp, mtcars$mpg, pch=mtcars$cyl)
> legend(250,30, pch=unique(mtcars$cyl), legend=unique(mtcars$cyl))
> plot(mtcars$hp, mtcars$mpg, type="n")
> text(mtcars$hp, mtcars$mpg, label=mtcars$cyl, col=mtcars$cyl)
> ?Devices
Παίρνουμε τη λίστα με τις graphics devices.
> data(faithful)
> str(faithful)
'data.frame': 272 obs. of 2 variables:
$ eruptions: num 3.6 1.8 3.33 2.28 4.53 ...
$ waiting : num 79 54 74 62 85 55 88 85 51 85 ...
Φορτώνουμε τα δεδομένα του dataset Faithful. Βλέπουμε την δομή των δεδομένων Faithful. Τα δεδομένα αυτά περιγράφουν τον χρόνο μεταξύ διαδοχικών εκρήξεων και την διάρκεια της κάθε έκρηξης ενός θερμού πίδακα geyser σε πάρκο στις Η.Π.Α.
> pdf("faithful.pdf")
> with(faithful, plot(eruptions, waiting, xlab = "Eruption time (min)", ylab = "Waiting time to next eruption (min)"))
> title(main = "Old Faithful Geyser data")
> dev.off()
null device
1
> myplot=with(faithful, plot(eruptions, waiting, xlab = "Eruption time (min)", ylab = "Waiting time to next eruption (min)"))
> myplot=title(main = "Old Faithful Geyser data")
> savePlot("myplot")
> with(faithful, plot(eruptions, waiting))
> title(main = "Old Faithful Geyser data")
> dev.copy(png, file = "geyserplot.png")
png
3
> dev.off()
X11cairo
2
Δημιουργώ το γράφημα από το dataset faithful στην οθόνη και το συμπληρώνω με τίτλο. Αντιγράφω στη συνέχεια το γράφημα της οθόνης σε ένα αρχείο στο working directory μου με τίτλο geyserplot.png με την συνάρτηση dev.copy() η οποία επιστρέφει το όνομα και τον αριθμό της device στην οποία έγινε η αντιγραφή (στην png). Ακόμη είναι κενό το συγκεκριμένο αρχείο. Τέλος, κλείνω την png device και τότε μπορώ να δω το γράφημα από το αρχείο geyserplot.png. (Η device που έμεινε ενεργή είναι η X11cairo)
> install.packages("shiny")
Installing package into ‘/home/anna/R/x86_64-pc-linux-gnu-library/3.1’
(as ‘lib’ is unspecified)
also installing the dependencies ‘httpuv’, ‘htmltools’, ‘sourcetools’
...................................................................................
* DONE (shiny)
The downloaded source packages are in
‘/tmp/Rtmpk0AXHa/downloaded_packages’
> library("shiny")
> runExample()
Valid examples are "01_hello", "02_text", "03_reactivity", "04_mpg", "05_sliders", "06_tabsets", "07_widgets", "08_html", "09_upload", "10_download", "11_timer"
> runExample("01_hello")
Listening on http://127.0.0.1:3597
Εγκαθιστούμε το πακέτο "shiny" και το ενεργοποιούμε. Τρέχουμε το παράδειγμα "01_hello" που σχεδιάζει ένα ιστόγραμμα από το dataset faithful της R με ένα ρυθμιζόμενο αριθμό ορθογωνίων που χρησιμοποιούνται στο ιστόγραμμα. Αλλάζοντας ο χρήστης τον αριθμό ορθογωνίων από την μπάρα αλλάζει ταυτόχρονα και το ιστόγραμμα.
> runExample("02_text")
Listening on http://127.0.0.1:3597