Альтернативный подход вовлек бы хранение диапазонов в таблицу, вместо того, чтобы встроить их в запрос. Вы закончили бы с таблицей, назвать его Диапазонами, который похож на это:
LowerLimit UpperLimit Range
0 9 '0-9'
10 19 '10-19'
20 29 '20-29'
30 39 '30-39'
И запрос, который похож на это:
Select
Range as [Score Range],
Count(*) as [Number of Occurences]
from
Ranges r inner join Scores s on s.Score between r.LowerLimit and r.UpperLimit
group by Range
Это действительно означает настраивать таблицу, но было бы легко поддержать, когда желаемые диапазоны изменяются. Никакие необходимые изменения кода!
Вот небольшой набор данных:
dat <- data.frame(x=1:20,
y=rnorm(20,0,10),
v=20:1)
Предположим, я хочу, чтобы мои точки были окрашены с использованием значения v. Я могу изменить способ выполнения раскраски с помощью функции scale_colour_gradient () .
library(ggplot2)
qplot(x,y,data=dat,colour=color,size=4) +
scale_colour_gradient(low="black", high="white")
Этот пример должен помочь вам начать работу. Чтобы узнать больше, ознакомьтесь с scale_brewer ()
, упомянутым в другом сообщении.
ознакомьтесь с документацией ggplot для scale_brewer http://www.had.co.nz/ggplot2/scale_brewer.html
несколько примеров:
#see available pallets:
library(RColorBrewer)
display.brewer.all(5)
#scatter plot
dsamp <- diamonds[sample(nrow(diamonds), 1000), ]
d <- qplot(carat, price, data=dsamp, colour=clarity)
dev.new()
d
dev.new()
d + scale_colour_brewer(palette="Set1")
dev.new()
d + scale_colour_brewer(palette="Blues")