Important announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Hi, hab heute meine ersten Gehversuche mit R gemacht. Auch wenn mir die
Sprache selber ziemlich chaotisch erscheint, bin ich dank reichlich
vorhandener Beispiele einigermassen fix vorangekommen.
Im Anhang ist ein 2x2 Boxplot. Die einzelnen Plots lassen sich einfach
beschriften, aber ich hab keine Möglichkeit gefunden, eine
Gesamtüberschrift/Erklärung für die gesamte Grafik hinzubekommen.
Ich hab versucht, ein Layout mit 5 Boxen zu verwenden:
und Titel/Erklärung in $1 unterzubringen. Aber die Ränder werden so dick
daß R ständig einen Fehler wirft, so daß ich diesen Ansatz aufgegeben
hab.
Wie bekommt man da noch ne Gesamtüberschrift hin?
Hier noch das R-Skript
bits2bytes <- function (n) { max (1, (n+7) %/% 8) }
gmean <- function (x) { exp (mean (log(x))) }
bytestat <- function (x, col)
{
b1 = x[(x$Bytes==1),][col];
b2 = x[(x$Bytes==2),][col];
b3 = x[(x$Bytes==3),][col];
b4 = x[(x$Bytes==4),][col];
c (x[col], b1, b2, b3, b4)
}
###########################################
func = "ltoa"
file_name = paste (func, ".data", sep="")
plot_name = paste (func, ".png", sep="")
x <- read.table (file_name, header=TRUE)
###########################################
colnames(x)[1] = "Old"
colnames(x)[2] = "New"
x$Gain <- x$New - x$Old
x$"Gain %" <- 100 * x$Gain / x$Old
x$Bytes <- factor (sapply (x$bits, bits2bytes))
###########################################
xlabels = c("1-4 Bytes", "1 Byte", "2 Bytes", "3 Bytes", "4 Bytes")
note1 = paste ("Measurement based on ", length (x$Old), " Samples",
" from AVR ATmega168\nAVR-Libc 1.8.0 (SVN 2294)",
sep ="")
note2 = paste ("The leftmost Plots show Data for all Values (1-4 Bytes).\n",
"The 4 right Plots show Costs for n-Byte Values, respectively.",
sep="")
titleOld = paste (func, ": AVR-Libc", sep="")
titleNew = paste (func, ": Tweaked", sep="")
red = c("#ff8888", rep ("#ffbbbb", times=4))
green = c("#88ff88", rep ("#bbffbb", times=4))
blue = c("#8888ff", rep ("#bbbbff", times=4))
blue2 = c("#aa88ff", rep ("#ccbbff", times=4))
lim <- c (min (x[1:2]), max (x[1:2]))
###########################################
png (file = plot_name, width=800, height=700, res=80)
par (mfrow = c(2,2))
boxplot (bytestat (x,1), main = titleOld, ylab="Ticks",
col = red, ylim = lim, names = xlabels, sub = note1)
abline (h=mean(x$Old), lty=3)
boxplot (bytestat (x,2), main = titleNew, ylab="Ticks",
col = green, ylim = lim, names = xlabels, sub = note2)
abline (h=mean(x$New), lty=3)
boxplot (bytestat (x,6), main="Speed Gain in Ticks", ylab="Gained Ticks",
col = blue, names = xlabels)
abline (h=mean(x$Gain), lty=3)
boxplot (bytestat (x,7), main="Speed Gain in %", ylab="Gained %",
col = blue2, names = xlabels)
abline (h=-gmean(-x$"Gain %"), lty=3)
dev.off()
Ahhh, ja. Damit geht's.
...und die Frames noch ein bisschen rumschubsen:
par (mfrow = c(2,2), oma=c(0, 0, 5, 0), mar=c(3.1, 3.1, 2.1, 1.1))
boxplot (...)
title (main=titleAll, line=3, outer=TRUE)
> *Background*>> R is such a graphics-rich analysis language, yet ironically the> description of many of its graphics features are not explained> visually. R's graphical parameters are a bit overwhelming and the> alphabetical order of the dozens and dozens of parameters — there> are more than 70 — in the online documentation doesn't help beginners> discern groups and relationships among these parameters very easily.http://research.stowers-institute.org/efg/R/Graphi...
Dankeschön :-)
Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.
Wichtige Regeln - erst lesen, dann posten!
Groß- und Kleinschreibung verwenden
Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang