2014-02-09 2 views
3

Использование данных в этом вопросе https://stackoverflow.com/questions/21663108/coloring-points-on-a-lattice-plot-in-r Я хочу использовать функцию histogram в lattice для построения трех гистограмм на одном и том же участке, но отдельно, чтобы я мог управлять цветами и допускать полу- прозрачный цвет, где гистограммы перекрываются.Как добавить перекрывающиеся гистограммы с решеткой

Однако, следующий код не работает:

histogram(locs[locs.col=="darkblue"] , breaks=20, xlim=c(25,150),col="darkblue") 
histogram(locs[locs.col=="yellow"] , breeaks=20, xlim=c(25,150),col="yellow",add=T) # add doesn't work here 
histogram(locsy[locs.col=="red"] , breaks=20, xlim=c(25,150),col="red",add=T) 

потому что гистограммы не будут добавлены к Афоризму. Я знаю, что это работает для функции hist в базовых пакетах, вот мои вопросы:

1) Есть ли способ добавить гистограммы к сюжету с histogram? 2) Как я могу сделать бункеры гистограмм одинаковой ширины для каждого экземпляра гистограммы 3) Как сделать цвета полупрозрачными для того, где гистограммы перекрываются? 4) Как повернуть гистограмму на 90 градусов так, чтобы она была горизонтальной осью?

+0

Для перекрытия ** решетки ** участки, вы можете использовать 'as.layer()' от ** laticeExtra ** пакета.(Я действительно тестировал это, но перекрывающиеся гистограммы - даже при использовании прозрачных цветов - приводит к тому, что сюжет настолько трудно интерпретировать, что я отказываюсь публиковать его!) –

ответ

1

Функция решетки histogram не поддерживает добавление = T, которое является частью базовой графики. Кроме того, обычный способ получить бок о бок или перекрывающиеся графики в решетке - это параметр «групп», а histogram again does not support groups. But the help page says that - плотность, и он также отображает местоположения точек данных и принимает аргумент альфа-прозрачности:

df <- data.frame(locs=locs, locs.col=locs.col,dataset=dataset) 
densityplot(~locs, groups=locs.col,data=df , xlim=c(25,150), alpha=.5) 

enter image description here

Если вы хотите, чтобы ваши собственные цвета, которые вы можете попробовать: ...,col=locs.col,...

чтобы добавить materioal к тому, что начиналось как комментарий о том, как «Чередовать» плотности участка:

Пример интеграции плотности с гистограммой вызовов, достаточно удивительно, я получаю кредит (или вину) для:

http://markmail.org/search/?q=list%3Aorg.r-project.r-help++densityplot+switch+x+y#query:list%3Aorg.r-project.r-help%20%20densityplot%20switch%20x%20y+page:1+mid:oop3shncxgx4mekc+state:results

-------- текст ------ Использование densityplot вместо гистограммы в качестве функции обертывания, поэтому ее более экстремальные диапазоны соблюдаются. Вы получаете сообщение об ошибке, когда вы говорите, что «перерывы» недействительны, но если вы читаете страницу «Гистограмма», это говорит о том, что установка breaks = NULL может привести к допустимому поведению по умолчанию, и это похоже на то, что в данном случае:

densityplot(~x,data=foo,groups=grp, 
#prepanel=function(x,type,groups,...){???}, 
    panel=function(x,type,groups,...){ 
    panel.densityplot(x,groups=groups,...) 
    panel.histogram(x,col='transparent', breaks = NULL, ...) 

}) 

------- конец цитируемый материал -------

и пример взлома (по Dieter Menne), показывающий, как сращивание взломанные панелей в вызов решетки: http://markmail.org/search/?q=list%3Aorg.r-project.r-help++densityplot+switch+x+y#query:list%3Aorg.r-project.r-help%20%20densityplot%20switch%20x%20y+page:1+mid:fyva5hrio6cn4fs2+state:results

+0

Спасибо. Любые комментарии по повороту сюжета. Не могу понять, как это сделать в решетке. – user3290303

+0

Если вы наберете 'panel.densityplot', вы получите функцию, а в конце - вызов' panel.lines'. Это было бы легко взломать, переключив входы на x и y. Если вы хотите, чтобы график ковра (точки, дрожащие точки вдоль y = 0), также повернулся, вам, возможно, придется взломать 'panel.rug'. Если бы я делал это ради денег или славы, я бы искал архивы рэппа, чтобы посмотреть, было ли просить об этом Дипаяна Саркара (автора решетки). –

4

Перекрывающиеся гистограммы могут быть иногда понятными и информативными, Однако, это мы ually лучше использовать bwplot или violin plot, в любом случае:

histogram(~Sepal.Length, 
    data = iris, 
    type = "p", 
    breaks = seq(4,8,by=0.2), 
    ylim = c(0,30), 
    groups = Species, 
    panel = function(...)panel.superpose(...,panel.groups=panel.histogram, 
          col=c("cyan","magenta","yellow"),alpha=0.4), 
    auto.key=list(columns=3,rectangles=FALSE, 
        col=c("cyan","magenta","yellow3")) 
    ) 

overlapping histograms in R with lattice, Sepal.Length from iris data

+0

Это то, что 42- (и другие) сказал, не может быть сделано. Невероятный. На данный момент это может быть единственным источником этой информации в Интернете. – Mars

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