ggplot:错误:美学必须是长度1或与数据相同(10):x, y,组。

时间:2020-12-26 19:17:37

I have a small dataset and I want to plot it with a line graph:

我有一个小的数据集我想用一个线形图来绘图:

 > Gain
     quantile Positives Total_Examples Positive_Prevalence     Lift Cumsum_Positives
 1:     (0, ]         1              1                   1 1.428571        0.1428571
 2: (1.9,2.8]         1              1                   1 1.428571        0.2857143
 3: (2.8,3.7]         1              1                   1 1.428571        0.4285714
 4: (3.7,4.6]         1              1                   1 1.428571        0.5714286
 5: (4.6,5.5]         1              1                   1 1.428571        0.7142857
 6: (5.5,6.4]         1              1                   1 1.428571        0.8571429
 7: (6.4,7.3]         1              1                   1 1.428571        1.0000000
 8: (7.3,8.2]         0              1                   0 0.000000        1.0000000
 9: (8.2,9.1]         0              1                   0 0.000000        1.0000000
10:  (9.1,10]         0              1                   0 0.000000        1.0000000

My code is the following:

我的代码如下:

    ggplot(Gain ) +
  geom_area(aes(x = quantile, y = Cumsum_Positives, group = 1), color = "red", fill = "red", alpha = 0.5, size = 2) +
  theme(axis.text.x = element_text(angle = 90, hjust = 1)) +
  geom_line(aes(x = quantile, y = seq(0, 1 , by = 0.1)  , group = 1), color = "blue", size = 2, alpha = 0.5) +
  scale_x_discrete(name ="% of the Data Set",
                   labels=c("0%", "10%","20%","30%", "40%", "50%", "60%","70%","80%", "90%", "100%"))

However, I get an error message :

然而,我得到一个错误信息:

  Error: Aesthetics must be either length 1 or the same as the data (10): x, y, group

I have read posts relating to this sort of error and usually the error implies that the variables called within the aesthetics are not present in the original dataframe. But this is not the case here.

我读过有关这类错误的文章,通常这个错误意味着在最初的dataframe中不存在被称为美学的变量。但这里不是这样。

I also tried this code, but it returns the same error message as well:

我也尝试了这个代码,但是它也返回了同样的错误信息:

Gain$index <- row.names(Gain)


ggplot(Gain ) +
  geom_area(aes(x = index, y = Cumsum_Positives, group = 1), color = "red", fill = "red", alpha = 0.5, size = 2) +
  theme(axis.text.x = element_text(angle = 90, hjust = 1)) +
  geom_line(aes(x = quantile, y = seq(0, 1 , by = 0.1)  , group = 1), color = "blue", size = 2, alpha = 0.5) +
  scale_x_discrete(name ="% of the Data Set",
                   labels=c("0%", "10%","20%","30%", "40%", "50%", "60%","70%","80%", "90%", "100%"))

Your advice will be appreciated.

我将感激你的忠告。

2 个解决方案

#1


1  

Your data is of length 10, while your y aesthetic in geom_line is of length 11.

您的数据长度为10,而您的y美学在地线长度为11。

seq(0, 1 , by = 0.1)
[1] 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0

Try seq(0,0.9,by=0.1) or seq(0.1,1,by=0.1)

尝试seq(0,0.9 = 0.9)或seq(0.1,1 = 0.1)

#2


0  

If your aim is to draw a line from (x = 0, y = 0) to (x = 0.9, y = 1), you could also replace geom_line with geom_abline:

如果你的目标是画一条线从(x = 0, y = 0)到(x = 0.9, y = 1),你也可以用“地_abline”来替换“地_line”:

geom_abline(slope = 1/9,
            intercept = -0.109,
            color = "blue",
            size = 2,
            alpha = 0.5) +

#1


1  

Your data is of length 10, while your y aesthetic in geom_line is of length 11.

您的数据长度为10,而您的y美学在地线长度为11。

seq(0, 1 , by = 0.1)
[1] 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0

Try seq(0,0.9,by=0.1) or seq(0.1,1,by=0.1)

尝试seq(0,0.9 = 0.9)或seq(0.1,1 = 0.1)

#2


0  

If your aim is to draw a line from (x = 0, y = 0) to (x = 0.9, y = 1), you could also replace geom_line with geom_abline:

如果你的目标是画一条线从(x = 0, y = 0)到(x = 0.9, y = 1),你也可以用“地_abline”来替换“地_line”:

geom_abline(slope = 1/9,
            intercept = -0.109,
            color = "blue",
            size = 2,
            alpha = 0.5) +