Hi all,
I'm an R newbie,
I did this script to create a scatterplot using the "tree" matrix from
"datasets" package:
library('datasets')
with(trees,
{
plot(Height, Volume, pch=3, xlab="Height", ylab="Volume")
symbols(Height, Volume, circles=Girth/12, fg="grey", inches=FALSE,
add=FALSE)
}
)
I'd like to use the column Named "Height" to fill the circles with
colors
(ex.: the small numbers in green then yellow and the high numbers in red).
I'd like to have a legend for the size and the colors too.
I did it manually using a script like that:
color[(x>=0.001)&(x<0.002)]<-"#41FF41"
color[(x>=0.002)&(x<0.003)]<-"#2BFF2B"
color[(x>=0.003)&(x<0.004)]<-"#09FF09"
color[(x>=0.004)&(x<0.005)]<-"#00FE00"
color[(x>=0.005)&(x<0.006)]<-"#00F700"
color[(x>=0.006)&(x<0.007)]<-"#00E400"
color[(x>=0.007)&(x<0.008)]<-"#00D600"
color[(x>=0.008)&(x<0.009)]<-"#00C300" and so on but I
don't like to do it
manually... do know a solution...
Thank you very much
chris
[[alternative HTML version deleted]]
Here is a function that will generate a color sequence for an input
vector, You can specify the colors to use, the range and the number
of color steps:
# specify the colors and the number of increments you want for a specified
# range. It will return the colors for the input vector
# specify the colors and the number of increments you want for a specified
# range. It will return the colors for the input vector
f.color <-
function(input, # input vector
colors=c('green','yellow','red'), # desired
colors
input.range=c(0,0.01), # range of input to create colors
input.steps=10) # number of increments
{
myColors <- colorRampPalette(colors)(input.steps) # generate colors
myColors[cut(input, seq(input.range[1], input.range[2],
length=input.steps+1),
labels=FALSE, include.lowest=TRUE)]
}
# generate a legend to show colors
plot.new() # create blank plot
x <- round(runif(15), 3)
legend('topleft', legend=x, fill=f.color(x, input.range=c(0,1)))
legend('topright', legend=x, fill=f.color(x, input.range=c(0,1),
colors=c('purple','red','blue','orange')))
legend('top', legend=x, fill=f.color(x, input.range=c(0,1),
colors=c('red','yellow','green')))
So you should be able to use something like this.
On 8/25/07, Cristian cristian <taccioli at gmail.com>
wrote:> Hi all,
> I'm an R newbie,
> I did this script to create a scatterplot using the "tree" matrix
from
> "datasets" package:
>
> library('datasets')
> with(trees,
> {
> plot(Height, Volume, pch=3, xlab="Height",
ylab="Volume")
> symbols(Height, Volume, circles=Girth/12, fg="grey",
inches=FALSE,
> add=FALSE)
> }
> )
>
> I'd like to use the column Named "Height" to fill the circles
with colors
> (ex.: the small numbers in green then yellow and the high numbers in red).
> I'd like to have a legend for the size and the colors too.
> I did it manually using a script like that:
> color[(x>=0.001)&(x<0.002)]<-"#41FF41"
> color[(x>=0.002)&(x<0.003)]<-"#2BFF2B"
> color[(x>=0.003)&(x<0.004)]<-"#09FF09"
> color[(x>=0.004)&(x<0.005)]<-"#00FE00"
> color[(x>=0.005)&(x<0.006)]<-"#00F700"
> color[(x>=0.006)&(x<0.007)]<-"#00E400"
> color[(x>=0.007)&(x<0.008)]<-"#00D600"
> color[(x>=0.008)&(x<0.009)]<-"#00C300" and so on but
I don't like to do it
> manually... do know a solution...
> Thank you very much
> chris
>
> [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide
http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>
--
Jim Holtman
Cincinnati, OH
+1 513 646 9390
What is the problem you are trying to solve?
Cristian cristian wrote:> Hi all, > I'm an R newbie, > I did this script to create a scatterplot using the "tree" matrix from > "datasets" package: > > library('datasets') > with(trees, > { > plot(Height, Volume, pch=3, xlab="Height", ylab="Volume") > symbols(Height, Volume, circles=Girth/12, fg="grey", inches=FALSE, > add=FALSE) > } > ) > > I'd like to use the column Named "Height" to fill the circles with colors > (ex.: the small numbers in green then yellow and the high numbers in red). > I'd like to have a legend for the size and the colors too. > I did it manually using a script like that: > color[(x>=0.001)&(x<0.002)]<-"#41FF41" > color[(x>=0.002)&(x<0.003)]<-"#2BFF2B" > color[(x>=0.003)&(x<0.004)]<-"#09FF09" > color[(x>=0.004)&(x<0.005)]<-"#00FE00" > color[(x>=0.005)&(x<0.006)]<-"#00F700" > color[(x>=0.006)&(x<0.007)]<-"#00E400" > color[(x>=0.007)&(x<0.008)]<-"#00D600" > color[(x>=0.008)&(x<0.009)]<-"#00C300" and so on but I don't like to do it > manually... do know a solution... > Thank you very much > chris >Hi Chris, You can transform the numeric values in "Height" into colors using the color.scale function in the plotrix package. The color.legend function will allow you to get your legend. Jim
Hi Christian, You could use the ggplot2 package (http://had.co.nz/ggplot2) which takes care of many of these details for you: qplot(Height, Volume, data=trees, size = Girth) qplot(Height, Volume, data=trees, size = Girth, colour=Height) You can find more details on the website about how to customise the scales for your needs, but the defaults should be pretty good. Hadley On 8/25/07, Cristian cristian <taccioli at gmail.com> wrote:> Hi all, > I'm an R newbie, > I did this script to create a scatterplot using the "tree" matrix from > "datasets" package: > > library('datasets') > with(trees, > { > plot(Height, Volume, pch=3, xlab="Height", ylab="Volume") > symbols(Height, Volume, circles=Girth/12, fg="grey", inches=FALSE, > add=FALSE) > } > ) > > I'd like to use the column Named "Height" to fill the circles with colors > (ex.: the small numbers in green then yellow and the high numbers in red). > I'd like to have a legend for the size and the colors too. > I did it manually using a script like that: > color[(x>=0.001)&(x<0.002)]<-"#41FF41" > color[(x>=0.002)&(x<0.003)]<-"#2BFF2B" > color[(x>=0.003)&(x<0.004)]<-"#09FF09" > color[(x>=0.004)&(x<0.005)]<-"#00FE00" > color[(x>=0.005)&(x<0.006)]<-"#00F700" > color[(x>=0.006)&(x<0.007)]<-"#00E400" > color[(x>=0.007)&(x<0.008)]<-"#00D600" > color[(x>=0.008)&(x<0.009)]<-"#00C300" and so on but I don't like to do it > manually... do know a solution... > Thank you very much > chris > > [[alternative HTML version deleted]] > > ______________________________________________ > R-help at stat.math.ethz.ch mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. >-- http://had.co.nz/