2 факторный анализ гистограммы

Я долго искал ответ на эту проблему, и я не смог найти ответ.

вот проблема: у меня есть фрейм данных со следующими переменными: расход 1 (CH_SONAR), расход 2 (CH_SONAR_2T), плотность (CH_DENSITY) и процентная разница между двумя расходами (per_diff). Я создал 5-уровневый коэффициент для расхода 1 и еще 5-уровневый коэффициент для плотности.

f.factor <- cut(p.pipeline$CH_SONAR_2T, 5, labels = c('Very Low','Low', 'Medium', 'High', 'Very High'))

d.factor <- cut(p.pipeline$CH_DENSITY, 5, labels = c('Water', 'Very Sparce', 'Sparce', 'Dense', 'Very Dense'))

Я построил оба с помощью ggplot2, используя каждый фактор в качестве переменной заполнения:

qplot(per_diff, data = p.pipeline, geom = "histogram", binwidth = 1, xlim = c(-5, 15), fill = f.factor)

qplot(per_diff, data = p.pipeline, geom = "histogram", binwidth = 1, xlim = c(-5, 15), fill = d.factor)

теперь я хотел бы создать гистограмму с ggplot, которая позволяет мне видеть связь между расходом и плотностью (вода и очень низкая,очень разреженная и низкая, разреженная и низкая и т. д. для всех 25 возможных комбинаций). Я пробовал создавать новые факторы, связывающие d.фактор и f.фактор к рамке данных, связывая два фактора вместе и т. д. и никаких результатов, у вас есть идеи, как к этому подойти?

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

Спасибо за вашу помощь!

1 ответов


можно использовать fill=interaction(f.factor, d.factor). Комбинации, которые не отображаются в легенде, например " Low.Очень скудные " указывают на то, что нет наблюдения, принадлежащего к обеим этим категориям.

enter image description here

Если вы хотите, чтобы цвета соседних уровней выделялись больше, одна вещь, которую вы можете сделать, это генерировать цвета с rainbow, затем замените каждый другой цвет на противоположный на колесе.

col <- rainbow(length(levels(interaction(f.factor, d.factor))), v=.75, s=.5)
col.index <- ifelse(seq(col) %% 2, 
                    seq(col), 
                    (seq(ceiling(length(col)/2), length.out=length(col)) %% length(col)) + 1)
mixed <- col[col.index]
qplot(per_diff, data = p.pipeline, 
      geom = "histogram", binwidth = 1, xlim = c(-5, 15), 
      fill = interaction(f.factor, d.factor)) + scale_fill_manual(values=mixed)

enter image description here