"A big computer, a complex algorithm and a long time does not equal science." -- Robert Gentleman
Visualizzazione post con etichetta colors. Mostra tutti i post
Visualizzazione post con etichetta colors. Mostra tutti i post
martedì 28 aprile 2009
Tips from the R-help list : shadow text in a plot and bumps charts
Stumbling across the R-help mailing-list I found, as often happens, two threads in the spirit of this blog (of course, since they come from the list, the quality is higher): here you can find a function allowing a shadow outline style for a text in a plot. From here you can follow an interesting thread depicting how to produce bumps charts in R.
venerdì 24 aprile 2009
Colors in the R terminal
venerdì 23 gennaio 2009
Interesting tip about multicolor title of a plot
I'd like to suggest to take a look at this interesting post about creating a title with multi-coloured words.
giovedì 11 dicembre 2008
Tips from Jason
I want to thank Jason Vertrees for the following collection of useful tips!
(1) Use ~/.Rprofile for repeated environment initialization
(2) Ever have the problem of a large data frame only being displayed across 40% of your terminal window? Then, you can resize the R display to fit the size of your terminal window. Use the following "wideScreen" function:
(3) Get familiar with colorspace. For example, if you need to color data points across a range, you can easily do:
(4) Given an N-dimensional data set, (m instances in N dimensions), find the K-nearest neighbors to a given row/instance/point:
(5) A _VERY_ useful tip is to show the users the vast difference in speed between using for, apply, sapply, mapply and tapply. A for loop is typically very slow, where the ?apply family is great. You can use the apply vs for-loop in the neighbors function above with a timer on a large set to show the difference.
(6) Another useful tip, also in neighbors is generating difference vectors and their lengths:
(1) Use ~/.Rprofile for repeated environment initialization
(2) Ever have the problem of a large data frame only being displayed across 40% of your terminal window? Then, you can resize the R display to fit the size of your terminal window. Use the following "wideScreen" function:
# define wideScreen
wideScreen <- function() {
options(width=as.integer(Sys.getenv("COLUMNS")));
}
#
# Test wideScreen
#
a <- rnorm(100)
a
wideScreen()
# notice how the data fill the screen
a
(3) Get familiar with colorspace. For example, if you need to color data points across a range, you can easily do:
##
## lut.R -- small function that returns a cool pallete of nColors
##
require(colorspace)
lut <- function(nColors=20) {
return(hex(HSV(seq(0, 360, length=nColors)[-nColors], 1, 1)));
}
# Now use lut.
plot( rnorm(100), col=lut(100)[1:100] )
# Now use just a range; use colors near purple; pretty
# much like gettins subsections of rainbow.colors()
plot( rnorm(30), col=lut(100)[71:100] )
(4) Given an N-dimensional data set, (m instances in N dimensions), find the K-nearest neighbors to a given row/instance/point:
##
## neighbors -- find and return the K closest neighbors to "home"
##
neighbors <- function( dat, home, k=10 ) {
theHood <- apply( dat, 1, function(x) sqrt(sum((x-home)**2)))
return(order(theHood)[1:k] )
}
# Use it. Create a random 10x10 matrix and find which rows
# in D are closest (Euclidean-wise) to row 1.
d <- matrix( rnorm(100), nrow=10, ncol=10)
neighbors(d, d[1,], k=3)
(5) A _VERY_ useful tip is to show the users the vast difference in speed between using for, apply, sapply, mapply and tapply. A for loop is typically very slow, where the ?apply family is great. You can use the apply vs for-loop in the neighbors function above with a timer on a large set to show the difference.
(6) Another useful tip, also in neighbors is generating difference vectors and their lengths:
# the difference vector between two vectors is very easy,
c <- a -b
# now the vector length (how far apart in Euclidean space these two points are)
sqrt(sum(c**2))
giovedì 24 maggio 2007
Selecting “contrasting” colors
From the R-list (as usual):
What I want to be able to do is to place text on a background of arbitrary
(but known RGB) colour so that the text is legible.
I guess that this is better described as a "contrasting" than a "complementary" colour.
Since luminance contrasts are necessary and sufficient for readable text,
you could use white for dark colors and black for light colors.
Luminance is roughly proportional to 0.2*(R^2.4)+0.6*(G^2.4),
suggesting something like
This uses a pale yellow for dark backgrounds and a dark blue for light
backgrounds, and it seems to work reasonably well.
What I want to be able to do is to place text on a background of arbitrary
(but known RGB) colour so that the text is legible.
I guess that this is better described as a "contrasting" than a "complementary" colour.
Since luminance contrasts are necessary and sufficient for readable text,
you could use white for dark colors and black for light colors.
Luminance is roughly proportional to 0.2*(R^2.4)+0.6*(G^2.4),
suggesting something like
lightdark <-function (color){
rgb <- col2rgb(color)/255
L <- c(0.2, 0.6, 0) %*% rgb
ifelse(L >= 0.2, "#000060", "#FFFFA0")
}
This uses a pale yellow for dark backgrounds and a dark blue for light
backgrounds, and it seems to work reasonably well.
Iscriviti a:
Post (Atom)