ggplot不按组对直方图进行着色

ak7*_*ak7 1 r histogram ggplot2

我正在学习R,并且尝试创建一个包含三个组的直方图的复合直方图,这三个直方图由数据帧中“群集”列的值定义。

数据如下所示:

  TOTAL_Estimated_Collateral_value_sum cluster
1                           -0.17499342       1
2                           -0.86443362       1
3                            0.22211949       2
4                            0.01007717       1
5                           -0.77617685       2
6                           -1.43518056       1
7                           -0.19705983       1
8                           -0.39170108       1
9                           -0.94073376       1
10                           1.20525601       2

 TOTAL_Estimated_Collateral_value_sum    cluster     
 Min.   :-1.7697                      Min.   :1.000  
 1st Qu.:-0.7626                      1st Qu.:1.000  
 Median :-0.1322                      Median :1.000  
 Mean   : 0.0000                      Mean   :1.329  
 3rd Qu.: 0.8459                      3rd Qu.:2.000  
 Max.   : 1.8782                      Max.   :3.000  
> table(df_all$cluster)

    1     2     3 
24342  8565  1350
Run Code Online (Sandbox Code Playgroud)

我使用的代码如下:

ggplot(df_all, aes(x=TOTAL_Estimated_Collateral_value_sum, color=cluster)) +
  geom_histogram(alpha = 0.7, position="dodge")
Run Code Online (Sandbox Code Playgroud)

我得到的图像如下:

直方图

如您所见,观察结果并没有像我期望的那样被群集的值所着色。

您能否向我解释为什么会这样,我该怎么做才能修复我的代码并获得预期的输出?

ulf*_*der 5

您需要映射clusterfill,而不是colorcluster如果尚未映射,则需要成为一个因素。因此,请尝试:

ggplot(df_all, aes(x=TOTAL_Estimated_Collateral_value_sum, fill=cluster)) +
  geom_histogram(alpha = 0.7, position="dodge")
Run Code Online (Sandbox Code Playgroud)

或者,如果cluster不是一个因素:

ggplot(df_all, aes(x=TOTAL_Estimated_Collateral_value_sum, fill=as.factor(cluster))) +
  geom_histogram(alpha = 0.7, position="dodge")
Run Code Online (Sandbox Code Playgroud)