2014-02-06 3 views
1

У меня есть набор данных (п = 9,141,954), который выглядит следующим образомИспользование градиентных дисплеев для гистограмм в г

data<-c(rep(1, times=401),rep(2,times=443789),rep(3,times=5276376),rep (4,times=3003895),rep(5,times=404108),rep(6,times=13181),rep(7,times=205)) 

Что как гистограмма выглядит следующим образом:

hist(data,prob=T,breaks=5) 

слева направо, я хочу отображать цвета «темно-зеленый» «chartreuse4» «желто-зеленый» «желтый» «оранжевый2» «красный» и «красный3»

0 Я знаю, что могу использовать с помощью col = c , .... и т. д.), но то, что я хотел бы сделать, ay эти цвета как градиент на гистограмме, взвешенный относительным вкладом каждого из значений в набор данных. Например, значение = 1 составляет всего 0,004% от значений ячейки (401/9141954 * 100), а значение = 4 составляет 32,9% данных. Поэтому я хотел бы, чтобы на дисплее градиента было 0,004%, выделенное «темно-зеленым», но 32,9% связано с «желтым» и т. Д. Для остальных значений/цветов.

Кто-нибудь знает, как это можно сделать ???

ответ

0

Что-то вроде этого?

res <- hist(data,breaks=5) 
plot(res) 

cols <-c("darkgreen","chartreuse4","yellowgreen","yellow","orange2","red","red3") 
colcombos <- data.frame(embed(cols,2)[,2:1],nums=round(res$density*600)) 
selcols <- unlist(
      apply(colcombos,1,function(x) colorRampPalette(c(x[1],x[2]))(x[3])) 
      ) 

dens <- 100 
bar.dens <- 1/100 

rect(
seq(1,7-bar.dens,bar.dens), 
0, 
seq(1+bar.dens,7,bar.dens), 
rep(res$counts,each=dens), 
col=selcols, 
border=NA 
) 

plot(res,add=TRUE) 

Результат, который не выглядит захватывающим, к сожалению, но цвета там, если вы сюжет barplots все в одинаковой высоты:

enter image description here

enter image description here

+0

Привет. Спасибо за ответ. Но я за градиентом затеняю через бункеры, от зеленого до желтого оранжевого до красного, при этом пропорция «темно-зеленого» отображается в соответствии со значением 1 ... до количества красных 3, совпадающих с величиной 7. Извините, если мое объяснение не было ясно раньше! Я не уверен, как создать градиентное затенение, похожее на отображение шкалы серого с черного на белый ??? – user3229751

+0

Я не уверен, что вы имеете в виду. Разве это не было бы достижимо с помощью 'hist (..., col = c (" darkgreen "," charteuse4 "и т. Д. И т. Д.)). Можете ли вы придумать пример и опубликовать его на imgur.com или где-то подобным? – thelatemail

+0

Привет снова. Извините (новый для R и обмена стеками!) Я пытаюсь отобразить более одного цвета в корзине. Пример выше имеет 4 бункера, и я хочу отобразить 7 цветов, заштрихованных поперек слева направо, подобно радужному дисплею, часто используемому на графиках 3D-контура. Я отмечаю один из ваших ответов на предыдущий пост, который кажется похожим (градиент n цветов из col = c (красный, синий)) с использованием colorRampPalette. Но главное отличие состоит в том, что я хочу отображать более одного цвета в гистограмме, т. Е. Семь цветов, затененных на 4 или 5 бункеров .... – user3229751

Смежные вопросы