2因子直方图分析

amz*_*mzu 8 r ggplot2

我已经找了很长时间来回答这个问题,但我找不到答案.

问题在于:我有一个包含以下变量的数据框:流速1(CH_SONAR),流速2(CH_SONAR_2T),密度(CH_DENSITY)以及两种流速(per_diff)之间的百分比差异.我为流速1创建了一个5级因子,为密度创建了另一个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'))
Run Code Online (Sandbox Code Playgroud)

我使用每个因子作为填充变量使用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)
Run Code Online (Sandbox Code Playgroud)

现在我想用ggplot创建一个直方图,让我看到流速和密度之间的关系(水和非常低,非常低,低,Sparce和低等,对于所有25种可能的组合).我已经尝试创建新的因素,将d.factor和f.factor绑定到数据框,将两个因素绑定在一起等等没有结果,你们有任何想法如何解决这个问题吗?

我已经尝试过包括我制作的直方图,但我认为我没有足够的声誉去做.

感谢你的帮助!

Mat*_*rde 10

你可以用fill=interaction(f.factor, d.factor).未出现在图例中的组合,例如"Low.Very Sparce"表示没有属于这两个类别的观察.

在此输入图像描述

如果你想让相邻级别的颜色更突出,你可以做的一件事就是生成颜色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)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述