我已经寻找这个问题的答案很长一段时间了,但我一直没有找到答案。
问题是:我有一个包含以下变量的data frame:flow rate 1 (CH_SONAR)、flow rate 2 (CH_SONAR_2T)、density (CH_DENSITY)和两个flow rate之间的百分比差(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'))我使用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.factor和f.factor绑定到数据框架,将这两个因子绑定在一起,等等,但都没有结果,你们知道怎么做吗?
我已经尝试包含我生成的直方图,但我不认为我有足够的声誉来做这件事。
谢谢你的帮助!
发布于 2013-04-03 04:55:38
您可以使用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)

https://stackoverflow.com/questions/15774017
复制相似问题