在 geom_histogram 中使用第三个变量作为填充美学
Posted
技术标签:
【中文标题】在 geom_histogram 中使用第三个变量作为填充美学【英文标题】:using a third variable as a fill aesthethic in geom_histogram 【发布时间】:2020-08-19 02:03:10 【问题描述】:我正在尝试通过使用连续变量填充条形来为直方图添加额外的维度。但是,以下语法给了我灰色条:
ggplot(mtcars, aes(x = mpg, fill = hp)) +
geom_histogram(aes(y = (..count..)/sum(..count..)), binwidth = 2) +
scale_y_continuous(label = function(x) paste0(round(x *100), "%")) +
labs(x = "miles per gallon",
y = "percentage of cars",
fill = "horsepower") +
theme(legend.position = c(.8, .8)) +
scale_fill_continuous()
使用带有因子转换变量的离散尺度有效:
ggplot(mtcars, aes(x = mpg, fill = factor(hp))) +
geom_histogram(aes(y = (..count..)/sum(..count..)), binwidth = 2) +
scale_y_continuous(label = function(x) paste0(round(x *100), "%")) +
labs(x = "miles per gallon",
y = "percentage of cars",
fill = "horsepower") +
theme(legend.position = c(.8, .8)) +
scale_fill_discrete()
我们可以清楚地看到这增加了信息。也就是说,HP 似乎与 MPG 成反比。
这正是我想要实现的目标。
谁能解释这种行为以及如何避免它?
【问题讨论】:
【参考方案1】:我对这个问题并不完全清楚,但该图看起来确实如此,因为当 HP 实际上是一个数字变量时,您将其视为一个因素。
通常直方图用于显示有关单个变量而不是两个变量的信息。在这种情况下,您对两个变量之间的关系感兴趣,因此另一个图可能更合适。您是否有不想使用散点图来显示这种关系的原因?散点图通常更适合比较两个数值变量。
我认为这更清楚地表明了同一件事(即 HP 和 MPG 呈负相关)。
ggplot(mtcars, aes(x = mpg, y = hp)) +
geom_point()
【讨论】:
以上是关于在 geom_histogram 中使用第三个变量作为填充美学的主要内容,如果未能解决你的问题,请参考以下文章
在直方图上叠加数据的一致方式(从 geom_histogram 中提取分箱数据?)